Envelope Wrapper
Le pattern racine de l'EDI : ce n'est pas le payload qui voyage, c'est l'enveloppe qui le porte.
Problème
Un message métier brut (ORDERS, INVOIC) ne porte pas l'identité de l'émetteur, du destinataire, le routage, l'horodatage, ni l'acknowledgement requis. Comment le rendre traçable et auditable sans modifier le payload ?
Forces
- Le payload doit pouvoir évoluer (D.96A → D.01B) sans casser le routage.
- Les middlewares intermédiaires doivent pouvoir router sans parser le payload.
- L'enveloppe doit porter des champs assez normalisés pour l'auditabilité (control reference, syntax version, hash).
- Le coût de parsing de l'enveloppe doit rester minimal.
Solution
Envelopper le payload dans une structure standardisée qui porte (1) identification émetteur/destinataire (GLN, DUNS, EIN), (2) routage et version syntactique, (3) signature/hash optionnels, (4) contrôle (control reference), (5) trailer arithmétique (segment count). En EDIFACT, c'est UNA/UNB/UNH...UNT/UNZ ; en X12, ISA/GS/ST...SE/GE/IEA ; en UBL, SBDH (Standard Business Document Header) ; en cXML, le DTD wrapper avec `<Request>` / `<Response>`.
Implémentation EDI
L'Envelope Wrapper est imposé par la grammaire des standards EDI eux-mêmes. La règle d'or : ne JAMAIS générer un payload `ORDERS` sans son enveloppe UNB/UNH ; un middleware générique le rejettera silencieusement. Les valideurs comme l'EDIFACT validator de ediverse.io vérifient à la fois la syntaxe payload ET la cohérence enveloppe ↔ payload (UNH02 doit matcher avec le segment ST et le directory utilisé).
Anti-patterns
- Payload nu pour 'simplifier' — premier middleware rencontré le rejette.
- Enveloppe avec partner identifiers maison (`SAP-001`) au lieu des standards (GLN/DUNS) — interop partenaires impossible.
- Mismatch entre control reference de l'enveloppe et celui du payload — l'acknowledgement ne peut pas être marié.
- Wrapper personnalisé custom — perte de l'auditabilité standard.
Patterns liés
- Format Indicator — déclaration de format dans l'enveloppe.
- Correlation Identifier — control reference de l'enveloppe.
- Message Translator — transcodage payload (souvent en gardant l'enveloppe).
- Acquittements — ACK arrimé à l'enveloppe.
Sources
- Hohpe G., Woolf B. — EIP, Envelope Wrapper (p. 330). www.enterpriseintegrationpatterns.com/patterns/messaging/EnvelopeWrapper.html
- UN/CEFACT — UN/EDIFACT syntax rules ISO 9735. unece.org/trade/uncefact/introducing-unedifact