Client side based data synchronization and storage is accomplished through
a smart way of data off-lining coupled with a synchronization technique
implemented on the client side that does not require any modifications to
the server side. The customized client utilizes the server as a temporary
placeholder for document synchronization. Attached documents to an item
will be off-loaded from the client based on a predetermined policy. The
clients make off-line copies of the items and documents. The server will
maintain only the document store skeleton or metadata for such processed
items. Any client which has not made an off-line copy of an item will
pass a synchronization request via the server to the other clients so
that at least one of its peers may upload the document onto the server.
The requesting client can then retrieve the item from the server and
synchronize/off-line that item on its local store.