ediverse Explore the platform

Spotlight PEPPOL BIS Billing 3.0 The EU e-invoicing mandate is here — France Sept 2026, Belgium Jan 2026, Germany 2025.
OAGIS — Business Object Documents in canonical XML

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).

SectionContentsRole
ApplicationAreaSender, Receiver, CreationDateTime, BODID, optional SignatureEnvelope metadata: who sent it, when, message unique id, signature.
DataAreaThe 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 ProcessPurchaseOrder-OAGIS-10.xml
<?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.

VerbSemanticsExample
ProcessTransactional action requestProcessPurchaseOrder
AcknowledgeApplication-level acknowledgment (positive or negative)AcknowledgePurchaseOrder
ConfirmDetailed business confirmationConfirmBOD
GetRead requestGetItem, GetCustomerParty
ShowResponse to a GetShowItem, ShowPurchaseOrder
SyncMaster data broadcastSyncItem, SyncCustomerParty
NotifyAsynchronous event, no acknowledgment expectedNotifyShipment
UpdateTargeted update of an existing objectUpdateItem
CancelCancellation of a previously Processed BODCancelPurchaseOrder
LoadBulk loadLoadInventoryCount

Most-used BODs

The canonical BODs most frequently encountered in real ERP integration architectures:

BODDomainUse case
ProcessPurchaseOrderProcurementPurchase order issuance — canonical equivalent of EDIFACT ORDERS or X12 850.
AcknowledgePurchaseOrderProcurementApplication-level acknowledgment — equivalent to ORDRSP or X12 855.
ProcessInvoiceAccountingSupplier invoice — equivalent to INVOIC or X12 810.
ProcessReceiveDeliveryLogisticsReceipt notification on the inbound warehouse side.
SyncItemMasterMaster dataBroadcast of the item master between ERP and adjacent systems (PIM, MES, WMS).
SyncCustomerPartyMaster dataCustomer master broadcast (CRM → ERP).
SyncSupplierPartyMaster dataSupplier master broadcast.
GetCatalogProcurementSupplier catalogue request (pull mode).
ShowCatalogProcurementResponse to GetCatalog with the catalogue payload.
NotifyShipmentLogisticsDespatch advice push — equivalent to DESADV or X12 856 (ASN).
SyncProductionOrderManufacturingManufacturing order broadcast between ERP and MES.
ConfirmBODServiceGeneric 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

BODVerbUse case
ProcessPurchaseOrderProcessPurchase order — equivalent EDIFACT ORDERS / X12 850.
AcknowledgePurchaseOrderAcknowledgeOrder acknowledgment — equivalent ORDRSP / X12 855.
CancelPurchaseOrderCancelCancellation of a previously Processed PO.
GetPurchaseOrderGetRead request of an existing PO.
ConfirmBODConfirmGeneric business confirmation — equivalent CONTRL / X12 997.

Logistics

BODVerbUse case
ProcessShipmentProcessPush despatch advice — equivalent DESADV / X12 856.
AcknowledgeShipmentAcknowledgeApplication acknowledgment of a ProcessShipment.
ProcessReceivedDeliveryProcessInbound delivery receipt — equivalent RECADV / X12 861.
AcknowledgeReceivedDeliveryAcknowledgeApplication acknowledgment of a ProcessReceivedDelivery.

Catalogue

BODVerbUse case
GetCatalogGetPull supplier catalogue.
ShowCatalogShowResponse to GetCatalog with catalogue payload.
ProcessCatalogProcessPush catalogue update.
SyncCatalogSyncPublish-mode catalogue broadcast.

Item master data

BODVerbUse case
GetItemMasterGetRequest for a complete item record.
ShowItemMasterShowResponse to GetItemMaster.
SyncItemMasterSyncItem master broadcast (ERP → PIM, MES, WMS).

Party master data

BODVerbUse case
SyncCustomerPartySyncCustomer master broadcast (CRM → ERP).
SyncSupplierPartySyncSupplier master broadcast.
GetCustomerPartyGetCustomer record read request.
ShowCustomerPartyShowResponse to GetCustomerParty.

Sales and quote

BODVerbUse case
ProcessSalesOrderProcessSales order on the seller side — internal mirror of ProcessPurchaseOrder.
AcknowledgeSalesOrderAcknowledgeApplication acknowledgment of a sales order.
GetSalesOrderGetRequest for an existing sales order.
ProcessQuoteProcessQuote issuance — equivalent QUOTES / X12 843.
ProcessInvoiceProcessInvoice issuance — equivalent INVOIC / X12 810.

Finance and accounting

BODVerbUse case
ProcessPaymentProcessPayment recorded on the ERP side — equivalent PAYMUL / X12 820.
AcknowledgePaymentAcknowledgeApplication acknowledgment of a ProcessPayment.
ProcessRemittanceAdviceProcessRemittance advice — equivalent REMADV / X12 820.
GetLedgerGetAccounting ledger query.
ShowLedgerShowResponse to GetLedger with consolidated entries.
ProcessAccountingClassificationProcessAnalytical classification (cost centre, project) applied to a business object.
ProcessJournalEntryProcessJournal entry pushed toward the general ledger.
SyncJournalEntrySyncBroadcast of already-posted entries toward BI / consolidation.
ProcessDebitCreditNoteProcessCustomer debit or credit note — equivalent X12 812.
ProcessDunningInvoiceProcessDunning notice on unpaid invoice (AR collection).

Production and manufacturing

BODVerbUse case
ProcessProductionOrderProcessProduction order pushed from ERP to MES.
ProcessProductionPerformanceProcessActual production performance reported from MES to ERP.
SyncProductionDefinitionSyncProduction definition (routing, operations) broadcast from PLM.
SyncBOMSyncBill of Materials broadcast from PLM.
GetBOMGetCanonical read request on a BOM.

Warehouse (advanced logistics)

BODVerbUse case
SyncReceivedDeliverySyncPublish-mode broadcast of closed received-delivery state.
ProcessShipDeliveryProcessShip-delivery order ERP → WMS.
ProcessShipNoticeProcessCanonical despatch advice (ASN) — equivalent DESADV / X12 856.
ProcessInventoryMovementProcessInventory move (receipt, issue, transfer) reported from WMS.
SyncWarehouseSyncWarehouse reference data (sites, zones, locations) broadcast.

Human resources

BODVerbUse case
SyncWorkerSyncWorker master broadcast from HRIS (employee ID, contract, organisation).
SyncPersonSyncPerson identity (civil status, contact) independent of the worker role.
ProcessPayrollProcessConsolidated payroll run result payroll → finance.
ProcessBenefitProcessBenefit enrollment or update — equivalent X12 834.
SyncOrganizationalUnitSyncOrganisational 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.