I’ve been using MobileMe for more than two years, so I’ve gotten used to having my calendars and my contacts synced all the time between my iPhone and my Macbook Pro. It was pricey, but except for a few problems in the beginning, it worked well. A few days ago, when Apple made available their new iOS5 and iCloud, I upgraded, anxious to try the new features and see what usability gems Apple have hidden all throughout their new products. In spite of the long time to upgrade (about two hours and half, all in all), it went well and everything seemed to sync properly between all my devices.
Today however, I tried syncing my 2Do app on my iPhone — I haven’t opened it much lately as I’ve gotten used just to iCal, but if you need something more, 2Do is the best task & reminder management app you can find. After syncing, some of my calendars had been duplicated. I checked the ones that had tasks and deleted the others that looked empty — big mistake: when I checked my iCal a bit later, the same calendars were gone with no duplicates left behind. Luckily, I had a complete backup from earlier today (I must’ve had a feeling something would go wrong). I imported the backup, but to my horror, as soon as the calendars would be back, iCloud would start syncing and promptly deleting the ‘new’ calendars. Unlike MobileMe, iCloud considers the data it has in the cloud as the main ‘mother’ source, and all the other sources are considered its ‘children’. You don’t have the option to merge or overwrite the iCloud data with the one on your Mac, as you had with MobileMe. Frustrated, I tried various ways of importing back the data but each time iCloud would reject anything that wasn’t already in the cloud. In the end, I was left with no calendars at all and just a useless backup file — Apple should seriously think about this, what good is the iCal Archive backup if it doesn’t work?
So, if you’ve lost your calendars like me, or if you had duplicates and you or iCloud deleted them (some seem to have this problem), here’s a way to merge local data with iCloud and repair the syncing between all your devices:
- Obviously, you need a back-up (an iCal archive or .ics files) — if you don’t have that, you could try getting back the data using Time Machine (if you have one, of course). You can learn how to do that here, but it might take a while if you had a lot of calendars and events.
- Open the iCal preferences and delete your iCloud account — a warning will inform you that all your calendars will be deleted, including the reminders (only ‘On My Mac’ calendars will remain). You have to press on the minus button, as you can see below.
- Go to your Mac’s System Preferences and in the new iCloud section uncheck the Calendars — this will make your iCall ‘free’ from the iCloud. You have the same option in the ‘Mail, Contacts & Calendars’ section, either is fine.
- Go to www.iCloud.com and delete all your calendars and reminder calendars manually — you might have to create a new ‘temp’ one as you can’t have zero calendars. Now you should have a clean iCloud, with just two empty calendars, the second for the reminders (just to make sure, check on your iPhone too).
- Cut your internet and import your backup file into iCal — now you should have all your data back, but since the calendars are already set as iCloud ones, not ‘On My Mac’ types, they’d be deleted as soon as you go online again. You need to manually export each calendar as an .ics file.
- Unfortunately, for the reminders it’s a bit tricky, as you can’t export them as .ics files — you need to create as many ‘On My Mac’ Reminder calendars as you have for your reminders and copy all from each calendar and assign them to a new ‘On My Mac’ calendar. Be sure not to use the same names for the new calendars.
- Now, delete all the iCloud calendars and the reminder calendars except the ‘temp’ ones that are already online — you should be left with a clean iCal, similar to what you had in the cloud before going offline plus the ‘On My Mac’ reminder calendars.
- Import the .ics calendars one by one, choosing the ‘New Calendar’ option — this will create similar calendars as you had before, but instead of being ‘iCloud’ calendars, they are ‘On My Mac’ ones.
- Put the internet back on and check the Calendars option in the System Preferences — since iCloud thinks this is the first time you’re setting up your iCal to sync, it will merge the data from your iCal with what you had in the cloud (the two temp calendars, which you can delete after the sync). With a bit of luck, you might even have the same colours you had before the mishap.
That’s it, less complicated than it looks, you just need to follow the steps properly and you should have everything back, working nicely, in about 15 minutes. Let me know if you have more questions.
Mr Gruber (Daring Fireball) points out that iCloud calendars are now type-specific, meaning they’re either event-based or reminder-based. This means that when you upgrade, your calendars get split into two calendars bearing the same name, one for the events and one for reminders. While this is no problem in iCal, if you’re using BusyCal or 2Do (and maybe other 3rd apps too), you will get duplicate calendars. If you delete those, you’ll lose data, just as I did. My solution was to rename all the reminder calendars. Read more on Daring Fireball.