OAGi — OAGIS and Business Object Documents
The de-facto canonical-model standard for ERP integration. OAGIS encodes business interactions as BODs combining a noun and a verb — ProcessPurchaseOrder, GetItem, SyncCustomerParty, ConfirmBOD.
What is OAGi and OAGIS?
OAGi is an open consortium founded in 1994 by North American ERP vendors and large end-users to solve the dominant problem of the era: point-to-point integration between heterogeneous systems (SAP, Oracle, JD Edwards, PeopleSoft, Baan…). Rather than writing one mapper per application pair, the idea was to publish a shared vocabulary: a normalised set of business objects and verbs so that every ERP could produce and consume canonical messages.
OAGi's flagship product is OAGIS — Open Applications Group Integration Specification. OAGIS defines two foundational building blocks: a library of nouns (business objects such as PurchaseOrder, Invoice, Item, CustomerParty, Shipment) and a set of verbs (canonical actions such as Process, Acknowledge, Confirm, Get, Show, Sync, Notify). Coupling a verb with a noun yields a BOD — Business Object Document, the fundamental exchange unit.
BOD architecture
Every OAGIS BOD follows the same binary structure: a technical envelope (the ApplicationArea) and a business payload (the DataArea).
| Section | Contents | Role |
|---|---|---|
| ApplicationArea | Sender, Receiver, CreationDateTime, BODID, optional Signature | Envelope metadata: who sent it, when, message unique id, signature. |
| DataArea | The verb (Process, Get, Sync…) followed by the noun(s) | The verb specifies the intent, the noun carries the business data. |
This decoupling lets the same Item be manipulated by any action:
GetItem (read), ShowItem (response),
SyncItem (master data push), ProcessItem (transactional
action), AcknowledgeItem (acknowledgment). The explicit verb + noun
coupling is the singular trait of OAGIS compared to more monolithic standards.
Anatomy of a ProcessPurchaseOrder
The ProcessPurchaseOrder BOD is the canonical equivalent of an EDI 850
or an ORDERS: a buyer issues a purchase order to a supplier. A condensed example in
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>22 mm ball bearing</Description>
</Item>
<Quantity unitCode="EA">240</Quantity>
<UnitPrice><Amount currencyID="EUR">8.40</Amount></UnitPrice>
</PurchaseOrderLine>
</PurchaseOrder>
</DataArea>
</ProcessPurchaseOrder>
The generic structure is visible at a glance: the ApplicationArea
identifies the sender (LogicalID, ComponentID) and stamps
the BOD with a UUID (BODID). The DataArea opens with the
verb Process and its ActionExpression (Add — create), then
the noun PurchaseOrder with its header (PurchaseOrderHeader)
and lines (PurchaseOrderLine).
The OAGIS verbs
OAGIS defines about ten primary verbs. Each one captures a precise business intent, and every canonical BOD is the combination of a verb and a noun.
| Verb | Semantics | Example |
|---|---|---|
| Process | Transactional action request | ProcessPurchaseOrder |
| Acknowledge | Application-level acknowledgment (positive or negative) | AcknowledgePurchaseOrder |
| Confirm | Detailed business confirmation | ConfirmBOD |
| Get | Read request | GetItem, GetCustomerParty |
| Show | Response to a Get | ShowItem, ShowPurchaseOrder |
| Sync | Master data broadcast | SyncItem, SyncCustomerParty |
| Notify | Asynchronous event, no acknowledgment expected | NotifyShipment |
| Update | Targeted update of an existing object | UpdateItem |
| Cancel | Cancellation of a previously Processed BOD | CancelPurchaseOrder |
| Load | Bulk load | LoadInventoryCount |
Most-used BODs
The canonical BODs most frequently encountered in real ERP integration architectures:
| BOD | Domain | Use case |
|---|---|---|
ProcessPurchaseOrder | Procurement | Purchase order issuance — canonical equivalent of EDIFACT ORDERS or X12 850. |
AcknowledgePurchaseOrder | Procurement | Application-level acknowledgment — equivalent to ORDRSP or X12 855. |
ProcessInvoice | Accounting | Supplier invoice — equivalent to INVOIC or X12 810. |
ProcessReceiveDelivery | Logistics | Receipt notification on the inbound warehouse side. |
SyncItemMaster | Master data | Broadcast of the item master between ERP and adjacent systems (PIM, MES, WMS). |
SyncCustomerParty | Master data | Customer master broadcast (CRM → ERP). |
SyncSupplierParty | Master data | Supplier master broadcast. |
GetCatalog | Procurement | Supplier catalogue request (pull mode). |
ShowCatalog | Procurement | Response to GetCatalog with the catalogue payload. |
NotifyShipment | Logistics | Despatch advice push — equivalent to DESADV or X12 856 (ASN). |
SyncProductionOrder | Manufacturing | Manufacturing order broadcast between ERP and MES. |
ConfirmBOD | Service | Generic confirmation BOD used after any Process — the OAGIS equivalent of EDIFACT CONTRL or X12 997. |
Documented BOD catalogue
Detailed pages available on ediverse for 50 canonical BODs, grouped by functional domain (procurement, logistics, catalogue, master data, sales, finance, manufacturing, HR):
Procurement
| BOD | Verb | Use case |
|---|---|---|
| ProcessPurchaseOrder | Process | Purchase order — equivalent EDIFACT ORDERS / X12 850. |
| AcknowledgePurchaseOrder | Acknowledge | Order acknowledgment — equivalent ORDRSP / X12 855. |
| CancelPurchaseOrder | Cancel | Cancellation of a previously Processed PO. |
| GetPurchaseOrder | Get | Read request of an existing PO. |
| ConfirmBOD | Confirm | Generic business confirmation — equivalent CONTRL / X12 997. |
Logistics
| BOD | Verb | Use case |
|---|---|---|
| ProcessShipment | Process | Push despatch advice — equivalent DESADV / X12 856. |
| AcknowledgeShipment | Acknowledge | Application acknowledgment of a ProcessShipment. |
| ProcessReceivedDelivery | Process | Inbound delivery receipt — equivalent RECADV / X12 861. |
| AcknowledgeReceivedDelivery | Acknowledge | Application acknowledgment of a ProcessReceivedDelivery. |
Catalogue
| BOD | Verb | Use case |
|---|---|---|
| GetCatalog | Get | Pull supplier catalogue. |
| ShowCatalog | Show | Response to GetCatalog with catalogue payload. |
| ProcessCatalog | Process | Push catalogue update. |
| SyncCatalog | Sync | Publish-mode catalogue broadcast. |
Item master data
| BOD | Verb | Use case |
|---|---|---|
| GetItemMaster | Get | Request for a complete item record. |
| ShowItemMaster | Show | Response to GetItemMaster. |
| SyncItemMaster | Sync | Item master broadcast (ERP → PIM, MES, WMS). |
Party master data
| BOD | Verb | Use case |
|---|---|---|
| SyncCustomerParty | Sync | Customer master broadcast (CRM → ERP). |
| SyncSupplierParty | Sync | Supplier master broadcast. |
| GetCustomerParty | Get | Customer record read request. |
| ShowCustomerParty | Show | Response to GetCustomerParty. |
Sales and quote
| BOD | Verb | Use case |
|---|---|---|
| ProcessSalesOrder | Process | Sales order on the seller side — internal mirror of ProcessPurchaseOrder. |
| AcknowledgeSalesOrder | Acknowledge | Application acknowledgment of a sales order. |
| GetSalesOrder | Get | Request for an existing sales order. |
| ProcessQuote | Process | Quote issuance — equivalent QUOTES / X12 843. |
| ProcessInvoice | Process | Invoice issuance — equivalent INVOIC / X12 810. |
Finance and accounting
| BOD | Verb | Use case |
|---|---|---|
| ProcessPayment | Process | Payment recorded on the ERP side — equivalent PAYMUL / X12 820. |
| AcknowledgePayment | Acknowledge | Application acknowledgment of a ProcessPayment. |
| ProcessRemittanceAdvice | Process | Remittance advice — equivalent REMADV / X12 820. |
| GetLedger | Get | Accounting ledger query. |
| ShowLedger | Show | Response to GetLedger with consolidated entries. |
| ProcessAccountingClassification | Process | Analytical classification (cost centre, project) applied to a business object. |
| ProcessJournalEntry | Process | Journal entry pushed toward the general ledger. |
| SyncJournalEntry | Sync | Broadcast of already-posted entries toward BI / consolidation. |
| ProcessDebitCreditNote | Process | Customer debit or credit note — equivalent X12 812. |
| ProcessDunningInvoice | Process | Dunning notice on unpaid invoice (AR collection). |
Production and manufacturing
| BOD | Verb | Use case |
|---|---|---|
| ProcessProductionOrder | Process | Production order pushed from ERP to MES. |
| ProcessProductionPerformance | Process | Actual production performance reported from MES to ERP. |
| SyncProductionDefinition | Sync | Production definition (routing, operations) broadcast from PLM. |
| SyncBOM | Sync | Bill of Materials broadcast from PLM. |
| GetBOM | Get | Canonical read request on a BOM. |
Warehouse (advanced logistics)
| BOD | Verb | Use case |
|---|---|---|
| SyncReceivedDelivery | Sync | Publish-mode broadcast of closed received-delivery state. |
| ProcessShipDelivery | Process | Ship-delivery order ERP → WMS. |
| ProcessShipNotice | Process | Canonical despatch advice (ASN) — equivalent DESADV / X12 856. |
| ProcessInventoryMovement | Process | Inventory move (receipt, issue, transfer) reported from WMS. |
| SyncWarehouse | Sync | Warehouse reference data (sites, zones, locations) broadcast. |
Human resources
| BOD | Verb | Use case |
|---|---|---|
| SyncWorker | Sync | Worker master broadcast from HRIS (employee ID, contract, organisation). |
| SyncPerson | Sync | Person identity (civil status, contact) independent of the worker role. |
| ProcessPayroll | Process | Consolidated payroll run result payroll → finance. |
| ProcessBenefit | Process | Benefit enrollment or update — equivalent X12 834. |
| SyncOrganizationalUnit | Sync | Organisational structure (entities, divisions, departments) broadcast. |
OAGIS 9, 10 and beyond
OAGIS has evolved through successive generations.
- OAGIS 8 (2002-2007) — first stable XML format, strongly SOAP-oriented, still present in some legacy platforms.
- OAGIS 9 (2008-2014) — modularity overhaul, reusable Components added, clearer ApplicationArea / DataArea split. Very widespread across US aerospace and automotive in the 2010s.
- OAGIS 10 (since 2014, incremental releases 10.0 → 10.11+) — current foundation: further modularisation, canonical JSON serialisation alongside XSD, native REST integration, and the Score platform replacing the historical code generation tool.
- connectSpec — newer envelope being standardised inside OAGi: same BOD grammar as OAGIS 10, but REST-first formats and tooling. Versions 10.12 / 10.12.1 have been published on oagi.org.
Use case: canonical ERP model
The flagship use case for OAGIS is the canonical integration model (canonical data model). In an architecture where multiple ERPs, MES, WMS and PIMs need to interconnect, rather than writing N × (N − 1) bilateral mappers, you define a single canonical format in the middle — OAGIS — and every system publishes and consumes through that pivot. The number of mappers drops to N, and each new system added to the ecosystem only costs one extra mapping.
OAGIS thus sits opposite traditional EDI (EDIFACT, X12), which is still focused on inter-company B2B exchange. OAGIS operates mostly inside an extended enterprise or an industrial group. Many integrators orchestrate both side by side: EDIFACT / X12 at the edge, OAGIS inside.
Further reading
- oagi.org — official website, free download of OAGIS 10.x specifications and connectSpec.
- Wikipedia — OAGIS (the page may 404 depending on renames — fall back to the OAGi category).
- EDIFACT on ediverse — compare equivalences ORDERS / ProcessPurchaseOrder, INVOIC / ProcessInvoice.
- UBL / PEPPOL on ediverse — another XML BOD family, centred on European public e-invoicing.