views:

88

answers:

1

I have a situation where a single Oracle system is the data master for two seperate CRM Systems (PeopleSoft & Siebel). The Oracle system sends CRUD messages to BizTalk for customer data, inventory data, product info and product pricing. BizTalk formats and forwards the messages on to PeopelSoft & Siebel web service interfcaes for action. After initial synchronization of the data, the ongoing operation has created a situation where the data isn't accurate in the outlying Siebel and PeopleSoft systems despite successful delivery of the data (this is another converation about what these systems mean when they return a 'Success' to BizTalk).

What do other similar implementations do to reconcile system data in this distributed service-oriented approach? Do they run a periodic dump from all systems for comparison? Are there any other techniques or methodologies for spotting failed updates and ensuring synchronization?

Your thoughts and experiences are appreciated. Thanks!

Additional Info

So why do the systems get out of synch? Whenevr a destination syste acknolwedges to BizTalk it has received the message, it means many things. Sometimes an HTTP 200 means I've got it and put it in a staging table and I'll commit it in a bit. Sometimes this is sucessful, sometimes it is not for various data issues. Sometimes the HTTP 200 means... yes I have received and comitted the data. Using HTTP, there can be issues with ordere dlivery. All of tese problems could have been solved with a lot of architehtural planning up front. It was not done. There are no update/create timestamps to prevent un-ordered delivery from stepping on data. There is no full round trip acknowledgement of data commi from destinatin systems. All of this adds up to things getting out of synch.

+1  A: 

(sorry this is an answer and not a comment working my way up to 50 points).

Can the data be updated in the other systems or is it essentially read only?
Could you implement some further validation in the BizTalk layer to ensure that updates wouldn't fail because of data issues? Can you grab any sort of notification that the update failed from the destination systems which would allow you to compensate in the BizTalk layer?

FWIW in situations like this I have usually end up with a central data store that contains at least the datakeys from the 3 systems that acts as the new golden repository for the data, however this is usually to compensate for multiple update sources. Seems like we also usually operate some sort of manual error queue that users must maintain.

To your idea of batch reconciliation I have seen that be quite common to compensate for transactional errors especially in the financial services realm.

yieldvs
No problem. The whole point to using a message bus to send synch messages was to do away with the hassle of yet another system to keep the master records. Even if we used a single master approach, we are then stuck updating on a batch basis at night.The lack of answers seems to really suggest that all the pieces participating in the messaging arrangement have to honor their contracts and that's the real issue. In a large enterprise, it's difficult to get all of th eplayers to do that - especially when they have ,imited expertise in their enterprise app's service oriented interfaces
ChrisLoris