Switching to Exchange – Calendar

After a bit of playing around, I think I’m near enough to my goal state with calendaring to call it good enough. I was trying to get as close as I could to how I had things configured with Oracle Calendar, so it’s very possible there would be an easier way to set things up if I were to change my workflow (at least more than it already has by switching to Exchange). It doesn’t stray too far what I had before, but there is another piece or two to make things fit together.

Pre-Exchange

It probably makes sense to explain my goal state. My work calendar has only work-related entries in it, but when I need to block out time because of something on my personal calendar, I create an appointment named “Unavailable”. I like being able to keep personal appointments off that calendar, and not having to remember which things should be listed as private.

For personal calendars, my wife and I share them with each other in Google Calendar, although we both use iCal as our main interface. Most of the calendars are set up so we can use iCal to edit and have changes propagated back to Google via CalDAV. I do have one calendar which for some reason will not correctly sync over CalDAV, so at least for now I edit it directly using Google Calendar and then do a simple read-only subscription. There are several other Google Calendars to which I subscribe, such as for the UW Holiday schedule, my kids’ school events, and Mariners games.

With Oracle, I was able to subscribe to my work calendar which made things easy, but things didn’t look as nice with all those “Unavailable” entries. I wrote a script which would fetch the calendar and filter those out and republish. By subscribing to that, my work calendar integrated well with all my other calendars, and my camping state was happy.

Post-Exchange

Enter Exchange. It’s possible to do a periodic export of your calendar to a file, but the updates only happen when Outlook is running, so that was out since I didn’t want to keep a Windows VM running at all times. That would also rule out using Google Calendar Sync, which also needs Exchange Outlook running in addition to only syncing against one’s primary Google Calendar (so I probably would have had to create another Google identity).

I found several scripts which in theory let you connect to Exchange either via HTTP or DAV, but I had trouble getting those to work. I’m not convinced I entered the credentials correctly, but I wasn’t thrilled by having my password in scripts anyway.

The next thing to try was to publish somehow with Entourage. At first I tried enabling Sync Services, but Entourage went into a state where it would start, then throw a DB error and quit. After searching a bit, I came across a method to rebuild the Entourage DB (hold the option key while starting) and after that I was able to enable Sync Services.

Finishing touches

That gets the calendar onto one iCal instance, and publishing the calendar from iCal to MobileMe (but you could use another WebDAV server) makes it available to the other systems (as well as my wife’s calendar). The final step was changing the filter I was using to point to the iCal-published Entourage calendar.  Subscribe to that script, hide the calendar which comes directly from Entourage, and things are looking good.

So those last steps seem pretty convoluted, since the path for that one calendar is Exchange => Entourage => iCal => MobileMe => filter script => iCal. The last two steps wouldn’t be there if I didn’t want to have those “Unavailable” blocks. However, things are now very close to my Oracle Calendar experience, at least as far as publishing goes. I do need to keep Entourage running for the syncing, but I kept Oracle Calendar open all the time anyway so I could schedule. Now to figure out the best way to schedule things without needing Outlook, which is still easiest if I’m trying to book a room I haven’t booked before.

Leave a Reply