Few IT resources have greater visibility within an organization than email. It's a service that's critical to every user, and email outages cause the user base to panic. Migrating from one email system to another is always a difficult proposition, and the move from an in-house Microsoft Exchange mail system to a cloud-based system like Google Apps is even more challenging. Dealing with the inevitable postmigration problems can try men's souls.
The migration from Exchange to Google Apps is built on two tools: Google Apps Directory Sync and Google Apps Migration for Microsoft Exchange. The former is necessary to synchronize user accounts, groups, shared contacts, and user profiles in an Active Directory domain with Google Apps, and the latter does the grunt work of actually copying email, calendar, and contact data from Microsoft Exchange to Google's service.
The first order of business (once you've set up your business account with Google) is to begin constructing your Google Apps Directory Sync configuration. This requires deep knowledge of your Active Directory structure, as well as general knowledge of LDAP and its query structures.
Exchange to Google Apps: Google Apps Directory Sync
The Google Apps Directory Sync tool is split into two main applications: the configuration manager and sync-cmd.exe. The configuration manager is a tool that can read and write Google Apps Directory Sync XML configuration files and run simulations of the synchronization task to check the viability of the configuration; sync-cmd.exe is a command-line tool that executes the real synchronization process.
Working with the Google Apps Directory Sync configuration manager is a double-edged sword. It makes certain items quite simple to configure, such as the basic settings of the Google account to use for the sync, the LDAP server to query for data, the base DN, and so forth. But it can be irksome in places where you're required to include or exclude a significant number of individual elements -- such as a list of users that have no commonality and need to be excluded from the sync. Adding these lengthy configuration elements line by line through the GUI tool gets old very quickly.