cancel
Showing results for 
Search instead for 
Did you mean: 

CPI IDoc processing EOIO

anthony_bateman3
Participant

I'm faced with a requirement to implement an EOIO queue for inbound IDocs from CPI to an R/3 system. I am experienced with PI/PO and know how to do it in that environment, but not with CPI. I haven't been able to find anything on the internet that explains how to do this.

Has anybody done this, or knows of a blog where this has been done? Ideally, I would like to route the IDocs to a bgRFC queue.

Hi Anthony,

We have tried to customise EOIO technique, generic, not specifically for sending IDOCS but if you wish you could give it a try.

It is currently working for us, however there are few performance level issues with tenant as we have to store the payloads. The performance issues are very specific to high-volume failures.

First Flow:

  1. As message arrives from Sender the message is stored in 2 data store instances.
    1. DS1 :: Stores GUID and Payload
    2. DS2 :: Stores GUID and Timestamp

Second Flow:

  1. A timer event will keep checking the DS2 datastore for entries.
  2. One the entries are read for that time those will be passed-on to a stylesheet mapping (XSLT) for sorting. (two level sorting is in consideration - current solution is available with only one sorting based on TimeStamp)
    1. Sorting on ObjectUnique ID
    2. Sorting on TimeStamp
  3. After sorting Chronologically (on GUID), another "get" call will be done on DS1 datastore to fetch the payload for processing.
  4. These will be done sequentially 1 by 1. (To achieve "Exactly Once In Order") .
  5. On successful sent to target system the entry from data store (DS1 and DS2) would be deleted.
  6. In case of failure the process fails and we leverage OOTB feature of DataStore. "The message doesn't get deleted till it is successfully deleted from Datastore" hence it is available for re-processing.

Let me know if you wish to see the sample iflow and I will try to send the template.

Regards,

Ash

lagupta1
Newcomer
0 Kudos
Do you have a detailed solution for this?
View Entire Topic
naveen4796
Explorer
0 Kudos

Hi anthony_bateman and Ashish,

Currently, CPI does not have native support for EOIO message processing.

Regarding the solution shared by Ashish, it should work as long as your tenant is running with only one worker/runtime node. However, if the number of runtime nodes for your tenant has increased, the interface will fetch messages from the Datastore in parallel with respect to the runtime nodes.

For example, if the tenant has 3 runtime nodes, then 3 messages from the Datastore will be picked and processed simultaneously. As a result, the sequence of messages cannot be guaranteed.

I'm curious to know if this question and solution are still relevant or if you have found any other workaround to achieve your goal.

Regards,

Naveen