Leopard 10.5.2 Sync Conflicts between Entourage and iCal
I have Entourage configured to sync my Exchange calendar to iCal, so that I can use iTunes to transfer it to my iPhone. It took a long time to get this set up initially, and during this process I ended up using Syncrospector under Tiger to clear out the Sync Services truth database to finally stop getting duplicate entries and/or unresovable conflicts. After doing so, however, it was very usable.
I want the sync to be one-way for this calendar, so that there is no possibility of sync conflicts damaging my Exchange calendar. 90+% of my appointments are work-related. I keep the rest in a separate iCal calendar, and therefore I can see both on my iPhone normally. There is a setting for this in Entourage sync services that allows you to specify that the sync is one-way, and the Entourage data will always overwrite the iCal data.
Then I upgraded to 10.5.2. Right after the upgrade, I started getting notifications every couple of hours that there were > 200 sync conflicts between iCal and Entourage. If you think about how the setting works, this should be impossible on its face. I've configured the sync to overwrite iCal's version of the calendar; since I did so, how could there be a conflict? In any case, no option I selected in the conflict resolution dialog would clear these exceptions.
I decided to re-do what I'd done originally to get this working smoothly. I turned off syncing from Entourage. I deleted the Entourage calendar within iCal. I deleted the synchronization-related preferences files in /Library for both Entourage and iCal. I stopped the Microsoft database daemon process. I used Syncrospector to empty the Sync Services truth database. I then started Entourage and re-enabled sync services. I then restarted iCal.
The Entourage calendar had been recreated in iCal, but it was empty. I looked at the Truth database in Syncrospector and noticed that it had > 4000 entries from Entourage, so the Entourage sync was working. I looked at the sync state information for iCal in Syncrospector, and noticed that the "fast" sync status for iCal showed errors. I tried it again, and it failed again. I changed the sync type to "Refresh Sync", and that failed too. I then made my fatal mistake, and changed the sync type to "Push the Truth". I understood this to mean that it would push the existing truth data to iCal. Instead, it pushed the "Truth" that the Entourage calendar should be empty to the Sync Services truth database. Worse that that, Sync Services then overrode my Entourage preferences and pushed the Sync Services truth to my Entourage calendar and deleted all of the entries in it. Which then Entourage kindly synced to the Exchange server and deleted all of my calendars there.
There are multiple bugs/bug-like features here. First that you can configure a one-way sync and end up with unresolvable sync conficts. Second that you can use a developer utility like Syncrospector to override a one-way sync definition. Third that the wording in the Syncrospector utility is open to such dangerous misinterpretation.
I thought this problem would simply be annoying; I'd just restore the Entourage database from the most recent Time Machine backup and move on. Little did I know that I wasn't done finding Leopard/Entourage bugs and bug-like features. In fact, the worst was yet to come. See my upcoming post how Time Machine corrupts backups of the Office 2008 identity database.