I have let's say 2 (but they'll become more in the future) fully decoupled systems: system A and system B.

Let's say every piece of information on each system has an informationID. There's nothing stopping the informationID to be the same on different systems. What univocally identifies a piece of information across all systems is a Source-informationID pair.

Let's say I need to export a piece of information from System A to system B. I then want to export the same piece of information from System B and re-import it into System A and I need to be able to recognize that's the same piece of information.

What's the best way of doing this in people's experience?

This is what I am thinking to do:

1. Setup a message bus between the
systems with message queues.
2. Setup endpoints for each system
that will monitor changes and
generate commands wrapped into
messages that will be pumped
into queues (for example
when a piece of information is
created/deleted/updated).
3. Assign ranks to the endpoints
relative to create/delete/update
commands in order no to rely on
system names but only on a general
hierarchy - so that each system
doesn't need to know about the
others.
4. Assign a treshold on
update/delete/create command to each
endpoint so that commands not
meeting the treshold requirement
will be filtered out and not
processed

This won't solve the fact that I still need to carry around originalSource+originalSourceID though.

Any help appreciated.