Learn Exchange the Guru way !!!


Exchange 2010/2007 to 2013 Migration and Co-existence Guide

We don’t have a lot of guides out there helping with a step by step guide for the migration and co-existence of Exchange 2010/2007 to Exchange 2013So, here you go !!!

Migrate using CodeTwo


If you are planning to employ a third party product for migration – look no further. CodeTwo is a mature and reliable product for full blown Exchange migraiton from

Exchange 2003/2007/2010 – cross forest or cross domain migration:

Take a look here: 

CodeTwo Exchange migration for Exchange 2003 to 2010/2013: Operational review:

Download here: 

Download Codetwo for free:

Before you proceed with the actual migration steps, these articles may be of interest to you:

Exchange 2013 CAS Role Demystified:
Exchange 2013 High Availability demystified:
Load Balancing Exchange Server 2013 – Good to know stuff:
Public Folders Migration from Exchange 2007/2010 to Exchange 2013:
Upgrade from Exchange 2013 CU1 or RTM to CU2:
Monitoring and troubleshooting Exchange using powershell:

For Complex Exchange 2007 migration check the common errors here –

Check our multisite url and authentication blog here –


Preparing Exchange 2010/2007

  1. Install the hotfix 2550886 for DAG failover improvements on Exchange 2010/2007 DAG servers.

  2. Login to the Exchange 2010/2007 server with Schema Admins, enterprise admins, domain admins and organization management group member id as SP 3 will extend the schema.
  3. Install Exchange 2010/2007 SP3 on all the exchange 2010/2007 servers in CAS then HT then mailbox role order if they are not on the same server

    SP3 can be downloaded from the below link:

  4. Check the below link for SP3 installation steps


Installing Exchange 2013

  1. I would suggest going for Windows 2012 for Exchange 2013 but you can use windows 2008 R2 SP1 as well.
  2. Install the windows 2012 server or Windows 2008 R2 SP1 on a new server and join the domain. It can be virtual or physical. Now Microsoft support virtualized mailbox role.
  3. Run the windows update and install all the recommended updates.
  4. You might like to configure windows NLB if you don’t have NLB hardware. Check the below blog on it. (optional)
  5. For Active Directory preparation check the “step 3 preparing active directory” at the blog mentioned below:
  6. Install the following prerequisites for Exchange 2013

For Windows 2012:

  1. Open Windows PowerShell.
  2. Run the following command to install the required Windows components.

    Install-WindowsFeature AS-HTTP-Activation, Desktop-Experience, NET-Framework-45-Features, RPC-over-HTTP-proxy, RSAT-Clustering, RSAT-Clustering-CmdInterface, RSAT-Clustering-Mgmt, RSAT-Clustering-PowerShell, Web-Mgmt-Console, WAS-Process-Model, Web-Asp-Net45, Web-Basic-Auth, Web-Client-Auth, Web-Digest-Auth, Web-Dir-Browsing, Web-Dyn-Compression, Web-Http-Errors, Web-Http-Logging, Web-Http-Redirect, Web-Http-Tracing, Web-ISAPI-Ext, Web-ISAPI-Filter, Web-Lgcy-Mgmt-Console, Web-Metabase, Web-Mgmt-Console, Web-Mgmt-Service, Web-Net-Ext45, Web-Request-Monitor, Web-Server, Web-Stat-Compression, Web-Static-Content, Web-Windows-Auth, Web-WMI, Windows-Identity-Foundation

  3. Restart the server.



For Windows 2008:

  1. Open Windows PowerShell.
  2. Run the following command to load the Server Manager module.

    Import-Module ServerManager

  3. Run the following command to install the required Windows components.

        Add-WindowsFeature Desktop-Experience, NET-Framework, NET-HTTP-Activation, RPC-over-HTTP-proxy, RSAT-Clustering, RSAT-Web-Server, WAS-Process-Model, Web-Asp-Net, Web-Basic-Auth, Web-Client-Auth, Web-Digest-Auth, Web-Dir-Browsing, Web-Dyn-Compression, Web-Http-Errors, Web-Http-Logging, Web-Http-Redirect, Web-Http-Tracing, Web-ISAPI-Ext, Web-ISAPI-Filter, Web-Lgcy-Mgmt-Console, Web-Metabase, Web-Mgmt-Console, Web-Mgmt-Service, Web-Net-Ext, Web-Request-Monitor, Web-Server, Web-Stat-Compression, Web-Static-Content, Web-Windows-Auth, Web-WMI

  4. Restart the server


  7. Microsoft Unified Communications Managed API 4.0, Core Runtime 64-bit






   6. Restart the server

   7. Exchange 2013 Installation – Please follow the below link for the Exchange 2013 installation: Exchange 2013 SP1installation:

Imp: You can directly install Exchange 2013 CU1 as well. If you directly install CU1 then you can skip step 12 – Testing mailbox move without CU1. If you are installing CU2 make sure you are installing CU2 V2.

If you are doing new installation then you can directly install Exchange 2013 CU1 which itself is a full setup. You can follow same schema update and AD preparation steps.

After Exchange 2013 installation the biggest challenge will be how to login to the EAC, there is no mailbox on Exchange 2013 and redirection or proxy is not configured to use the existing Exchange admin user.

If you are trying to access EAC for the first time and your mailbox is on Exchange 2010, you need to use the URL in the format:


This is because in a co-existence scenario, your mailbox is still housed on the Exchange 2010 mailbox server, the browser will default to the Exchange Server 2010 ECP. Now if you want to access the Exchange 2010 ECP and your mailbox resides on an Exchange 2013 mailbox server, use the following URL:


Take a look at:

Working with EAC or Exchange administration center in Exchange 2013 – Part1:

So you need to create a mailbox to administer Exchange 2013. We will follow the below steps:

    1. Create a mailbox in Exchange 2013 mailbox database.
    2. “New-Mailbox –name 2013Admin –userPrincipalName –Database “2013 DBName””
    3. Run Get-mailboxdatabase to check the database name

      4. Give the permission to the mailbox to Administrate EAC.

               Add the following group membership:

                 Domain Admins

                 Schema Admins

                 Enterprise Admins

                 Organization Management

Test mailbox migration without CU1 for Exchange 2013

  1. Now, you should be able to login to EAC by going to the url https://localhost/ECP. If you will test the mailbox migration from Exchange 2010/2007 to Exchange 2013 before CU1 for Exchange 2013, it will be working but full co-existence will not work so it is a necessity to install CU1. As an example my Servers are mentioned below:



  2. EAC will show Databases from both the servers


  • Now I am migrating the mailbox being Exchange 2010/2007 on SP3 and Exchange 2013 without CU1.


Created new mailbox in Exchange 2010/2007, you can see 2013 database is not showing here


  • Database before move



  • I have moved the mailbox from Exchange 2013 EAC to Exchange 2013 database. Now click on migration to check the status



  • Now Refresh and you will see completed depends on the size of mailbox.



  • Check the Database name has changed



Continue the Exchange 2013 CU1 installation

       5. If you have not install CU1 version of exchange 2013 then this is the time to install Exchange 2013 Cumulative update 1 so that we avoid any co-existence issue. If you are doing new installation then you can directly install Exchange 2013 CU1 which itself is a full setup. You can follow same schema update and AD preparation steps mentioned in the Exchange 2013 installation article

Update 4/7/2014: Now – We can go for SP1 –

       6. Download the Exchange 2013 from the below link which is an Exchange 2013 setup with Cumulative update

       7. Install the Exchange 2013 CU 1 with the help of below link:


Configuring Exchange 2013 and network

  1. Transport Configuration
  2. Send connector

         1. Exchange 2013 reads exchange 2010/2007 send connector information. Click on the pencil icon to check and add exchange 2013 in the same send connector.

         2. Click on scoping and + icon to add the server


         3. Select the server and add, then click on and save. Send connector configuration completed.


     3. Receive Connector

        1. Add a receive connector as per the current connector configuration.

        2. Select the 2013 server, oh what we have 5 connectors for what. Let me explain here.

         3. You can see all 5 together here as I have CAS and Mailbox on same server. First 3 are for the CAS connector and remain 2 are for mailbox role.

         4. I would link to explain the transport pipe line here which consists of the following services:

             Front End Transport service – This service runs on all Client Access servers and acts as a stateless proxy for all inbound and outbound external SMTP traffic for the Exchange 2013 organization.  The Front End Transport service doesn’t inspect message content, only communicates with the Transport service on a Mailbox server, and doesn’t queue any messages locally.

             Transport service – This service runs on all Mailbox servers and is virtually identical to the Hub Transport server role in previous versions of Exchange. The Transport service handles all SMTP mail flow for the organization, performs message categorization, and performs message content inspection. Unlike previous versions of Exchange, the Transport service never communicates directly with mailbox databases. That task is now handled by the Mailbox Transport service. The Transport service routes messages between the Mailbox Transport service, the Transport service, and the Front End Transport service.

            Mailbox Transport service – This service runs on all Mailbox servers and consists of two separate services: the Mailbox Transport Submission service and Mailbox Transport Delivery service. The Mailbox Transport Delivery service receives SMTP messages from the Transport service on the local Mailbox server or on other Mailbox servers, and connects to the local mailbox database using an Exchange remote procedure call (RPC) to deliver the message. The Mailbox Transport Submission service connects to the local mailbox database using RPC to retrieve messages, and submits the messages over SMTP to the Transport service on the local Mailbox server, or on other Mailbox servers. The Mailbox Transport Submission service has access to the same routing topology information as the Transport service. Like the Front End Transport service, the Mailbox Transport service also doesn’t queue any messages locally.

(from TechNet)

5. Here are the details about the receive connectors

         When you install a Mailbox server running the Transport service, two Receive connectors are created. No additional Receive connectors are needed for typical operation, and in most cases the default  Receive connectors don’t require a configuration change. These connectors are the following:

          Default <server name>   Accepts connections from Mailbox servers running the Transport service and from Edge servers.

          Client Proxy <server name>   Accepts connections from front-end servers. Typically, messages are sent to a front-end server over SMTP.

          During installation, three Receive connectors are created on the Front End transport, or Client Access server. The default Front End Receive connector is configured to accept SMTP communications from all IP address ranges. Additionally, there is a Receive connector that can act as an outbound proxy for messages sent to the front-end server from Mailbox servers. Finally, there is a secure Receive connector configured to accept messages encrypted with Transport Layer Security (TLS). These connectors are the following:

          Default FrontEnd <server name>   Accepts connections from SMTP senders over port 25. This is the common messaging entry point into your organization.

          Outbound Proxy Frontend <server name>   Accepts messages from a Send Connector on a back-end server, with front-end proxy enabled.

         By default we don’t route the outgoing email to CAS. If we have some mailgaurd or compliance requirement on a separate CAS server then we can use it. If we have CAS and mailbox role on the  same server then we don’t need to configure this connector. We can simply disable it.


      Client Frontend <server name>   Accepts secure connections, with Transport Layer Security (TLS) applied.

  6. So we have to configure “Default Frontend Servername” connector which is accepting the emails on port 25. Yes this is very important when you have both role on one server then Frontend will be 25 and backend will be 2525


         7. You might need to check email address policies, this might needs to re-apply. If we have more than 3000 mailboxes then it is suggest applying from EMS.

         To understand the mailflow we can read the below article:


Exchange 2013 Certificates

Create a new Exchange certificate on Exchange 2013:

Certificates and CAS: Now this is the time when we need to focus on CAS certificate and ensure the CAS 2013 is reachable from internet. We have 2 options:

Use current certificate

For Export and import of the cert Please check here –

  1. Export the cert from Exchange 2010
  2. Import the cert to Exchange 2013
  3. Configure the external url. This is very simple in exchange 2013. You don’t need to go to every virtual directory property.
  4. Select the wrench mentioned below windows



                          5. Then this wizard will open, select the exchange 2013 server and give the external url and save it.

                        6. CAS Authentication will be “Use form-based authentication” on both Exchange 2013 and Exchange 2010/2007.

                              Now you will see every directory got the same External url.

Database availability Group

We would like to configure a DAG for high availability with multiple databases. So we have 2 options.

1. DAG with IP. Check the below link to create a DAG with IP


2. DAG without IP – This needs Exchange 2013 SP1 on Windows 2012 R2

Check the below link to create IP less DAG

Update Feb 2015: If you have 2 datacenters expanded DAG then now you can configure your FSW in Azure which means your DAG can be configurable to 3 Data center expanded automated DAG. This will allow you to completely shut down the data center without loosing production connectivity. Here is the link to configure FSW in Azure – Using a Microsoft Azure VM as a DAG witness server


Move Arbitration and Discovery Search mailboxes

Follow the below steps to move all arbitration and discovery search mailboxes to final 2013 database.

Open EMS with run as administrator and run the following cmds

Get‐Mailbox –Arbitration | New‐MoveRequest –TargetDatabase TargetDBName

Get-Mailbox “*Discovery*” | New‐MoveRequest  –TargetDatabase TargetDBName


Unified Messaging: Upgrade Exchange 2010 UM to Exchange 2013 UM

This is the optional step only for unified messaging configured organizations.

Please follow the below link to upgrade exchange 2010 UM to Exchange 2013 UM


Configure Enabled Outlook Anywhere

For Exchange 2007
Set-OutlookAnywhere -Identity “2010 CasServerNameRpc (Default Web Site)” -ClientAuthenticationMethod Basic -SSLOffloading $False -ExternalHostName -IISAuthenticationMethods {NTLM,Basic}

For Exchange 2010
Set-OutlookAnywhere -Identity “2010 CasServerNameRpc (Default Web Site)” -ClientAuthenticationMethod Basic -SSLOffloading $False -ExternalHostName -IISAuthenticationMethods NTLM, Basic


Configure OAB

Run the below command to configure OAB for all databases

Get-MailboxDatabase | Set-MailboxDatabase -OfflineAddressBook “Default Offline Address List (Ex2013)”

Default Offline Address List (Ex2013) can be replaced by your custom named OAB.

Enabling and Configuring Outlook Anywhere

For Exchange 2007
Get-ExchangeServer | Where {($_.AdminDisplayVersion -Like “Version 8*”) -And ($_.ServerRole -Like “*ClientAccess*”)} | Get-ClientAccessServer | Where {$_.OutlookAnywhereEnabled -Eq $False} | Enable-OutlookAnywhere -ClientAuthenticationMethod Basic -SSLOffloading $False -ExternalHostName -IISAuthenticationMethods NTLM, Basic

For Exchange 2010
Get-ExchangeServer | Where {($_.AdminDisplayVersion -Like “Version 14*”) -And ($_.ServerRole -Like “*ClientAccess*”)} | Get-ClientAccessServer | Where {$_.OutlookAnywhereEnabled -Eq $False} | Enable-OutlookAnywhere -ClientAuthenticationMethod Basic -SSLOffloading $False -ExternalHostName -IISAuthenticationMethods NTLM, Basic


SCP – Service Connection Point Configuration:

Run the below command to configure SCP on Exchange Management Shell of 2007/2010/2013 separately:

get-ClientAccessServer | Set-ClientAccessServer -AutoDiscoverServiceInternalUri https://autodiscover.domainname/autodiscover/autodiscover.xml

SCP might be already configured on 2007/2010 server so you can also check it and use the same -AutoDiscoverServiceInternalUri. Run the below cmd to get current SCP on 2013 Shell
get-ClientAccessServer | fl name,AutoDiscoverServiceInternalUri



Run the below cmd in EMS to allow auto forwarding, oof, auto reply and disable the possibility of winmail.dat from domino server.

Set-remoteDomain -AutoReplyEnabled $True -AutoForwardEnabled $True -TNEFEnabled $False -AllowedOOFType External 


If you have pop3/imap4 users then you might like to configure 2013 for some addition configuration.

1. Configure the Basic authentication on EAC for CAS 2013

2. Start the services and change them to automatic.


Email address policy:

You might need this step if you organization was initially created on Exchange 2003.

1. Create a new email address policy if there is only one “Default Policy”.

2. Change the attributes of existing email address policy by running the below cmd
Get-emailaddresspolicy | Set-EmailAddressPolicy -RecipientFilter “Alias -ne $null” -IncludedRecipients AllRecipients

3. If you see the below error for the default policy then Remove “Default Policy” which was created in 2003 and will be in ready only mode in Exchange 2013.

emailaddresspolicy error


Clean up health mailboxes:

When you remove default mailbox database, it does not remove health mailboxes which we can check by running the cmd and below warning will come. Health mailboxes are for the health service and they are specific for every database so we don’t need to move them rather we need to remove them.

                         Get-mailbox –monitoring

Mailboxes/HealthMailbox94863fe5394447619ec45c4e6b2dd971 has been corrupted, and it’s in an inconsistent state.

The following validation errors happened: WARNING: Database is mandatory on UserMailbox.


To fix this we need to delete user account in dsa.msc at yourdomain/Microsoft Exchange System Objects/Monitoring Mailboxes


Important: At the point configure your outlook for Exchange 2007/2010 mailbox and 2013 mailbox. If both are working from Internet then move to the next step.


CutOver :Updated 2007 part Feb 2015

Now it is the time to do cutover means point the connections to Exchange 2013. It can be done in few simple steps.

1. Create or change Public and Private DNS pointers.

a. will be pointing to the CAS 2010/2007 or Load balancer of CAS 2010/2007. So change the IP from  Exchange  2010/2007 to 2013. In case of new installation or exchange 2007 environment we need to create new host record in DNS. This will be done on both internal and external

b. (OWA/activesync/RPCoverhttp/mapioverhttp) Change the IP from Exchange 2010/2007 to Exchange 2013 CAS servers or Load balancer.

c. Create host record in case of exchange 2007 co-existence in both public and private DNS. This will point to Exchange 2007 CAS servers or  Exchange 2007 l0ad balancer CAS VIP.

2. Point your Spam Guard to forward all the emails to exchange 2013 to receive incoming mail via Exchange 2013.

3. Configure Spam Guard to accept emails from all Exchange 2013 Mailbox servers.

4. Configure all other application to send email to the Exchange 2013 Mailbox Servers.

5. Update PTR and SPF record if Exchange 2013 are sending the emails out directly.

6. In case of Exchange 2007, we need to update the following URLs and Authentications as well.

  • EWS – Run the below cmd on Exchange 2007 EMS

Get-WebServicesVirtualDirectory | Set-WebServicesVirtualDirectory -ExternalUrl -internalurl

  • OWA – Run the below cmd on Exchange 2007 EMS

Get-OWAVirtualDirectory | Set-OWAVirtualDirectory -ExternalUrl -internalurl

  •  OWA – Run the below command to change the authentication method in Exchange 2007 EMS

Get-owaVirtualDirectory -identity “CASName1OWA (Default web site)” | Set-OwaVirtualDirectory -ExternalAuthenticationMethods FBA,basic


Exchange 2013 Mailbox Migration

So what are we waiting for… Let us begin the mailbox migration.

  1. Now you can run the following cmdlet to move bulk or single mailbox

Get-Mailbox –Database “Exchange 2010/2007/2007 Database” –OrganizationUnit “DN of the OU” | New-Move Request –TargetDatabase “Exchange 2013 Database”

    2. You can monitor the migration by running the following cmdlet or going to the migration tab in EAC:


    3. Once completed it will show the below window

For Cross forest mailbox migration check this link:

Public Folder Migration

  1. Once we complete all mailbox migration then we can start the Public Folders migration.

    For Public Folder migration use the below Link:

  2. Test everything working and shutdown Exchange 2010/2007 server for 1 production week and observe if no issue reported then go ahead with the Exchange 2010/2007 removal process.


Known Issues:

Active Sync Config without Domain Name:

OWA redirection broken page and SSL: – This was fixed in CU3

If you have pop/imap user go for CU2:

Mailflow misconfiguration:

Certifacate and cryptographic provider Issue:


Legacy Removal

  1. Now we are in a position to remove exchange 2010. We can follow the below link for the exchange 2010/2007 removal.

Hit us with questions

Prabhat Nigam | MVP Exchange

Team @MSExchangeGuru

Keywords: Exchange 2010 to exchange 2013 migration, how to migrate to Exchange 2013

862 Responses to “Exchange 2010/2007 to 2013 Migration and Co-existence Guide”

  1. Kannan Says:


    I installed Exchange 2016 in 2010 environment as a coexistence scenario. I am not able to send out emails externally using 2010 HUB transport server. Able to receive internal emails and external . my mailbox is located in 2016 server. what is the reason?


  2. Prabhat Nigam Says:

    Do we have any NDR?

  3. Darrin Says:

    Silly question but I have seen differing answers and opinions….

    Can I install Exchange 2013 in to my 2010 environment and not make any DNS changes for a few days. (Do all testing via hosts file) and have it not affect my existing Outlook clients? I want to get all the certs in place, load balancer, databases created, permissions assigned…..

    I have seen where people said they were hitting the new 2013 cas servers even though they had not made any DNS changes.


  4. Prabhat Nigam Says:

    yes, this happens when you update the CAS urls. It goes in a loop if you have external url in both legacy and new exchange and they are same. So keep external null until you are ready for a cutover.

  5. David K Says:

    When moving mailboxes. To which database is it advised to move the Administrator mailbox? The system default or the custom created database?

  6. David K Says:

    When moving mailboxes to Exchange 2013 databases, where is it recommended to move the Administrator mailbox? The system default or the custom created databases?

  7. Prabhat Nigam Says:

    Custom created

  8. Tim Says:

    After I have completed all steps – I can login via web , however outlook will not connect

  9. Prabhat Nigam Says:

    This should not be the case. you need to point your autodiscover to 2013. check the connection status and share.

  10. Amit kumar Says:

    Hi Prabhat,

    This is indeed a very informative page. I am working on E2k10 to E2k13 migration. We have Exchange spread at 2 locations under same exchange organization. Recently, i am migrated one geo E2k10 to E2k13, This Exchange server having single URL for Exchange and having 30,000 users which went successfull.

    Now, In this Exchange having single url but having multiple smtp domains and multiplease autodiscover records pointing to OWA url.

    So far i did is added all autodiscover details in SAN certificate and procure new one. Next is installation and configuration of Exchange. My questions is how do i handle multiple smtp domains and what configurations i need to do on F5 & in Internal DNS.

    Please correct me ..
    1. Map all autoiscover with A / CNAME on public DNS.
    2. Set owa url in DNS records.
    3. In Exchange SCP would be\autodiscover\autodiscover.xml.
    4. in F5 load balancer create owa and multiple autodiscover records. This will help to reach out to respective mailboxes.??

    Please suggest … Thanks in Advance .. Amit kumar sinha.

  11. IM Says:

    Hi, in the section “Exchange 2013 Certificates” you said there are 2 options. One is to use current certificate, is the other option to create a new certificate? If we are creating new certificates, should we include mail, autodiscover and all the Exchange 2013 servers FQDN in the Subject alternate name?

  12. Prabhat Nigam Says:

    Yes, other option is new cert and you should all SAN names in it.

Leave a Reply

Notify me of followup comments via e-mail. You can also subscribe without commenting.

migrate exchange to office 365