Horde is a groupware framework that combine a lot of PIM data. One of the major problem with PIM data is to get them synchronized among different device. One of the most used to do so is SyncML that allow the two-way synchronization of PIM. Horde embeds a SyncML interface.

evolution and its PIM data storage

syncevolution is a software that allow the synchronization of the data contained inside the evolution PIM data management software through SyncML. However, there is no need to install evolution software to be able to synchronize the data, the storage used is independent to the presence or not of evolution and is using widely used standard like iCalendar files for calendars.

By default, they are stored in ~/.local/share/evolution/ directories. For example calendars are stored in the calendar sub-folder and tasks in the tasks sub-folder, each of them as an unique iCalendar file (respectively ~/.local/share/evolution/calendar/system/calendar.ics and ~/.local/share/evolution/tasks/system/tasks.ics)

Installation

On Debian, syncevolution is packaged. Therefore, to install it :

# apt-get install syncevolution

It will also install [[!debpkg evolution-data-server]] package that will the handling of the data in the format used by evolution.

By default, syncevolution will synchronized the data between the different peers and the evolution database. We will see how to synchronized it with Horde database.

The first thing is to create a new peer. For that we will use a template. To get the list of all templates available just enter the following command:

$ syncevolution --template ? test

You can put what ever you want after the ? but something should be specified otherwise you will get an error. Maybe a bug of the version used.

It should return something like this:

[INFO]
[INFO] Available configuration templates (clients and servers):
[INFO]    template name = template description
[INFO]    eGroupware = http://www.egroupware.org
[INFO]    Funambol = http://my.funambol.com
[INFO]    Google_Calendar = event sync via CalDAV, use for the 'target-config@google-calendar' config
[INFO]    Google_Contacts = contact sync via SyncML, see http://www.google.com/support/mobile/bin/topic.py?topic=22181
[INFO]    Goosync = http://www.goosync.com/
[INFO]    Memotoo = http://www.memotoo.com
[INFO]    Mobical = https://www.everdroid.com
[INFO]    Nokia_N900 = Template for all Nokia phones which support contacts, notes and combined tasks+events
[INFO]    Oracle = http://www.oracle.com/technology/products/beehive/index.html
[INFO]    Ovi = http://www.ovi.com
[INFO]    ScheduleWorld = server no longer in operation
[INFO]    Sony_Ericsson_K750i = Template for old Sony Ericsson phones, with separate databases for contacts/events/tasks/memos and SyncML 1.1
[INFO]    Sony_Ericsson_W595 = Template for all current Sony Ericsson phones, with separate databases for contacts/events/tasks/memos and SyncML 1.2
[INFO]    SyncEvolution = http://www.syncevolution.org
[INFO]    SyncEvolution_Client = SyncEvolution server side template
[INFO]    Synthesis = http://www.synthesis.ch
[INFO]    WebDAV = contact and event sync using WebDAV, use for the 'target-config@<server>' config
[INFO]    Yahoo = contact and event sync using WebDAV, use for the 'target-config@yahoo' config

Configuration of the access to the Horde server.

No template already exist for Horde, but the one for Funambol is working nicely with minor adaptations. To create a new pear called MyHorde based on Funambol template just run the following command:

$ syncevolution --template Funambol MyHorde

It will set up several files and folders under the ~/.config/syncevolution/default/peers/MyHorde folder.

First edit config.ini to setup the main connexion to the SyncML server of Horde.

The first value to change is syncURL that specify the URL of the SyncML server. Just addaped it to fit your horde server:

syncURL = https://my.server.com/horde3/rpc.php

Then set the username to be used to connect to the server and finally choose to set up the password either as plain text in the configuration as the name of an environmental variable or as nothing to be asked for each synchronization.

Adaptation of the names of the PIM resources

Inside the sources/ are configured the different PIM data that can be synchronized. syncevolution is able to synchronize the address book, the calendar, the memos and the todo list each of them configured in the config.ini file of the corresponding folder.

Two main variables are set in these different files the first one sync specify if the resource should be sync and how (one way, two-way, etc…). The second one uri give the name of the resource on the server.

Here are the setting I tested:

  • addressbook and memo:
sync = disabled
  • calendar with
sync = two-way
uri = event
  • todo with
sync = two-way
uri = task

To launch the synchronization simply launch syncevolution with the name of the profile to use:

$ syncevolution MyHorde

That is!