cancel
Showing results for 
Search instead for 
Did you mean: 

EOIO processing in SAP CI

Bhargavakrishna
Active Contributor
0 Kudos

Hello All,

We have a requirement to send the data to the target application in the order (EOIO/FIFO) that we get from the source application.

High level interface flow - SAP ECC ---> XI Sender --> SAP CI ---> HTTP Receiver --> APIM

Interface mode - Asynchronous

Requirement

The data is getting processed in the order when the target application is available. if we have intermittent connectivity issues when posting the messages to the target application the messages are not getting processed in the order that we get from the source system. once the application is up, the messages are getting picked randomly from the Data store and processed.

Anyone worked on similar usecase? Appreciate your support to achieve this requirement.

Thanks in advance.


Best Regards

Bhargava Krishna Talasila

Accepted Solutions (0)

Answers (3)

Answers (3)

naveen4796
Participant
0 Kudos

Hi bhargavakrishna.talasila,

Currently, CPI does not have native support for EOIO message processing. Although we expected this feature to be available in CPI to meet our client's requirements, it is not available at the moment.

To address this, we implemented an external system called Solace, which is a queuing system capable of handling exclusive (one consumer receives the message) and non-exclusive (multiple consumers receive the message) messaging. The Solace system acts as an intermediary to achieve the EOIO scenario. When an issue occurs, the interface calls the Solace API to stop the outbound transmission of the respective queue. Subsequently, a second interface is scheduled to run periodically to start the outbound transmission in Solace. - it's a bit complex though.

---- Positive news, SAP is aware that many companies and consultants are eagerly looking for the EOIO feature in CPI, based on the update SAP is planning to release the capability of EOIO message processing in CPI, possibly later this year or next year -----

I hope this information provides some insights which might be helpful for you.

Regards,

Naveen

Bhargavakrishna
Active Contributor
0 Kudos

Hi Naveen,

Thanks for your response.

yes, I also learned that there is no option to handle EOIO functionality in SAP CPI and sequential processing is not guaranteed by using data store or JMS queues.

Many customers are waiting for this functionality to be released by SAP. This limitation also effects the PO to CPI migration projects where the EOIO functionality was implemented in PO interfaces.

Best Regards

Bhargava Krishna Talasila

VijayKonam
Active Contributor
0 Kudos

You need to add JMS in between.

SAP ECC ---> XI Sender --> SAP CI --->JMS

JMS--->SAP CI ---> HTTP Receiver --> APIM

Bhargavakrishna
Active Contributor
0 Kudos

Hi Vinay,

Thanks for your response.

I have tried with both DataStore and JMS Queues. In both cases messages are not processing in the order.

iFlow1 - SAP ECC ---> HTTP Sender --> SAP CI --->JMS

To test the iFlow from postman, i have used HTTP connector instead of XI.

iFlow 2 - SAP ECC ---> XI Sender --> SAP CI --->JMS

Best Regards

Bhargava Krishna

VijayKonam
Active Contributor
0 Kudos

Did you select only to process one message at a time in the JMS sender adapter? You should not use parallel processing of messages here.

Bhargavakrishna
Active Contributor
0 Kudos

Hi Vijay,

yes, i have set Number of Concurrent Processes to "1".

Thanks

Bhargava Krishna

SivaPO
Participant
0 Kudos

Your design doesn't guarantee EOIO. You may have to orchestrate, as mentioned in the below thread.

https://answers.sap.com/questions/13547805/

Bhargavakrishna
Active Contributor
0 Kudos

Hi Siva,

Thanks for your response.

I have already checked the above link and tried implementing it, but stuck with issues. so looking for alternative approaches to achieve the requirement. i have tried using both Data store and JMS Queues still the messages are not getting processed in sequence. instead of select specified in the design mentioned in the above link, I have used GET operation, because i don't want to process all the messages once and it will have impact the sequencing.

Error Detailscom.sap.esb.datastore.MessageNotFoundException: No message found for id x-incfs-correlationid in store DS01

Best regards

Bhargava Krishna

SivaPO
Participant
0 Kudos

Hi Bhargav, The "Select" query is to fetch all the GUIDs and Timestamp details (not actual payload) from the DS2 datastore. These details can't be sequential as we need to do sorting on all the details at once in the given time period. These sorted details are needed to fetch the message payload "in order" in the second call.

And 'Get' is used in the second call to pick the payload sequentially in order (by making use of sorted values) from DS1 for EOIO.