Methods, systems, and computer program products for synchronizing data
stored at one or more message clients with data stored at a message
server where the message clients may receive update notifications and may
represent the data using different data structures than the message
server uses to represent the same data. A token is associated with each
data change that occurs at the message server. The message server sends
each change and associated token to the message clients. When the message
clients request a synchronization, the tokens they received are returned
to the message server for comparison with the tokens the message server
sent to the message clients. If the message clients do not return a
particular token, the message server determines that the clients did not
receive the corresponding change and resends the change to the message
clients. Tokens may also be used to divide a change into one or more
portions, with only one portion being provided initially. Then, in
response to receiving the token associated with the portion, the message
server may provide the remaining portion of the message to the message
clients.