Migration from Exchange Server to Office 365

I. Pre-migration activities

Before you install and configure CodeTwo Office 365 Migration make sure that your environment (both Source and Target Server) is prepared for migration.

Below you will find the list of key points to be considered:

Step 1: Create target Office 365 custom domain

Add the custom domain to the target Office 365 account and verify it.

Learn more about creating additional/custom domains in Office 365

Step 2: Recreate/import Exchange users to Office 365

Recreate or import all existing Exchange users to the target Office 365 and configure their accounts under a new domain.

Learn more about creating new Office 365 users

Learn more about importing multiple users to Office 365 via a CSV files

Step 3: Make sure the Office 365 Administrator's email address corresponds to the new active domain

Assuming that your custom domain has already been activated (see Step 1 above), double-check that your admin's e-mail address is correct and corresponds to the new domain. To do that, perform the following actions:
  • Log in to the Administrator's account.

  • In the Admin tab select Office 365.

  • Choose Users and Groups and the table with all organization users will display.

  • Select the Administrator's account and in Details under User name section locate the dropdown menu showing all available domains within the organization.

  • If the domain visible in the email address is inactive change it over to the active one and save changes.

Step 4: Assign licenses in Office 365

Make sure that Office 365 licenses are assigned to all user accounts that will be used as the target mailboxes. Alternatively, during the mailboxes’ matching step you can set the program to create the mailboxes and assign the licenses automatically.

Learn more about assigning licenses in Office 365

Step 5: Installation of components required to install CodeTwo Office 365 Migration (the installation wizard will guide you through this process)


  • MAPI CDO (MAPI Client and Collaboration Data Objects, required on any system except systems with coexisting MS Outlook x86 older than version 2016)
  • .NET 4.0 (required on any system, might be already installed)
    Learn more
  • PowerShell 2.0 (or higher, must be installed on Windows Server 2008)
    • Download Windows Management Framework Core (WinRM 2.0 and Windows PowerShell 2.0) for Windows Server 2008
    • Newer Windows releases (Windows 7 or higher, Windows Server 2008 R2 or higher) already have PowerShell 2.0 (or higher) built-in.
    • Small Business Server 2008 (SBS2008) users might stumble upon a problem with installing PowerShell. See our Knowledge Base article on that.

Step 6: Installation of CodeTwo Office 365 Migration

The program needs to be installed and activated on a machine within the Source server domain.


Please note that it is recommended to install the migration tool directly on the Source server except Windows Server 2003 and old machines - read why.


Make sure you meet the system requirements prior to installing the software.

II. Migration process

The steps below will guide through the correct configuration of CodeTwo Exchange Migration:

Step 1: Connect to the Source server

Once the program's installation is completed, you will see the Dashboard view. Click Create a new migration job link on How to start tile. You will encounter a wizard which allows you to configure connection to your On-premises Exchange Server, which will be used as the source of the migration. You need to go through those steps:

  • Service account - in this step, the program creates a service responsible for accessing mailboxes selected for migration. As the service works under the Administrator's MAPI profile, enter the Administrator's email address and password. Note that this user needs to belong to Domain Admins group. By default, the currently logged Administrator's email address is filled automatically. However, you can change it by clicking Browse and selecting another user's email address from the picker.
  • Connection method - there you can allow the program to automatically recognize the Exchange Server located within your network or select it manually from the picker.
  • Configuration - this step configures your source server connection based on the entered settings.
If all data has been correctly entered, the Source server mailboxes should be listed later.

Learn more about troubleshooting the Source server connection settings

Step 2: Continue the job configuration to set the Target connection 

After successfully configuring the Source connection, Create migration job wizard will open. Set the name of the job and hit Next to define the Target server connection on the very next step:

  • From the Target server combo box select Add new target connection... and wait until next wizard opens.
  • On the Admin's credentials step specify the UPN of the Office 365 Administrator. Next, enter the password twice and move on to Configuration.

  • Configuration - this process configures the target server connection based on the entered settings.
    • Once the configuration is completed there should be no errors under the three following points. However, if any errors appear please consult the Learn more sections describing the most common configuration mistakes.
    • Now is the time to test the Administrator's impersonation rights on the chosen Target mailbox. Under the Test button provide the Office 365 user's e-mail address and hit Test. If your rights have been successfully granted, you will be notified about it with an adequate information.

Step 3: Define which mailboxes should be migrated and bind them with the Target mailboxes

The Mailboxes step allows you to include or exclude mailboxes using multiple filters. You may, for an example, include all users' mailboxes from a particular Organizational Unit or Active Directory group. By default program includes All users along with the Public Folders as it is a most common scenario. Since you have chosen the mailboxes, proceed to the next step.

Matching the Source with the Target mailbox can be done in two ways: automatically via the built-in Automatch feature or manually.

  • Automatch - this mechanism automatically matches the Source mailboxes with the corresponding Target mailboxes based on users' first and last names.
    • While configuring the job for the first time, the Automatch all mailboxes in this job is the only option available. If you need to Automatch only particular ones, complete the wizard, select desired mailboxes and click Automatch on the ribbon.
    • When you have selected all options, click Automatch now. The progress and the report will be visible in the bottom part of the window.
    • In case the results do not meet your requirements, you can click Undo, change the settings and repeat the procedure.


      If there are any Target mailboxes that haven't been matched automatically, you need to link them manually. Otherwise, they will not be migrated.

  • Manual matching
    • If you have decided to this option, skip to Step 4 to complete the wizard and then come back here.
    • On the Mailboxes list, hit Click to match target button for a desired mailbox. Then, either select the appropriate target mailbox from the list of type in the SMTP address.
    • Click OK to confirm your decision. You must repeat the procedure for unmatched mailboxes.

Step 4: Customize all necessary aspects of the migration job

You may configure the following additional options:

  • Scheduler - allows you to set the job to be automatically started in desired period of times, so you do not have to control it manually.
  • Time filter - is used to exclude items that are older or newer than a particular date
  • Folder filter - may completely exclude specific folders from the migration process
  • Address rewrite - enables automatic conversion of EX addresses to the SMTP equivalents. This option needs to be enabled if you are performing cross-domain migration; otherwise you will not be able to reply to messages containing EX addresses.
  • Concurrency - provides an option to define how many mailboxes should be migrated at same time. This number should correspond to the amount of CPU cores.

Step 5: Start the migration

Simply click Start on the ribbon to begin the process. Once you start the migration, all items from the Source mailboxes will be migrated to their corresponding Target mailboxes.


The migration processing time depends on several different factors, e.g. the number of mailboxes and items, the speed of internet connection, EWS Throttling settings. We have published more details here

Step 6: Check if the number of migrated items in the Target mailbox folder corresponds to its equivalent on the Source server

If you notice any missing items in the Target mailbox restart the migration using the Rescan feature.


Please be aware that the program does not migrate some specific folders at all. Those are i.e. Sync Issues or ones created while putting a mailbox on a litigation hold.


If any problems appear during the migration process they will be indicated by the yellow or red triangle visible in the Migration Status column in the main window of the program. Details of the problems may be checked in the diagnostic files.

Step 7: Check if there are not any new items in the Source mailbox after migration

Once the migration is finished and you have noticed that some new items appeared in the migrated Source mailbox, just restart the migration using the Rescan feature. Please keep in mind that the Rescan feature uploads only new items, not changed ones.

III. Post-migration cleanup

Once the migration is completed please follow the points below:

Step 1: MX records

Change MX records to enable mail flow to new servers. Please note that this process may take several hours.


If any new items appear in a source mailbox while the MX records are being changed, it is possible to migrate them after the records' migration process is completed. It can be done via the Administration Panel of the program by choosing the Rescan feature.

Step 2: The previous domain

Disconnect the previous domain.


If you have any problems with disconnecting your domain please consult your Domain Provider.

IV. Troubleshooting

For troubleshooting information, refer to our Knowledge Base.

For additional resources, refer to Frequently Asked Questions or give us a call.

Was this information useful?