The Exchange Project - Syncing Exchange to iCal and back
As noted elsewhere, I decided to go on with the Exchange2iCal project I started almost one year ago.I’m actually getting along nicely, also due to the fact that Jeffrey Harris released the wonderful VObject package some days ago. (Thanks to Jon for the tip!)

So far, the following bits and pieces are working:
- I can get the whole Exchange Calendar as an
icsfile, including recurrence, alarms and meeting status. - I can parse and compare two iCalendar files and get the following information:
- New Local/Remote Events
- Changed Local/Remote Events
- Deleted Local/Remote Events
The first part can be considered “stable”, that is, if you’re OK w/ read-only access to you calendar, you could basically use that part. You can download these here: e2i.
Warning
These scripts are provided strictly as is. It’s alpha status at best, hacked together to work on my environment and not tested elsewhere than my Mac. There isn’t a
READMEavailable and I assume that you know how to get the different tidbits needed to make it running, in particular: * Python 2.3 * PyObjC (If you want to profit from Keychain-based authentication to Exchange) * Basic knowledge of Python(If you can’t, then maybe you’re not the exact target audience for these scripts and better wait for the moment where I have something a little more user-friendly or where Apple themselves release an iSync to Exchange. I know there are quite a bunch o’ people in the wild that’d like to see this working, but sorry, it’s just not there yet.).
I further assume that you know how to read a program and change certain parameters. There is some documentation in the code, but remember: This is not for the faint-hearted! And now go and run
exchange.py![]()
The second part (parsing & comparing) is still very buggy and unstable. I get pretty decent results but the parsing & comparing is somewhat unpredictable.
Now, I am heading for the following: * Increase the stability of the comparison[1] * Implement a first one-way updater * Wrap the thing up so fetching, comparing and updating will become one monolithic sync process * Write an iSync plugin
(This last point should be the easiest, as PyObjC can now be used to program NSBundles in Python, as seen here.
(Hat tip: John Gruber)
Some other tidbits are going along with this as well:
* Increase the stability and usefulness of the XSLT that transforms the Exchange data to iCalendar
* Bring meeting attendee info into the iCS if possible
* Recur to less file-based transactions (i.e., less data-dumps and more advanced uses of stuff like LibXML2’s Python bindings etc.)
* Lure our Sysadmins to install Exchange 2003 ASAP.
* Become better in Python programming
* Set-up some project space with a constant URL so people can find this — if they want
Rationale
You might ask yourself the question what the rationale of this project is? I’ll admit, I’m only doing this to get /.ed once in my life.
But before you go and call the dot to slash me, bear in mind that this project is not yet finished — some more time is needed to get something that’s worth a /.
(Actually, getting Exchange on my Mac desktop would be great, too … )
[1] That is, better understand the VObject architecture

June 12th, 2007 at 15:24
PLEASE PLEASE PLEASE! Don’t stop developing this!!
August 1st, 2007 at 22:07
This could be huge. There are thousands of people who hate the exchange environment but don’t have any alternatives. Hopefully one day Macs will rule the world. How ’bout them Apples.
September 2nd, 2007 at 4:38
PLEASE PLEASE! Don’t stop. How much money do you want? I keep checking back…
Don’t make me DIGG you!
September 2nd, 2007 at 12:44
Hi Mike
I’m flattered by the interest my not even alpha project generates.
I am actually waiting to see what enterprise integration the upcoming Leopard will bring.
jr
October 27th, 2007 at 3:13
No help from Leopard. The Snerdware stuff broke and they weren’t ready for the upgrade (it was a performance pig, anyway). What do you say?
November 2nd, 2007 at 16:08
I’m with Stephen, Snerdware is not up for the challenge with Leopard. Their current “workaround” is literally not to upgrade to Leopard.
So, will you be the Stallion of Exchange in iCal??? It is up for grabs. I’m serious.
November 10th, 2007 at 8:49
Did GroupCal3 work well before Lepard?
November 21st, 2007 at 3:35
Yes, GroupCal3 worked reasonably well, although it was a bit of a resource hog. Although that may have been the fault of Apple’s Sync Services.
Seriously, I have now tested the stable functionality of e2i, and am EAGER for the synchronization to get worked out. I would be happy to contribute code to help out. (not sure if there is already a sourceforge or googlecode project set up for this.)
PLEASE!
As an aside, has anyone found the easy way to install python modules for libxml2 and libxslt? I ended up using MacPorts, but it installs its own version of Python which seems like overkill.
December 6th, 2007 at 18:00
Dude, you need to get going with this… i would pay for my copy for sure… like a lot of people, i’m stuck using windozz at work but at home, i want to only use my mac and entourage is horrible. I have tried to setup shared cal between exchange and Ical from every direction but in the end, its pathetic that address book will sync with exchange but ical will not, i think its a high level thing between bill and steve.. but at the end of the day, every is right…this is a gap that is up for grabs and you should hit it hard…
December 6th, 2007 at 19:49
Is there a status update on this project? I’ve been looking for a better solution than GroupCal (I’m willing to pay.)
I have a WM smartphone that I want to do over-the-air sync with my home computer using a thrid-party hosted exchange solution… so long story short - this is the missing link in my evil plan.
December 12th, 2007 at 13:36
Like many of you who found your way to this site, I use exchange and outlook at work and OS X and ical at home. I was going mad looking for a solution and then I tried Plaxo… solution found and peace I have… just http://www.plaxo.com and wala
hope this helps
January 3rd, 2008 at 10:42
[...] Synching Exchange to iCal [...]
January 4th, 2008 at 23:33
Any word on this? You could have a real winner here, with all the movement in the direction of the Mac, both in the enterprise and in home use.
This is a project whose time has come. Snerdware has dropped the ball. You could win!
…and besides, I really need it!
January 4th, 2008 at 23:40
Allan, how does Plaxo help? How can I get my Mac to sync to Exchange using Plaxo? I don’t use a PC at all anywhere. I have to use an Exchange account with my primary client…
Care to enlighten me?
January 4th, 2008 at 23:45
YAI only works on Tiger. No Leopard version. It won’t even install on Leopard.