During my current work @ Satyam Netweaver Labs, I found out that the BPM‘s asynchronous send step proceeds with its next step irrespective of the Adapter’s successful processing of messages. This situation could be avoided using the asynchronous send step’s properties. This blog demonstrates the use of “transport level acknowledgements”, with the help of a use case.
We have an SAP application that keeps track of the Employee Details. It triggers an IDoc whenever changes are made to any of the Employee records. This data has to be transformed and made available in a Database table. A trigger is initiated and a Unique ID is generated in the DB table during this process. This Unique ID is fetched and used at a later stage in the BPM.
Fig 1.0 Transport Level Acknowledgements
In the normal execution, the BPM asynchronous send step sends the request to the adapter and continues with the next step irrespective of whether the adapter has successfully processed the request or not. This kind of implementation in BPM is fine when DB is running but the business sequence fails when the DB is down because it will be unable to retrieve the Unique ID (that has not yet been generated).
We have developed a solution to meet this business requirement where the send step uses a transport level acknowledgement. This makes the BPM wait until a successful transport level acknowledgement is received. On successful acknowledgement the BPM proceeds with the next step.