Sync SOAP to Async Target – Send messageID back to source as response message (Without BPM)
Tags: PI 7.31, noBPM, Sync-Aync Bridge using adapter modules, UDF to read Message ID, Set Message ID as the correlation ID.
So we recently received a requirement where the Source System will send a request in synchronous mode and expects a PI message ID back as part of the response. The Target system in this case is ECC and the message is posted as an IDOC.
As this is a high volume interface we started looking at ways to achieve the same without BPM.
Though in my case the target was IDOC, for POC purposes I used File Receiver Channel.
- Synchronous outbound interface – Containing Request and Response for the Source
- 1st Synchronous inbound interface – Containing IDOC as part of the request and any dummy message type for response. This dummy response will not be used
- 2nd Synchronous inbound interface – Here Request message will be the response message for SOAP (the one used in Synchronous outbound interface) and any dummy message type for response. This dummy response will not be used. You can use the same dummy MT used in the interface above.
- Map the request soap to IDOC structure
- Map the SOAP Request to SOAP Response structure and use a UDF here to populate the response field with Message ID.
- Map Sync outbound to 1st sync inbound interface. Populate the request mapping and leave the response mapping blank
- Map the Sync outbound to 2nd sync inbound interface. Populate the request mapping and leave the response mapping blank
- One sender SOAP channel in Best Effort Mode – This is to receive and send request from/to Web service consumer. This adapter uses the following modules:
- AF_Modules/RequestOnewayBean – To convert the sync request to Async
- AF_Modules/DynamicConfigurationBean – To set message ID as the correlation ID
- CallSapAdapter – Standard SOAP module
- AF_Modules/WaitResponseBean – Wait for the response message
- One File Receiver – This to send the request to the target system in asynchronous mode.
- One SOAP Receiver – This is to send a notification back to Sender SOAP. This adapter uses the following modules:
- AF_Modules/DynamicConfigurationBean – To set the correlation ID
- AF_Modules/NotifyResponseBean – To send a response back to the sender SOAP channel WaitResponseBean module
Note – The sole purpose of this adapter is to send a notification back to the Sender SOAP channel which is waiting for a response via WaitResponseBean and hence any receiver adapter type can be used here. Also note that the standard adapter module ‘CallSapAdapter’ has been removed from the module list.
ICO Configuration (Scenario works fine with Classic design as well):
Test Results via SOAP UI: