Patent ID: 8190671

Claim:
A method comprising: establishing a first synchronization session between a first synchronization device and a second synchronization device, each synchronization device comprising a processor and memory, by transmitting a client initialization message from the first synchronization device to the second synchronization device, receiving a response at the first synchronization device from the second synchronization device, the response comprising one of an acknowledgement or an error, defining automatically based on the response and storing role information on the first synchronization device, which indicates whether the first synchronization device should serve as a synchronization client or a synchronization server in at least one subsequent synchronization session, wherein when the response comprises an acknowledgement, synchronization client is stored as the role information, wherein when the response comprises an error, the first synchronization device changes its role and stores synchronization server as the role information, checking said role information for the first synchronization device in response to a need for initiating a second synchronization session between the first synchronization device and the second synchronization device, and initiating the second synchronization session from the first synchronization device in accordance with said role information, wherein a client initialization message to initiate the second synchronization session with a synchronization server is transmitted from the first synchronization device to the second synchronization device in response to synchronization client being defined in the role information as the role of the first synchronization device and a server message to alert the second synchronization device to send a client initialization message is transmitted from the first synchronization device to the second synchronization device in response to synchronization server being defined in the role information as the role of the first synchronization device, wherein both devices are able to serve as a synchronization server, and wherein a device serving as a synchronization server analyzes changes made to data sets associated with synchronization sessions and harmonizes data items in the data sets.