|
eGroupWare does provide support for various synchronization mechanisms. A widely used one is SyncML. Almost every mobile phone does support SyncML for OTA synchronization of the address book. Sometimes you may even be able to use calendar and task synchronization with your device.
Newsflash: My changes are merged into the 1.6 branch of the eGroupWare SVN and will be part of the upcoming release.
Since I wanted to use my eGroupWare server to maintain my contacts, calendar and todos, I extended the SyncML parts of version 1.6.001 to support my devices. As a result of my changes my server does now
- fully support all synchronization types (normal sync, slow sync, one-way, refresh)
- support SyncML 1.0, 1.1 and 1.2
- support Large Objects (MoreData)
- respect client CTCap properties (MaxSize)
- work smoothly with Synthesis (iPhone & WM) clients
- synchronize Sub-Tasks with capable implementations (e.g. Synthesis iPhone Contacts+TodoZ)
- have configurable conflict handling
- support device history management
- support non-blocking allday events import for certain devices (configurable)
- let you configure the minimum UID length
- allows the configuration of the calendar synchronization period within the SyncML preferences
- allows to limit contact synchronization to specific an addressbook and distribution list (thanks to Zorg)
To enable SyncML 1.2 and to improve the vCard/vCalendar capabilities I adopted the related parts from Horde-3.3.2. Significant parts of my patch are caused by these upgrades.
If you are interested in these features you may use my patch to upgrade you EGW-instance, too. The latest version of my modifications are attached (work in progress!).
Now that 1.6.002 is out and contains many bug and security fixes I adapted my changes for this version, too.
The SyncML Application
The syncml Application is no longer hidden after my is patch applied. Although it is configured not to show up in the Navigation Bar, the Administrator will find it in the list of applications and within the ACLs of users and groups. If syncml is not enabled for a certain user, he will neither be able to change the application's preferences, nor can he use SyncML synchronization.
Conflict Handling and Server R/O Options
If items are change on both — server and client side — before the next synchronization, this is called a conflict situation. The original SyncML implementation of EGW left you no choice but the client changes always overwrote the server changes. This was maybe not your preferred behavior. With my latest extensions you can now configure the conflict handling of EGW or even set the server data to read only for every target individually. There are five different ways now to handle client changes:
- The client wins conflicts and overwrites the server data (original behavior).
- The server wins conflicts and overwrites the client data (new default).
- Merge data
- the client can only add new information to Contacts
- the client can only change attendee's stati or append new information to Events
- deleted entries will be added by the server again
- Duplicate entries of conflicting entries are created from both versions.
- The client can never change server data but have its own version (split brain).
- The sever reverts all changes the clients reports.
Device History Management
E.g. to enforce a Slow-Sync it becomes handy to delete the device history information of the server. With my current version you find your devices underneath the syncml application preferences. There you can either delete the full device history or the synchronization status and mappings for certain datastores. The next time you device starts a synchronization session the server will then request a Slow-Sync of the data.
Applying and Reversing the Patch
If you have little experience with software development you may not know what I'm talking about here. To help you to use my extensions anyway, find here the recipe to modify your EGW installation accordingly.
The attached patch file is needed on the server running EGW, and the required tools are supposed to be installed (which is true for most Linux boxes).
Proper access rights as server administrator are understood.
1. Go to your EGW Root directory (substitute $EGW_SERVER_ROOT with e.g. /var/www/egroupware)
cd $EGW_SERVER_ROOT
2. Apply the patch
gzip -cd eGroupWare-1.6.001-SyncML-Extensions-20090515-3.patch.gz | patch -p1
You should get a lot of success messages about changed files, no errors.
That's the whole magic! You are ready to go 
To revert the changes just append "-R" to the patch command
gzip -cd eGroupWare-1.6.001-SyncML-Extensions-20090515-3.patch.gz | patch -p1 -R
To use the new functionality (after you applied my patch) you have to upgrade the syncml application within the EGW setup, to "Find and Register all Application Hooks" and to allow your users access to the syncml application (this now shows up in the ACL lists) afterwards. Find attached an icon for this new application. You have to put it into your EGW tree as
syncml/templates/default/images/navbar.png
You will find the SVG file Yin_yang.svg at this location which I used to generate this icon.
After enabled the syncml application shows up underneath the users Preferences.
ICalSrv Dependencies
My patch changes the iCalendar parts of the eGW API. This does affect the ICalSrv implementation, too. Therefore the required changes are included in my patch and cause errors, if applied to an instance without ICalSrv. These errors are expected and can be ignored.
History
- 2009-02-13 Initial version
- 2009.02-13-2 This version is now working with Funambol on iPhone and WM again (old exception code removed).
- 2009-02-14 Old SyncML 1.0 implementations (e.g. SX1) don't like MaxObjSize; nobody seems to care anyway -> removed.
- 2009-02-14-2 Siemens SX1 does not support the department field
- 2009-02-15 Funambol Mozilla Plugin support
- 2009-02-16 SIF fixes; WM Funambol does still not all things right (Funambol bugs!); vCard folding fix; vCard 3.0 preferred now
- 2009-02-17 Quoting fixes for vCard/vCalendar/vTodo; set new formats as preferred by EGW
- 2009-02-25 Again some issues with the new formats. vCard 3.0 CATEGORIES and VEVENT RRULE compatibility. I disabled the import of the FN-field.
- 2009-03-02 Enable ALARM import for calendar events
- 2009-03-03 Make EGW "mirror safe": Support for multiple concurrent Syncs from one device to a single datastore (e.g. calendar) within one session
- 2009-03-04 Fixes problems with VCALENDAR/VTODO which contain VTIMEZONE containers, too
- 2009-03-04-1 info_type was not set for imported VTODOs
- 2009-03-04-2 included the additional (missing) Horde components in the patch
- 2009-03-04-3 better support for Sony Ericsson devices (Wnnni)
- 2009-03-05 Funambol needs very conservativ settings to be stable (one entry per message). And there are still memory issues in these clients

- 2009-03-05-2 Fixes seroius problems in calendar sync and with <Replace> in SyncML
- 2009-03-06 Conflict handling included, some new Nokia devices
- 2009-03-07 SyncML Application tuning, problem with ICAL-import/export fixed
- 2009-03-08 Implemented upgrade of syncml application and added documentation page, fixed problems in conflict handling
- 2009-03-13 Implemented device history management
- 2009-03-13-1 Fixes a minor problem within the new device history management (thanks to István)
- 2009-03-15 Fixes problems for Funambol SIF formats and gives MaxEntries as "Preferences" parameter
- 2009-03-15-1 Fixes iCalendar ALARM problem
- 2009-03-15-2 Adds global categories to conflict handling categories
- 2009-03-16 Fixes SIF content formating (especially clear-text fields)
- 2009-03-22 Fixes for message split, allday events can be imported as non-blocking for certain devices (preferences)
- 2009-03-24 Fixes in conflict handling
- 2009-03-24-2 Fixes a problem within the content mapping code introduced by the previous version
- 2009-03-26 Improvements in conflict handling, code cleanup, CATEGORIES in vCalendar fixed
- 2009-03-31 UID Handling Fixes for Calendar and InfoLog Entries
- 2009-04-01 Minimum UID length configurable, vCard/vCalendar fixes, new devices work again
- 2009-04-03 Smarter Infolog matching
- 2009-04-21 Add InfoLog matching for SIF content, improved conflict handling
- 2009-04-22 Fixes typo in category handling code (thanks to István)
- 2009-04-23 Fixes icalsrv and iCal export/import again (thanks to Christian)
- 2009-05-01 Merge option in conflict handling & various fixes
- 2009-05-04 Recurrence Exceptions should work again (no, they don't!)
- 2009-05-05 Recurrence Exceptions fixed
- 2009-05-08 Participants can update their stati again.
- 2009-05-09 Improved Event Editor
- 2009-05-10 New Calendar Recurrence Exception Handling (WARNING: Work in Progress!)
- 2009-05-13 New Calendar Recurrence Exception Handling, second approach (WARNING: Needs more testing!)
- 2009-05-14-1 Fixes Slow Sync for New Calendar Recurrence Exception Handling (WARNING: Needs more testing!)
- 2009-05-14-2 Duplicates in the Exception List (WARNING: Needs more testing!)
- 2009-05-15 Fixes Funambol Issues, Started with Client Side Filtering for Calendar (iPhone Synthesis)
- 2009-05-15-2 ALARMs were lost from vCalendar 1.0
- 2009-05-15-3 Configurable Calendar Synchronization Period
- 2009-05-20 Fixes for "Status Only" Exceptions of Recurring Events
- 2009-05-27 Improved Category Handling
- 2009-05-31 Improved Category Handling again
- 2009-06-03 Enables SyncML DS 1.2 Filtering for Calendar Synchronization
- 2009-06-09 Minor Fix in Category Handling Code
- 2009-06-14 Fixes the Group Invitation Problem
- 2009-06-27 Fixes Problems with Recurrence Whole Day Events
- 2009-06-27-1 Cleanup for Fields with Empty Values
- 2009-07-02 Fixes InfoLog and n_fn Issues in Addressbook (thanks István)
- 2009-07-03 Fixes Prostgres Compatibility
- 2009-07-12 Fixes task delegation, recurring events, PalmOS issues and includes Peter's SIF patch
- 2009-07-16 Recurrence Exceptions again, FN in vCard
- 2009-07-19 Funambol Outlook Client Support, Nokia N95, Calendar Fixes
- 2009-07-20 Fixes SIF Parser for Calendar Entries
- 2009-07-21 Separate from SVN trunk
- 2009-07-22 Fix Assignment Order for vCard Import
- 2009-07-28 Ported the Patch to 1.6.002
- 2009-07-30 Fixes Export of Yearly Recurring Events in SIF Format
- 2009-08-11 Group Invitation Handling
- 2009-08-22 Select Addressbook/Distriburion List for Synchronization
- 2009-08-23 Fixes Recurrence Problem with Pseudo Entries
- 2009-09-02 Improved Recurrence Exception Handling
- 2009-09-17 Fixes Funambol issue (thanks to zorg); I found still issues with recurrence exceptions...
- 2009-09-20 Hopefully all issues with recurrence exceptions are fixed now.
- 2009-09-22 Improved Calendar Slow Syncs
- 2009-09-25 Fixes ORGANIZER issue for CalDAV; iPhone works fine now (thanks to Stephan)
- 2009-09-28 Fixes issues with new items added from device
- 2009-10-04 Adds local timezone timestamps for DST crossing event recurrences (TZID, VTIMEZONE)
- 2009-10-05 Fixes in new VTIMEZONE code
- 2009-10-07 Fixes meeting attendee issues
- 2009-10-08 Fixes new participant issue created yesterday (Sorry!)
- 2009-10-09 Add timezone Europe/Helsinki, fixes InfoLog Preferences issue, improved Funambol plugin support
- 2009-10-10 VTIMEZONE is now part of VCALENDAR
- 2009-10-12 include Stefan Hepp's ideas and fixes
- 2009-10-18 Fixes VTIMEZONE RRULE issue
- 2009-10-19 Fix Status Update Issue
- 2009-10-24 Switch to new recurrence code from SVN trunk
- 2009-10-25 Fix Issues with vCal 1.0 RRULE WEEKLY; Complete SVN Merge
- 2009-10-29 Fix Problems with vCal 1.0 RRULE Export
- 2009-11-03 Fix Alarm Import Issues
- 2009-11-11 Adds Domain Support
- 2009-11-16 Changes merged into the1.6 branch
Version 1.6.003
The EGroupware project and Stylite GmbH plan a maintenance release for the stable 1.6 branch. This means there will be a version 1.6.003 coming in December. All my changes are already merged into this upcoming release. You may download the daily snapshot from: http://dev.egroupware.org/other/1.6-snapshot.tar.bz2
Acknowledgments
Although SyncML is a OMA standard protocol there seems to be enough scope for interpretation. Testing with the various implementations is therefore crucial. My heartfelt thanks go to those of you who tried my Extensions and gave me feedback about success and failures. Special thanks to Ralf Krüdewagen for pointing out a fundamental problem with my early patch versions, Bernhard Tittelbach for his contributions, Olaf Staubus for his numerous network traces, Lucas Zeller for sharing his profound SyncML knowledge and the eGroupWare developers for their great work. I also want to thank István Pongraczi, ender2, Christian Binder, Christian Herzog, Peter Goerzen, Zorg, Stephan Koch, Stefan Hepp, Andreas Welbers, Vitali Richert, ...
|