1 Reply Latest reply on Aug 6, 2013 8:08 PM by shantanu_roy

    Account Management Event Concurrent events


      Hi Experts,


      We are using AIA 11.1 O2C PIP @SOA ps4.


      We are facing an issue in Account Management flow where the Siebel event are sent to AIA, AIA aggregator puts them to a DB table. Which is further dequeued using a DB adaptor and inserted to BRM at a high level.


      I noticed that the some times concurrent records for the same account are picked up by the DB adaptor, which calls a SyncAccountSiebelReqABCSImpl(ootb),

      this creates cross reference entries for various entities.


      Now as this SyncAccountSiebelReqABCSImpl is invoked multiple times for the same account, during XREF calls, XREF is not able to detect concurrent threads while giving response for lookupXRef calls.


      lets say, thread (t1) and thread (t2) both do a lookup at the same time and both do not see the data in XREF.


      Hence both go for populate one thread succeeds and other fails for Unique constraint.


      Functionally this seems fine as the data is synced between SBL and BRM. But its resulting in failure trace for one thread.

      This is ootb flow hence I am looking for best practice around it. How this can be resolved?


      Any pointers are truly appreciated.




        • 1. Re: Account Management Event Concurrent events

          Hi Jiten,


          I have worked on Siebel CRM O2C PIP and we had a similar issue in our implementation. In Account Sync from Siebel to EBS for an account in Siebel multiple accounts were getting created in EBS.

          The flow was like this. The create or update event comes to the SiebelAggregratorConsumer which in turn calls SyncAccountSiebelReqABCSImpl. The default re-sequencer option was set as 'Standard'. In this mode more than a sigle thread might try to update the same account at the same time. For update events there is no issue but for create events it might create duplicate data. In our case multiple create events were invoked from Siebel which were creating multiple threads of composite and each thread was creating a new account in EBS which is totally wrong. So we changed the resequencor type as FIFO and put the resequencor group as '$in.AiaAggregatedEntitiesCollection/top:AiaAggregatedEntitiesCollection/top:AiaAggregatedEntities[1]/top:entityId' which is nothing but the row_id of the account in Siebel. When the sequencer is made as FIFO then all the events on the resequencor group (row_id) will be treated as unique and will be processed serially. This will stop creating multiple accounts in EBS.