I had a task of migrating few thousands contacts and some calendars from Apple iCloud to Microsoft Office 365 (Exchange) system.
Importing Calendars was pretty straight forward:
- Export all calendars in .ics format on a Mac via buit-on Calendar (select your calendar > File > Export > Export).
- Open .ics calendar on Windows Machine with MS Outlook 2016 (which already had Office 365 account setup).
- Go to View > Change View > List.
- Drag all relevant appointments into Office 365 account calendar (I skipped appointments older than 12 month).
Importing contacts proved to be a bit more complicated. I initially tried to import on a Mac via built-in contacts app by simply dragging and dropping individual contacts or contact groups. Importing large number of individual contacts this way simply didn't work reliably enough. Contacts app was freezing, showing nonsensical error messages, crashing, etc. Also, it would often show a message about a duplicate contact and prompt to skip, ignore, or cancel import. Unfortunately, neither of the buttons was responding and the only option left was to kill the Contacts app... Importing via dragging contact groups looked like it was working, but soon I discovered that it was skipping all data in custom contact fields that were not supported by Office 365 / Exchange...
After bunch of trial and error I eventually found a reliable way to import all contacts without loosing any data in custom fields:
- Export all contacts in .VFC format on a Mac via built-in Contacts (select all contacts > File > Export > Export vCard)
I exported each group individually, but this is probably not required - it seems that group membership is preserved when you import .VCF into Gmail.
- Import .VCF file to Gmail Contacts (via web browser).
- Export all contacts (or individual groups if you want to preserve those) from Gmail to Outlook CSV format (make sure you choose Outlook CSV, not Google CSV format).
- Import .CSV files to Office 365 account via Outlook (File > Open & Export > Import/Export > Import from another program or file > Comma Separated Values...)
This way all contacts were imported without any errors or lost data. Custom fields that couldn't be matched to any of the standard fields were added to Notes section.
Mac OS High Sierra (10.13)
Windows 10 Pro (1709)
Microsoft Outlook 2016
Office 365 / Exchange Online