If you are asking about synchronizing data between one source and another? Good luck. This has been a significant area of research for years, and to this day, it's mostly still application specific.
Software like SalesLogix would have a central database with a table like so:
site | key | name | address | phone | city | state | last_update
and each remote user would then have a different site code. When synchronization would occur based on the last_update fields, it would check the site and key to ensure against conflicts where two different remote users might accidently choose the same unique identifier for a record.
If you have something less complex, you could sculpt your data access layer to track transactions to the local database, and then replay them the next time you are connected. The problem here again is consistency.
If I change objectA.PropertyB to "test1", and you change it to "test3?" which one of us is more correct? How do you do collision detection?
I'm afraid I've yet to see of a single out-of-the-box solution to this problem that works across every data domain.