SyncML


SyncML is the former name for a platform-independent information synchronization standard. The project is currently referred to as Open Mobile Alliance Data Synchronization and Device Management. The purpose of SyncML is to offer an open standard as a replacement for existing data synchronization solutions, which have mostly been somewhat vendor-, application- or operating system specific.

Internals

SyncML works by exchanging commands, which can be requests and responses. As an example:
Commands are
grouped into messages. Each message and each of its commands has an identifier,
so that the pair MsgID,CmdID uniquely determine a command. Responses like
Status commands include the pair identifying the command they are
responding to.
Before commands, messages contain a header specifying various data regarding
the transaction. An example message containing the Alert command
for begin a refresh synchronization, like in the previous example, is:





1.1
SyncML/1.1
1
1
PC Suite
IMEI:3405623856456
8000



1
203

Events
/telecom/cal.vcs
4242






The response from the computer could be an xml document like :





1.1
SyncML/1.1
1
1
IMEI:3405623856456
PC Suite




1
1
0
SyncHdr
PC Suite
IMEI:3405623856456
200



2
1
1
Alert
Events
/telecom/cal.vcs
00
200





The transaction then proceeds with a message from the mobile containing the
Sync command, and so on.
This example is a refresh where the mobile sends all its data to the computer
and nothing in the other way around. Different codes in the initial
Alert command can be used to initiate other kinds of
synchronizations. For example, in a "two-way sync", only the changes from the
last synchronization are sent to the computer, which does the same.
The Last and Next tags are used to keep track of a possible loss of sync. Last represents the time of the last
operation of synchronization, as measured by each device. For example, a mobile
may use progressive numbers to represent time, while the computer uses strings like
20140112T213401Z. Next is the current time in the
same representation. This latter data is stored and then compared with
Last in the next synchronization. Any difference indicates a loss
of sync. Appropriate actions involving sending all data can be then taken to
put the devices back in sync.
Anchors are only used to detect a loss of sync, they do not indicate which data
is to be sent. Apart from the loss of sync case, in a normal
sync, each device sends all changes since the last synchronization.

SyncML client connectors and plugins

SyncML servers

1SAN = Server Alert Notification. This SyncML Push technology is based on definitions by the Open Mobile Alliance and extends the existing SyncML protocol specification by offering a method of server initiated synchronization.

SyncML hosted services