OAGi — OAGIS et Business Object Documents
Le standard de fait du modèle canonique d'intégration ERP. OAGIS encode les interactions métier comme des BODs combinant un nom et un verbe — ProcessPurchaseOrder, GetItem, SyncCustomerParty, ConfirmBOD.
Qu'est-ce que OAGi et OAGIS ?
OAGi est un consortium ouvert créé en 1994 par des éditeurs et utilisateurs d'ERP nord-américains pour résoudre le problème majeur de l'époque : l'intégration point-à-point entre systèmes hétérogènes (SAP, Oracle, JD Edwards, PeopleSoft, Baan…). Plutôt que d'écrire un mapper par couple d'applications, l'idée a été de publier un vocabulaire commun : un ensemble normalisé d'objets métier et de verbes qui permettrait à chaque ERP de produire et consommer des messages canoniques.
Le produit principal d'OAGi est OAGIS — Open Applications Group Integration Specification. OAGIS définit deux briques fondamentales : une bibliothèque de nouns (objets métier comme PurchaseOrder, Invoice, Item, CustomerParty, Shipment) et un ensemble de verbs (actions canoniques comme Process, Acknowledge, Confirm, Get, Show, Sync, Notify). Le couplage d'un verbe avec un nom donne un BOD — Business Object Document, qui est la maille fondamentale d'échange.
Architecture d'un BOD
Tout BOD OAGIS suit la même structure binaire : une partie d'enveloppe technique (l'ApplicationArea) et une partie de charge utile métier (la DataArea).
| Section | Contenu | Rôle |
|---|---|---|
| ApplicationArea | Sender, Receiver, CreationDateTime, BODID, Signature optionnelle | Métadonnées d'enveloppe : qui envoie, quand, identifiant unique du message, signature. |
| DataArea | Le verbe (Process, Get, Sync…) puis le ou les nouns | Le verbe précise l'intention, le noun porte les données métier. |
Cette double séparation permet à un même Item d'être manipulé par n'importe
quelle action : GetItem (lecture), ShowItem (réponse),
SyncItem (push de données maître), ProcessItem (action
transactionnelle), AcknowledgeItem (accusé). Le couplage explicite
verbe + noun fait la singularité d'OAGIS face à des standards plus monolithiques.
Anatomie d'un ProcessPurchaseOrder
Le BOD ProcessPurchaseOrder est l'équivalent canonique d'un EDI 850 ou
d'un ORDERS : un acheteur émet une commande d'achat vers un fournisseur. Voici
un exemple condensé en OAGIS 10 :
<?xml version="1.0" encoding="UTF-8"?>
<ProcessPurchaseOrder
xmlns="http://www.openapplications.org/oagis/10"
releaseID="10.11" versionID="10.11">
<ApplicationArea>
<Sender>
<LogicalID>ERP-CENTRAL-EU</LogicalID>
<ComponentID>PurchasingModule</ComponentID>
<ConfirmationCode>OnError</ConfirmationCode>
</Sender>
<CreationDateTime>2026-05-14T10:15:00Z</CreationDateTime>
<BODID>5a8f7d2e-2b15-4c1a-9e6f-acme-2026-0014</BODID>
</ApplicationArea>
<DataArea>
<Process>
<ActionCriteria>
<ActionExpression actionCode="Add"/>
</ActionCriteria>
</Process>
<PurchaseOrder>
<PurchaseOrderHeader>
<DocumentID><ID>PO-2026-000871</ID></DocumentID>
<DocumentDateTime>2026-05-14T10:00:00Z</DocumentDateTime>
<BuyerParty>
<PartyIDs><ID>4012345678901</ID></PartyIDs>
<Name>Acme Industries</Name>
</BuyerParty>
<SupplierParty>
<PartyIDs><ID>5790000123456</ID></PartyIDs>
<Name>Northern Components</Name>
</SupplierParty>
<RequestedDeliveryDateTime>2026-06-04T08:00:00Z</RequestedDeliveryDateTime>
</PurchaseOrderHeader>
<PurchaseOrderLine>
<LineNumber>1</LineNumber>
<Item>
<ItemIDs><ID>RBC-2200</ID></ItemIDs>
<Description>Roulement à billes 22 mm</Description>
</Item>
<Quantity unitCode="EA">240</Quantity>
<UnitPrice><Amount currencyID="EUR">8.40</Amount></UnitPrice>
</PurchaseOrderLine>
</PurchaseOrder>
</DataArea>
</ProcessPurchaseOrder>
On reconnaît la structure générique : l'ApplicationArea identifie
l'émetteur (LogicalID, ComponentID) et marque le BOD d'un
UUID (BODID). La DataArea commence par le verbe
Process avec son ActionExpression (ici Add — création), puis
le noun PurchaseOrder avec son en-tête (PurchaseOrderHeader)
et ses lignes (PurchaseOrderLine).
Les verbes OAGIS
OAGIS définit une dizaine de verbes principaux. Chacun documente une intention métier précise, et chaque BOD canonique combine un verbe et un noun.
| Verbe | Sémantique | Exemple |
|---|---|---|
| Process | Demande d'action transactionnelle | ProcessPurchaseOrder |
| Acknowledge | Accusé applicatif (positif ou négatif) | AcknowledgePurchaseOrder |
| Confirm | Confirmation métier détaillée | ConfirmBOD |
| Get | Requête de lecture | GetItem, GetCustomerParty |
| Show | Réponse à un Get | ShowItem, ShowPurchaseOrder |
| Sync | Diffusion de données maître | SyncItem, SyncCustomerParty |
| Notify | Événement asynchrone, sans attente d'accusé | NotifyShipment |
| Update | Mise à jour ciblée d'un objet existant | UpdateItem |
| Cancel | Annulation d'un BOD précédemment Processed | CancelPurchaseOrder |
| Load | Chargement en masse | LoadInventoryCount |
BODs les plus utilisés
Voici les BODs canoniques que l'on rencontre le plus souvent dans les architectures d'intégration ERP :
| BOD | Domaine | Cas d'usage |
|---|---|---|
ProcessPurchaseOrder | Achats | Émission de commande d'achat — équivalent canonique d'EDIFACT ORDERS ou X12 850. |
AcknowledgePurchaseOrder | Achats | Accusé applicatif de la commande — équivalent ORDRSP ou X12 855. |
ProcessInvoice | Comptabilité | Facture émise par le fournisseur — équivalent INVOIC ou X12 810. |
ProcessReceiveDelivery | Logistique | Avis de réception côté entrepôt destinataire. |
SyncItemMaster | Master Data | Diffusion du référentiel article entre ERP et systèmes adjacents (PIM, MES, WMS). |
SyncCustomerParty | Master Data | Diffusion du référentiel client (CRM → ERP). |
SyncSupplierParty | Master Data | Diffusion du référentiel fournisseur. |
GetCatalog | Achats | Requête de catalogue fournisseur (mode pull). |
ShowCatalog | Achats | Réponse à un GetCatalog avec le contenu du catalogue. |
NotifyShipment | Logistique | Avis d'expédition push — équivalent DESADV ou X12 856 (ASN). |
SyncProductionOrder | Production | Diffusion des ordres de fabrication entre ERP et MES. |
ConfirmBOD | Service | BOD générique de confirmation utilisé après n'importe quel Process — l'équivalent OAGIS du CONTRL EDIFACT ou du 997 X12. |
Catalogue des BODs documentés
Pages détaillées disponibles sur ediverse pour 50 BODs canoniques, regroupés par domaine fonctionnel (achats, logistique, catalogue, données maître, ventes, finance, production, RH) :
Achats
| BOD | Verbe | Cas d'usage |
|---|---|---|
| ProcessPurchaseOrder | Process | Commande d'achat — équivalent EDIFACT ORDERS / X12 850. |
| AcknowledgePurchaseOrder | Acknowledge | Accusé de commande — équivalent ORDRSP / X12 855. |
| CancelPurchaseOrder | Cancel | Annulation d'une PO précédemment Processed. |
| GetPurchaseOrder | Get | Requête de lecture d'une PO existante. |
| ConfirmBOD | Confirm | Confirmation métier générique — équivalent CONTRL / X12 997. |
Logistique
| BOD | Verbe | Cas d'usage |
|---|---|---|
| ProcessShipment | Process | Avis d'expédition push — équivalent DESADV / X12 856. |
| AcknowledgeShipment | Acknowledge | Accusé applicatif d'un ProcessShipment. |
| ProcessReceivedDelivery | Process | Avis de réception côté entrepôt — équivalent RECADV / X12 861. |
| AcknowledgeReceivedDelivery | Acknowledge | Accusé applicatif d'un ProcessReceivedDelivery. |
Catalogue
| BOD | Verbe | Cas d'usage |
|---|---|---|
| GetCatalog | Get | Requête catalogue fournisseur (pull). |
| ShowCatalog | Show | Réponse à GetCatalog avec contenu du catalogue. |
| ProcessCatalog | Process | Push d'une mise à jour catalogue. |
| SyncCatalog | Sync | Diffusion en publication du catalogue. |
Données maître — articles
| BOD | Verbe | Cas d'usage |
|---|---|---|
| GetItemMaster | Get | Requête de fiche article complète. |
| ShowItemMaster | Show | Réponse à GetItemMaster. |
| SyncItemMaster | Sync | Diffusion du référentiel article (ERP → PIM, MES, WMS). |
Données maître — tiers
| BOD | Verbe | Cas d'usage |
|---|---|---|
| SyncCustomerParty | Sync | Diffusion du référentiel client (CRM → ERP). |
| SyncSupplierParty | Sync | Diffusion du référentiel fournisseur. |
| GetCustomerParty | Get | Requête de fiche client. |
| ShowCustomerParty | Show | Réponse à GetCustomerParty. |
Ventes et devis
| BOD | Verbe | Cas d'usage |
|---|---|---|
| ProcessSalesOrder | Process | Commande de vente côté éditeur — miroir interne de ProcessPurchaseOrder. |
| AcknowledgeSalesOrder | Acknowledge | Accusé applicatif d'une commande de vente. |
| GetSalesOrder | Get | Requête de commande de vente existante. |
| ProcessQuote | Process | Émission de devis — équivalent QUOTES / X12 843. |
| ProcessInvoice | Process | Facture émise — équivalent INVOIC / X12 810. |
Finance et comptabilité
| BOD | Verbe | Cas d'usage |
|---|---|---|
| ProcessPayment | Process | Paiement enregistré côté ERP — équivalent PAYMUL / X12 820. |
| AcknowledgePayment | Acknowledge | Accusé applicatif d'un ProcessPayment. |
| ProcessRemittanceAdvice | Process | Avis de paiement — équivalent REMADV / X12 820. |
| GetLedger | Get | Requête grand livre comptable. |
| ShowLedger | Show | Réponse à GetLedger avec écritures consolidées. |
| ProcessAccountingClassification | Process | Classification analytique (centre de coût, projet) appliquée à un objet métier. |
| ProcessJournalEntry | Process | Écriture comptable poussée vers le grand livre. |
| SyncJournalEntry | Sync | Diffusion d'écritures déjà postées vers BI / consolidation. |
| ProcessDebitCreditNote | Process | Note de débit ou avoir client — équivalent X12 812. |
| ProcessDunningInvoice | Process | Relance sur facture impayée (chaîne AR). |
Production et fabrication
| BOD | Verbe | Cas d'usage |
|---|---|---|
| ProcessProductionOrder | Process | Ordre de fabrication poussé de l'ERP vers le MES. |
| ProcessProductionPerformance | Process | Performance réelle de production remontée du MES vers l'ERP. |
| SyncProductionDefinition | Sync | Définition technique de production (gamme, opérations) diffusée depuis le PLM. |
| SyncBOM | Sync | Nomenclature (Bill of Materials) diffusée depuis le PLM. |
| GetBOM | Get | Requête de lecture canonique sur une BOM. |
Entrepôt (logistique avancée)
| BOD | Verbe | Cas d'usage |
|---|---|---|
| SyncReceivedDelivery | Sync | Diffusion en publication de l'état des réceptions clôturées. |
| ProcessShipDelivery | Process | Ordre d'expédition de livraison ERP → WMS. |
| ProcessShipNotice | Process | Avis d'expédition (ASN) canonique — équivalent DESADV / X12 856. |
| ProcessInventoryMovement | Process | Mouvement de stock (réception, sortie, transfert) remonté du WMS. |
| SyncWarehouse | Sync | Référentiel entrepôt (sites, zones, emplacements) diffusé. |
Ressources humaines
| BOD | Verbe | Cas d'usage |
|---|---|---|
| SyncWorker | Sync | Référentiel salarié diffusé depuis le SIRH (matricule, contrat, organisation). |
| SyncPerson | Sync | Identité personne (état civil, contact) indépendante du rôle salarié. |
| ProcessPayroll | Process | Résultat consolidé d'un run de paie payroll → finance. |
| ProcessBenefit | Process | Adhésion ou mise à jour d'avantage salarié — équivalent X12 834. |
| SyncOrganizationalUnit | Sync | Structure organisationnelle (entités, divisions, départements) diffusée. |
OAGIS 9, 10 et après
OAGIS s'est construit par grandes générations successives.
- OAGIS 8 (2002-2007) — premier format XML stable, fortement orienté SOAP, encore présent dans certaines plateformes legacy.
- OAGIS 9 (2008-2014) — refonte autour de la modularité, ajout des Components réutilisables et clarification de la dichotomie ApplicationArea / DataArea. Très répandu dans l'aéronautique et l'auto US dans les années 2010.
- OAGIS 10 (depuis 2014, releases incrémentales 10.0 → 10.11+) — base actuelle : encore plus modulaire, sérialisation JSON canonique en plus du XSD, intégration native avec REST, et adossement à la plateforme Score qui remplace progressivement l'outil de génération historique.
- connectSpec — surcouche en cours de standardisation au sein d'OAGi : même grammaire BOD que OAGIS 10, mais formats et outils REST-first, dont les versions 10.12 / 10.12.1 publiées récemment sur oagi.org.
Cas d'usage : modèle canonique ERP
Le cas d'usage emblématique d'OAGIS est le modèle canonique d'intégration (canonical data model). Dans une architecture où plusieurs ERP, MES, WMS, PIM doivent s'interconnecter, plutôt qu'écrire N × (N − 1) mappers binaires, on définit un format canonique unique au centre — OAGIS — et chaque système publie / consomme via ce pivot. Le nombre de mappers passe à N, et chaque nouveau système ajouté à l'écosystème ne coûte qu'un seul mapping additionnel.
OAGIS s'oppose ici à l'EDI traditionnel (EDIFACT, X12), qui reste centré sur l'échange B2B inter-entreprises, alors qu'OAGIS opère majoritairement à l'intérieur d'une entreprise étendue ou d'un groupe industriel. Beaucoup d'intégrateurs orchestrent les deux conjointement : traduction EDIFACT / X12 en bordure, vie interne en OAGIS.
Pour aller plus loin
- oagi.org — site officiel, téléchargement libre des spécifications OAGIS 10.x et connectSpec.
- Wikipedia — OAGIS (l'article peut renvoyer 404 selon les renommages, retomber sur la catégorie OAGi).
- EDIFACT sur ediverse — comparer les équivalences ORDERS / ProcessPurchaseOrder, INVOIC / ProcessInvoice.
- UBL / PEPPOL sur ediverse — autre famille de BODs XML, axée e-invoicing public européen.