Verbs

An important concept related to the BODs is the system of record. This is the application instance that owns a business object. A system of record can own all instances of a noun or it can own part of the instances.

Being the system of record or not determines the verbs to be used:

  • Sync is sent from the system of record.
  • Process, Get, Load or Update are requests that are sent to the system of record. For Process, the system of record will send an Acknowledge in reply. For Get, the system of record will send Show in reply.
  • Confirm is a special type of verb. It is used for noun ‘BOD’, and it is sent when an error occurs in processing inbound BOD.

This table shows which verb to use for a specific goal:

GoalVerb(s) to use
Publish changes on data owned by my applicationSync
Request changes on data owned by another application Process/Acknowledge
Retrieve data owned by another applicationGet/Show
Initial load, recovery Get/Show (*)
Report an exception Confirm

(*) This is the preferred approach. In theory you can use Show without Get, but then the sender must know the address (logical ID) of the receiver. An alternative is to use Sync. Especially when adding a new system of record. But when using this verb, event monitors or activation policies can be triggered. This is what you do not want if Sync messages were already published before for the same data set. Because the messaging is asynchronous, the application that sends the process must have a way of handling the pending state until it receives the Acknowledge. For example, when requesting creation of a new item, the requesting application cannot use the item as if it were there already. In the meantime the application can use a specific status for the item such as ‘Pending’. Do not use other verbs. In addition to the listed verbs, ION supports using the Load and Update verbs. These are meant for integrations where data is loaded into an application where the application must avoid refusing the data. For example in an EDI scenario.