Infor ION BOD XML Shell Generator
This generator produces the outer structure of an Infor OAGIS Business Object Document (BOD) for ION: the verb-noun root element, ApplicationArea, the verb block with TenantID, AccountingEntityID, LocationID and ActionCriteria, and an empty noun. It also gives the Acknowledge and ConfirmBOD skeletons you need when you build the receiving side.
Fill in
Sync: Add, Replace or Delete. Process: Add or Change. Get: remove ActionCriteria.
1. BOD envelope
<?xml version="1.0" encoding="UTF-8"?>
<SyncItemMaster xmlns="http://schema.infor.com/InforOAGIS/2" releaseID="9.2" versionID="2.x.x">
<ApplicationArea>
<Sender>
<LogicalID>lid://infor.syteline.csi</LogicalID>
<ComponentID>erp</ComponentID>
<ConfirmationCode>OnError</ConfirmationCode>
</Sender>
<CreationDateTime>2026-10-22T09:30:00Z</CreationDateTime>
<BODID>infor-nid:infor:1:[Location ID (may be blank)]:ITEM-1001:1?ItemMaster&verb=Sync</BODID>
</ApplicationArea>
<DataArea>
<Sync>
<TenantID>infor</TenantID>
<AccountingEntityID>1</AccountingEntityID>
<LocationID>[Location ID (may be blank)]</LocationID>
<ActionCriteria>
<ActionExpression actionCode="Replace"/>
</ActionCriteria>
</Sync>
<ItemMaster>
<!-- Noun content goes here, in the order defined by the ItemMaster schema. -->
<!-- Identifiers follow the Infor pattern, for example: -->
<!-- <ID accountingEntity="1" lid="lid://infor.syteline.csi" variationID="1">ITEM-1001</ID> -->
</ItemMaster>
</DataArea>
</SyncItemMaster>2. Acknowledge reply to a Process (sent by the system of record)
<?xml version="1.0" encoding="UTF-8"?>
<AcknowledgeItemMaster xmlns="http://schema.infor.com/InforOAGIS/2" releaseID="9.2" versionID="2.x.x">
<ApplicationArea>
<Sender>
<LogicalID>lid://receiving.application</LogicalID>
<ComponentID>erp</ComponentID>
</Sender>
<CreationDateTime>2026-10-22T09:30:00Z</CreationDateTime>
</ApplicationArea>
<DataArea>
<Acknowledge>
<TenantID>infor</TenantID>
<OriginalApplicationArea>
<!-- Copy the ApplicationArea of the original Process BOD here -->
<Sender>
<LogicalID>lid://infor.syteline.csi</LogicalID>
<ComponentID>erp</ComponentID>
</Sender>
<CreationDateTime>2026-10-22T09:30:00Z</CreationDateTime>
<BODID>infor-nid:infor:1:[Location ID (may be blank)]:ITEM-1001:1?ItemMaster&verb=Process</BODID>
</OriginalApplicationArea>
<ResponseCriteria>
<ResponseExpression actionCode="Accepted"/>
</ResponseCriteria>
</Acknowledge>
<ItemMaster>
<!-- Created or changed object, including the Document ID assigned by the system of record -->
</ItemMaster>
</DataArea>
</AcknowledgeItemMaster>3. ConfirmBOD skeleton (error on an inbound BOD, handled by ION)
<?xml version="1.0" encoding="UTF-8"?>
<ConfirmBOD xmlns="http://schema.infor.com/InforOAGIS/2" releaseID="9.2">
<ApplicationArea>
<Sender>
<LogicalID>lid://receiving.application</LogicalID>
<ComponentID>erp</ComponentID>
</Sender>
<CreationDateTime>2026-10-22T09:30:00Z</CreationDateTime>
</ApplicationArea>
<DataArea>
<Confirm>
<TenantID>infor</TenantID>
<OriginalApplicationArea>
<!-- ApplicationArea of the BOD that failed -->
<Sender>
<LogicalID>lid://infor.syteline.csi</LogicalID>
</Sender>
<CreationDateTime>2026-10-22T09:30:00Z</CreationDateTime>
<BODID>infor-nid:infor:1:[Location ID (may be blank)]:ITEM-1001:1?ItemMaster&verb=Sync</BODID>
</OriginalApplicationArea>
</Confirm>
<BOD>
<BODFailureMessage>
<ErrorProcessMessage>
<Description>Describe why the inbound BOD could not be processed</Description>
</ErrorProcessMessage>
</BODFailureMessage>
</BOD>
</DataArea>
</ConfirmBOD>This is an envelope only. Validate the finished document against the noun's XSD (Infor OAGIS schemas, or the noun definition in ION Desk / the Data Catalog) and copy releaseID and versionID from that schema. The logical ID must match the connection point that sends the document. The BODID follows the infor-nid pattern seen in Infor samples; any value unique per message is accepted by most receivers, but follow your application's convention. Check element order in ConfirmBOD against ConfirmBOD.xsd for your schema version.
Get your BOD validated
Send us a sample BOD and the noun schema version and we will check structure, identifiers and routing before you activate the data flow.
Optional. The tool and every export work without this. No spam.
How a BOD is built
Infor's ION development guide describes a BOD as an XML document with two parts. The ApplicationArea carries what the infrastructure needs to move the message: Sender (LogicalID, ComponentID, optional ConfirmationCode), CreationDateTime and BODID. The DataArea carries the verb element (Sync, Process, Get and so on) followed by one noun instance, or several in a Show. The root element name joins verb and noun, for example SyncItemMaster, in the namespace http://schema.infor.com/InforOAGIS/2. Infor puts TenantID, AccountingEntityID and LocationID inside the verb element, and the action code in ActionCriteria/ActionExpression/@actionCode.
- Sync: from the system of record to anyone interested; actions Add, Replace, Delete (not Change)
- Process: request to the system of record; actions Add or Change; reply is Acknowledge
- Get: request for data; reply is Show; no action codes
- ConfirmBOD: sent when processing an inbound BOD fails; handled inside ION
Choosing verb and action code
If your application owns the data, publish Sync with Replace carrying the complete object; Infor recommends against Change because receivers then only see changed properties. Use Delete with Sync only for tenant-level master data. If you are asking another system to create something, send Process with Add and leave the Document ID empty, since the system of record assigns it and returns it in the Acknowledge. For Process with Change, include Document ID and Variation ID. Acknowledge action codes are Accepted, Modified or Rejected. Infor does not use Delete in Process BODs. Get carries a Document ID for one object or an expression for a selection.
Worked example
A SyteLine site publishing an item to a planning tool picks verb Sync, noun ItemMaster, logical ID lid://infor.syteline.csi, tenant infor, accounting entity 1 and action Replace. The generator outputs SyncItemMaster with the sender block, a BODID of infor-nid:infor:1::ITEM-1001:1?ItemMaster&verb=Sync (the ampersand is escaped in XML), and an empty ItemMaster where the item fields go. Fill the noun from the ItemMaster schema, then drop the file into a test connection point and check it in ION OneView before switching the data flow on.
Common mistakes
Putting the noun inside the verb element: noun and verb are siblings in DataArea. Leaving a raw ampersand in BODID, which makes the XML invalid. Using a logical ID that does not match the connection point, so ION rejects or misroutes the message. Sending Change when the receiver expects full Replace documents. Expecting a ConfirmBOD to reach the sending application: Infor states it is always handled inside ION, so error handling for Process requests must use an Acknowledge with Rejected and a reason code. Copying versionID from another noun instead of the schema you validate against.
Frequently Asked Questions
What is ION format?
ION's native message format is the BOD: XML based on Infor OAGIS, with an ApplicationArea and DataArea. ION also moves JSON, delimited and other documents through file, API and network connection points, but Infor applications integrate mainly with BODs.
Where is the Infor ION development guide?
Infor publishes the ION Development Guide on docs.infor.com in the Infor OS library, with on-premises and cloud editions. Its BOD chapters cover verbs, action codes, Sync publishing, Process and Acknowledge, Get and Show, ConfirmBOD and the inbox and outbox tables.
Which verbs pair with which reply?
Process is answered by Acknowledge, Get by Show. Sync has no business reply; if the receiver cannot process an inbound BOD, it sends a ConfirmBOD, which ION handles. ConfirmationCode OnError in the sender block asks for that confirmation only on failure.
Can I use this for an Infor ION file template?
Yes as a starting point: a file connection point can pick up BOD XML files from a folder, so a shell like this is often how teams build test files. Validate each file against the noun schema first.
If you want an assistant that explains failed BODs from ION OneView in plain English, running on your own servers, we can build it.
Related Tools
Infor ION BOD Verbs and Nouns Reference for M3
Look up what each ION BOD verb does, common nouns used with M3, and key ION components in plain language.
Developer ToolsInfor ION Connection Point Types Reference (On-Premises and Cloud)
Compare ION connection point types by edition, how messages move, document types supported, Enterprise Connector need and typical use.
Developer ToolsInfor ION API Gateway OAuth Token Request Generator (.ionapi)
Turn the values in a downloaded .ionapi file into code that requests a token from the Infor authorization server, calls the ION API Gateway and revokes the token.
Developer ToolsInfor ION On-Premises Grid and Connector Health Checklist
A periodic health check for ION running on the Infor Grid on premises: grid, ION services, monitoring, security and recovery readiness.
More Developer Tools tools
See all- Infor OS ION API and API Flow Payload and Timeout Calculator
- Infor Data Lake Compass SQL API Request Generator
- SAP Sales Order ABAP SELECT Generator (VBAK, VBAP, VBFA)
- SAP Sales Order Create BAPI ABAP Generator (BAPI_SALESORDER_CREATEFROMDAT2)
- SAP ABAP Open Items SELECT Generator
- SAP ACDOCA SQL Query Generator
- SAP QM Inspection Lot ABAP SELECT Generator
- SAP Quality Notification Pareto SQL Query Generator
- SAP QM Usage Decision BAPI Skeleton
Keep exploring
Free tools
- SyteLine ION Outbound BOD ReferenceEvery outbound BOD SyteLine/CSI generates for ION, with verb, noun, the Infor applications Infor lists as receivers and the business area.
- SyteLine ION BOD Integration Go-Live ChecklistSetup, scope, testing, cutover and hypercare checks for BOD based integrations between SyteLine or CSI 10 on-prem and Infor ION.
- Infor LN Inbound Process.SalesOrder BOD XML TemplateGenerate an OAGIS ProcessSalesOrder BOD skeleton with ApplicationArea, ActionCriteria, a sales order header and order lines for testing LN inbound orders.
ERP fixes and how-tos
- Infor LN Inbound BOD Mapping and DescriptionsWhat a BOD is, the full form, how Infor LN receives inbound BODs through ION, how integration document types and mapping work, and how to read the fields.
- How to publish a BOD from Infor LN to Infor IONEnable BOD publish on an Infor LN table, connect it to your ION connection point, and build the document flow in ION Desk so other systems receive the data.
- Infor LN and M3 BOD Documentation: Definitions, Mapping and Tracing in IONWhere to find BOD definitions for Infor LN and M3, how outbound BOD mapping works, what the M3 BOD processor does, and how to trace a BOD through ION.
Runs with your ERP
- XEDI EDI Integration with Infor LN (ION BODs)How XEDI translates X12 and EDIFACT into Infor BODs routed through ION for Infor LN, plus SyteLine and M3. Setup steps, data flows, pitfalls and FAQ.
- SPS Commerce Fulfillment with Infor SyteLine: EDI orders, ASNs and invoices over IONHow SPS Commerce Fulfillment exchanges orders, ASNs and invoices with Infor SyteLine using ION BOD XML. Also covers LN, M3 and VISUAL, with setup and pitfalls.
- Infor WMS with Infor SyteLine: using an external warehouse applicationHow Infor WMS integrates with SyteLine as an external warehouse application over ION BODs, what moves between them, setup steps, pitfalls and simpler options.
Guides
- Infor ION BOD Message Processing GuideMaster Infor ION BOD message processing with document flow configuration, XML mapping, transformation rules, and error handling for CloudSuite integrations.
- Infor ION Connect: Integration Configuration GuideConfigure Infor ION Connect integrations. BOD mapping, connection points, workflow automation, and troubleshooting common integration failures.
- SyteLine ION API Integration: The Complete GuideStep-by-step SyteLine ION API integration guide: API gateway setup, OAuth 2.0 tokens, BODs vs IDO endpoints, and secure on-prem to cloud connections.
AI on your ERP
- AI Agents Over Infor ION API, BODs, and the Infor Data LakeBuild AI agents on Infor ION API Gateway, BODs, and Data Lake, alongside or instead of Infor's own GenAI features, with your choice of model and hosting.
- AI for Infor LN: Sessions, BODs, and Engineer-to-Order WorkAdd grounded AI to Infor LN 10.x or CloudSuite: natural-language answers over sessions and BODs, agents for project and engineer-to-order work, on-prem options.