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/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.