Configuration dynors-notify — librairie vs applications¶
Choisir sa ligne — contrôle du 15 octobre 2026
La stable 2.0.0 est publiée pour Boot 4.1.1 / Spring 7.0.9, Java 17 minimum. Les sections historiques 1.x ci-dessous ne suffisent pas à son adoption. Voir versions, compatibilité et causes des correctifs, le contrat 2, la migration et la configuration 2.
En 2.0.0, utiliser le reçu détaillé de submit : PROVIDER_ACCEPTED n'est pas DELIVERED, UNKNOWN exige une réconciliation avant reprise, SIMULATED ne permet jamais de marquer un message livré. L'ancien send est déprécié et perd de l'information. Le canal noop et sa classe sont retirés ; PUSH sans provider retourne FAILED/NO_PROVIDER. Pas de fallback historique, de retry implicite ou de qualification fournisseur réelle déduite des tests SDK.
dynors-notify (com.dynors:dynors-notify, dépôt dynors-extensions) est une bibliothèque embarquée dans chaque application Spring Boot qui déclare la dépendance. Il n’existe pas de « serveur NOTIFY » unique : chaque app configure son fournisseur d’envoi, ses secrets et ses profils (dev, recette, prod).
Release stable vérifiée
com.dynors:dynors-notify:1.0.6 est publiée depuis le 2026-09-06 sur le registry GitLab
76017499 (30 tests, POM/JAR sans SNAPSHOT, SHA-256 local/distant identique). Cette version
corrige la sélection EMAIL avec les identifiants smtp, brevo, resend, sendgrid et
mailgun. E-mail et SMS ont des providers réels ; l'ancien NoOp n'était pas un
provider push routable. Il est retiré en 2.0.0 ; ne pas le traiter comme une preuve d'envoi.
Le 2026-09-07, AUTH et DOSALI ont résolu 1.0.6 depuis le registry Extensions avec Maven Local
vide ; le smoke DOSALI → SLY → AUTH → SMTP/MailHog est vert.
Source et dépôt principal
Contenu aligné sur le dépôt agrégé dynors : docs/CONFIGURATION_DYNORS_NOTIFY.md.
Résolution Maven / registry : Versions et dépendances (core) ; accès token : CONFIGURATION_ACCES_DEPENDANCES.md.
SLY (SelebeYone) et applications tierces¶
dynors.interapp.gateway-url(SLY) etInterAppCallService= appels entre apps DYNORS. La configdynors.notify.*cible les fournisseurs (SMTP, Brevo, Resend…), sans signature de transit SLY sur ces envois.- App tierce : assouplir avec
stub,base-urlsi proxy, sans imposer le contrat inter-app — voir le paragraphe homonyme dansCONFIGURATION_DYNORS_NOTIFY.md.
1. Rôles¶
| Couche | Responsabilité |
|---|---|
| dynors-notify | Contrat Java (NotificationService, NotificationRequest), auto-config Spring, implémentations SMTP, Brevo, Resend, SendGrid, Mailgun, SMS Orange, construction des payloads API (TransactionalEmailPayloads, pièces jointes EmailMetadataAttachments). |
| Chaque application | Dépendance Maven + entrée dans application.yml / variables d’environnement / Vault : choix du provider, clés API, SMTP, stub ou non, expéditeur par défaut. |
| Code métier | Contenu des messages, templateId / templateVars par cas d’usage, appels à NotificationService.send(...). |
Deux apps différentes peuvent donc utiliser Brevo et Resend avec des comptes, domaines et templates distincts.
2. Propriétés principales (dynors.notify.*)¶
Préfixe commun : dynors.notify.
| Clé | Rôle |
|---|---|
dynors.notify.email.provider |
smtp · brevo · resend · sendgrid · mailgun — un seul actif par app (bean conditionnel). |
dynors.notify.email.enabled |
Active le provider email (true en général si vous envoyez des mails). |
dynors.notify.email.stub |
true : pas d’appel réseau (logs uniquement) — pratique en dev sans secrets. |
dynors.notify.email.from |
Adresse expéditeur par défaut (souvent surchargée par le template côté Brevo/Resend). |
dynors.notify.email.brevo.api-key |
Clé API Brevo (préférer ${BREVO_API_KEY}). |
dynors.notify.email.brevo.base-url |
Défaut https://api.brevo.com/v3. |
dynors.notify.email.resend.api-key |
Clé Resend (${RESEND_API_KEY}). |
dynors.notify.email.mailgun.* |
Domaine, URL de base, clé — voir javadoc MailgunEmailProvider. |
dynors.notify.email.sendgrid.* |
Idem SendGrid. |
SMTP : en plus, configurer spring.mail.* (host, port, username, password, TLS) — classique Spring Boot.
Les clés exactes et les javadoc sont dans les classes *EmailProvider sous le module notify dans dynors-extensions (packages/extensions/notify/.../providers/email/).
3. Secrets et environnements¶
- Ne pas commiter les clés dans Git : utiliser variables d’environnement, Vault (stratégie DYNORS), ou fichiers locaux ignorés (
.env). - En CI/CD : variables masquées dans GitLab / pipeline ; le
GITLAB_TOKENsert au registry Maven (read_registry), pas aux APIs Brevo/Resend (tokens distincts).
4. Templates distants vs HTML inline¶
Définis sur NotificationRequest : templateId, templateVars.
- Brevo :
templateIddoit être l’ID numérique du template dans Brevo (chaîne"42"). Payload JSON :templateId,params←templateVars, sanshtmlContent. - Resend :
templateId= id ou alias du template (ex.order-confirmation). Payload :template: { id, variables }, sanshtml. - SMTP : pas de rendu de template distant ; seul le corps (
body) est envoyé. Les champstemplateId/templateVarsne sont pas interprétés par le serveur SMTP (éventuellement enrichissement métier avant l’appel à NOTIFY).
Voir TransactionalEmailPayloads et les tests TransactionalEmailPayloadsTest dans le module notify (repo dynors-extensions).
5. Pièces jointes¶
Métadonnées standardisées : attachmentPdfBase64, attachmentFilename, attachmentContentType (voir EmailMetadataAttachments). Utilisées par exemple par FISCAL pour joindre un PDF de facture.
6. Politique métier et distinction events¶
- Relances client vs alertes admin : Politique notifications, relances et monitoring (dépôt dynors).
- dynors-notify vs dynors-events : NOTIFY vs events et finalisation FISCAL / extensions (dépôt dynors).
7. Références code¶
| Élément | Emplacement |
|---|---|
| README module | dynors-extensions packages/extensions/notify/README.md |
| Payloads Brevo / Resend | .../notify/email/TransactionalEmailPayloads.java |
| PJ depuis métadonnées | .../notify/email/EmailMetadataAttachments.java |
| Registry Maven | Projet GitLab 76017499 — Versions et dépendances |
Dernière mise à jour : 2026-09-07 — release stable dynors-notify:1.0.6 consommée par AUTH et DOSALI.