SyncML, or Synchronization Markup Language, was originally developed as a platform-independent standard for information synchronization. Established by the SyncML Initiative, this project has evolved to become a key component in data synchronization and device management. 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. SyncML 1.0 specification was released on December 17, 2000, and 1.1 on February 26, 2002. The most recent development with SyncML has been related to MDM(Mobile Device Management), which has seen active development in 2019.
A SyncML message is a well-formed XML document that adheres to the document type definition (DTD), but which does not require validation.
Internals
SyncML works by exchanging commands, which can be requests and responses. As an example:
the mobile phone sends an Alert command for signaling the wish to begin a refresh-only synchronization the computer responds with a Status command for accepting the request the phone sends one or more Sync command containing an Add sub-command for each item (e.g., phonebook entry); if the number of entries is large, it does not include the tag; in the latter case, the computer requests to continue with an appropriate Alert message, and the mobile sends another chunk of items; otherwise, the computer confirms it received all data with a Status command
Commands (Alert, Sync, Status, etc.) are grouped into messages. Each message and each of its commands has an identifier, so that the pair (MsgID, CmdID) uniquely determines 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:
<?xml version="1.0"?> <!DOCTYPE SyncML PUBLIC "-//SYNCML//DTD SyncML 1.2//EN" "http://www.openmobilealliance.org/tech/DTD/OMA-TS-SyncML_RepPro_DTD-V1_2.dtd"> <SyncML xmlns="SYNCML:SYNCML1.2"> <SyncHdr> <VerDTD>1.1</VerDTD> <VerProto>SyncML/1.1</VerProto> <SessionID>1</SessionID> <MsgID>1</MsgID> <Target><LocURI>PC Suite</LocURI></Target> <Source><LocURI>IMEI:3405623856456</LocURI></Source> <Meta><MaxMsgSize xmlns="syncml:metinf">8000</MaxMsgSize></Meta> </SyncHdr>
<SyncBody> <Alert> <CmdID>1</CmdID> <Data>203</Data> <!-- 203 = mobile signals a refresh from it to computer --> <Item> <Target><LocURI>Events</LocURI></Target> <Source><LocURI>/telecom/cal.vcs</LocURI></Source> <Meta><Anchor xmlns="syncml:metinf"><Last>42</Last><Next>42</Next></Anchor></Meta> </Item> </Alert>
<Final/> </SyncBody> </SyncML>
The response from the computer could be an XML document like (comments added for the sake of explanation):
<?xml version="1.0"?> <!DOCTYPE SyncML PUBLIC "-//SYNCML//DTD SyncML 1.2//EN" "http://www.openmobilealliance.org/tech/DTD/OMA-TS-SyncML_RepPro_DTD-V1_2.dtd"> <SyncML> <SyncHdr> <VerDTD>1.1</VerDTD> <VerProto>SyncML/1.1</VerProto> <SessionID>1</SessionID> <MsgID>1</MsgID> <Target><LocURI>IMEI:3405623856456</LocURI></Target> <Source><LocURI>PC Suite</LocURI></Source> </SyncHdr>
<SyncBody>
<!-- accept the header of the last message from the client --> <Status> <CmdID>1</CmdID> <MsgRef>1</MsgRef> <CmdRef>0</CmdRef> <!-- 0 = header of the message --> <Cmd>SyncHdr</Cmd> <TargetRef>PC Suite</TargetRef> <SourceRef>IMEI:3405623856456</SourceRef> <Data>200</Data> <!-- 200 = ok, accepted --> </Status>
<!-- accept the request of the mobile for a sync --> <Status> <CmdID>2</CmdID> <!-- this is command #2 --> <MsgRef>1</MsgRef> <CmdRef>1</CmdRef> <!-- it respond to command msg=1,cmd=1 --> <Cmd>Alert</Cmd> <TargetRef>Events</TargetRef> <SourceRef>/telecom/cal.vcs</SourceRef> <Meta><Anchor xmlns="syncml:metinf"><Next>0</Next><Last>0</Last></Anchor></Meta> <Data>200</Data> <!-- 200 = ok, accepted --> </Status>
<Final/> </SyncBody> </SyncML>
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 (1, 2, 3, ...) 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-synchronization situation, in a normal (non-refresh) synchronization, each device sends a log of changes since the last synchronization.
SyncML client connectors and plugins NamePlatformApplicationContactsCalendarMemosTasksBook-marksE-mailSMSPhotoVideoMusicFilesNotesSyncfriend for MS OutlookWindows XP/Vista/7SyncML and ActiveSync client for Outlook 2007/10Also supports Google sync including feeds from Facebook, Twitter and LinkedIn. Free version synchronizes 200 contacts in any custom folderGemalto / O3SIS AGWindows MobileSyncML Client, Personal Life Mobilizer commercial, over-the-air installable client, Videos, Photo, Ringtones, SMS, MMS, as wellGemalto / O3SIS AGAndroidSyncML Client, Personal Life Mobilizer commercial, over-the-air installable clientGemalto / O3SIS AGiOSSyncML Client, Personal Life Mobilizer commercial, over-the-air installable clientGemalto / O3SIS AGSymbian, Series 60SyncML Client, Life Mobilizer Push Mail Edition commercial, over-the-air installable clientGemalto / O3SIS AGBlackBerry J2ME from OS 4.5, Nokia S40, Sony Ericsson J2MESyncML Client, commercial, over-the-air installable clientSyncEvolutionUnix/LinuxEvolution, KDE/Akonadi, plain files, ...free, command line, Genesis GUI frontendlibsynthesisLinux, iOSSyncML client+server engine libraryOpen-source, LGPL+EPL, DB backend via plugins or SQL, custom content formats possibleSyncEvolutionMaemo 5system address book/Contacts, Datesfree, command lineSyncEvolutionOS X, iPhonesystem address bookfree, command lineFunambolWINNERPocket PC, Smartphoneplus files in 'briefcase', AGPL v3FunambolSymbianSymbian S60 3rd/5th EditionAGPL v3, adds push and picture sync capabilities to native clientFunambolAndroidAndroid Sync ClientOpen Source, AGPL v3; very specific to onemedia.com, attempts to use it with other SyncML servers have failedFunambolBlackBerryBB DatabasesOpen Source, AGPL v3FunamboliOSAddressBookOpen Source, AGPL v3FunambolJava Email ClientJava ME, J2SEOpen Source, AGPL v3FunambolWindowsOutlookOpen Source, AGPL v3FunambolOS XDesktopOpen Source, AGPL v3FunambolMulti-platformJava ME, J2SE, C++***Open Source SDK, AGPL v3FunambolPalm OSPalm DatabasesOpen Source, AGPL v3, Community ProjectFunambol Community ProjectWindows, LinuxiPodsync via cable, Open Source, AGPL v3Funambol Community ProjectWindows, Linux, MacThunderbird, SunbirdOpen Source, AGPL v3FunambolYahoo!, GoogleContacts, CalendarOpen Source, AGPL v3NokiaSymbian 9.xNokia S60 3rd/5th Edition nativeMMS, too!SynchronicaWindows MobilePocket PC, Smartphoneemails, attachments and foldersSynchronica Sun Java Systems Communication Suite Sun Comms 4, 5 and 6Synchronica Microsoft Exchange 2003 and 2007Using OWA (WebDAV)Synchronica Lotus Domino 6Using IMAP and CORBASynchronica Google Calendar, ContactsSynchronica MSN/Hotmail/WindowsLive ContactsSynchronica Java Content Repository Any JCR compatible serverJCR (JSR-170) back-end APISynchronica Palm OS mobile devicesSynchronicaOS XiPhoneover the air (OTA) using IMAP/SMTPTSyncWindows, Linux, OS X, *Thunderbirdfree, GPLSyncML2iPhoneiPhoneiCalfreeMyTTSymbianS60 all versionfree, support file upload/download, only Chinese versionMyTTWindows MobilePocket PC, Smartphonefree, support file upload/download, only Chinese versionMyTTWindowsOutlookfree, only Chinese versionMyTTMTK25,26,28MyTTBrewplan44.chiOSiOS contacts and calendar, separate tasks and calendarcommercial, free contacts-only versionSynthesisAndroidAndroid databases, internal tasks and notes, Astrid Tasks, Alex Baker's Tasks, OI notescommercial, multiple sync profiles, schedulingSynthesisWindows Phone 8Windows Phone 8 contacts, calendarcommercialSynthesisPalm OSPalm Databasescommercial, multiple sync profiles, schedulingSynthesisWindows MobilePocket PC, SmartphonecommercialSynthesisWindowsOutlook, Outlook ExpresscommercialSynthesisWindows, Linux, OS XSQL, ODBC, SQLite3, PlainText***Programming SDK w/API's in C, C++, Delphi, Java, & .NetSynthesisWindows, OS XSunbird/LightningDEMO application included with SDKSynthesisWindows, Linux, OS XClient Desktop DEMO/ODBC/Plugin***Scriptable utility to connect with any other client side application or database.TTSyncWindows MobilePocket PC, Smartphone***commercialTTSyncSymbianS60, 1,2,3 version***commercialCompanionLinkWindowsVariouscommercialSyncJE by NexthausWindows MobileWindows MobilecommercialSyncJE by NexthausOS XOS XcommercialSyncJE by NexthausWindowsOutlookcommercialSyncJE by NexthausWindowsOutlook ExpresscommercialSyncJE by NexthausWindowsLotus NotescommercialSyncJE by NexthausWindowsACTcommercialSyncJE by NexthausPalm OSPalm DatabasescommercialSyncJE by NexthausBlackBerrycommercialSyncJE by NexthausiOSiPhonecommercialCritical Path (Memova)J2MEPhone Backup ClientcommercialVoxmobili (An OnMobile Company)Windows Mobile, Android, OS X, Symbian, J2ME...SyncML Client, VoxMobili ClientcommercialYota ContactsWindows MobileSyncML Client, Address bookfree, shipped with Yota HTC MAX 4GSynchronossBlackberry, Symbian, Palm OS, Windows Mobile, AndroidSyncML Client, MightyBackup, Network Address Bookcommercial, with over 10 Million clients deployedSynchronossWindowsOutlook ConnectorSynchronossExchangeMicrosoft Exchange ConnectorPleexAndroid, Bada, Blackberry OS, iOS, J2ME, Symbian (S60/S40/UIQ), Windows MobileVariousMedia sharing and community networks too
SyncML servers