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

 

As time goes on, we are being asked more and more to complete Exchange 2007/2010 migrations to Exchange 2013, below is a guide I have found that will work you through doing exactly that.

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

Exchange 2013 CAS Role Demystified: http://msexchangeguru.com/2013/05/22/exchange-2013-cas/
Exchange 2013 High Availability demystified: http://msexchangeguru.com/2013/05/23/e2013-ha-demystified/
Load Balancing Exchange Server 2013 – Good to know stuff: http://msexchangeguru.com/2013/06/05/load-balancing/
Public Folders Migration from Exchange 2007/2010 to Exchange 2013: http://msexchangeguru.com/2013/04/18/exchange2013-public-folders/
Upgrade from Exchange 2013 CU1 or RTM to CU2: http://msexchangeguru.com/2013/07/10/install-e2013-cu2/
Monitoring and troubleshooting Exchange using powershell: http://msexchangeguru.com/2013/07/23/monitoring-powershell/

Preparing Exchange 2010/2007

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

    http://support.microsoft.com/?kbid=2550886

  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:

    http://www.microsoft.com/en-us/download/details.aspx?id=36768

  4. Check the below link for SP3 installation steps

    http://msexchangeguru.com/2013/04/03/exchange-2010/2007-sp3/

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)  http://msexchangeguru.com/2013/08/14/windowsnlb/

  5. For Active Directory preparation check the “step 3 preparing active directory” at the blog mentioned below:       http://msexchangeguru.com/2013/04/29/install-e2013/
  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.

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

    http://www.microsoft.com/en-us/download/details.aspx?id=34992

  5. Microsoft Office 2010/2007 Filter Pack 64 bit: Optional

    http://www.microsoft.com/en-us/download/details.aspx?id=17062

  6. Microsoft Office 2010/2007 Filter Pack SP1 64 bit: Optional

    http://www.microsoft.com/en-us/download/details.aspx?id=26604

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

  5. Microsoft .NET Framework 4.5

    http://msdn.microsoft.com/en-us/library/5a4x27ek(VS.110).aspx

  6. Windows Management Framework 3.0

    http://www.microsoft.com/en-us/download/details.aspx?id=34595

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

    http://www.microsoft.com/en-us/download/details.aspx?id=34992

  8. Microsoft Office 2010/2007 Filter Pack 64 bit: Optional

    http://www.microsoft.com/en-us/download/details.aspx?id=17062

  9. Microsoft Office 2010/2007 Filter Pack SP1 64 bit: Optional

    http://www.microsoft.com/en-us/download/details.aspx?id=26604

  10. Microsoft Knowledge Base article KB974405 (Windows Identity Foundation)

    http://support.microsoft.com/?kbid=974405&wa=wsignin1.0

  11. Knowledge Base article KB2619234 (Enable the Association Cookie/GUID that is used by RPC over HTTP to also be used at the RPC layer in Windows 7 and in Windows Server 2008 R2)

    http://support.microsoft.com/?kbid=2619234

  12. Knowledge Base article KB2533623 (Insecure library loading could allow remote code execution)

    http://support.microsoft.com/?kbid=2533623

   6. Restart the server

   7. Exchange 2013 Installation – Please follow the below link for the Exchange 2013 installation: http://msexchangeguru.com/2013/04/29/install-e2013/or Exchange 2013 SP1installation: http://msexchangeguru.com/2014/03/02/e2013sp1-installationupgrade/

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.

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:

https://Exchange2013ServerName/ecp?ExchClientVer=15

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:

https://Exchange2010ServerName/ecp?ExchClientVer=14.

Take a look at:

Working with EAC or Exchange administration center in Exchange 2013 – Part1: http://msexchangeguru.com/2013/01/16/eac-exchange-2013/

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 2013Admin@domain.com –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 – http://msexchangeguru.com/2014/03/02/e2013sp1-installationupgrade/

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

http://www.microsoft.com/en-us/download/details.aspx?id=38176

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

http://msexchangeguru.com/2013/04/15/e2013-cu1-2/

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    Accepts connections from Mailbox servers running the Transport service and from Edge servers.

          Client Proxy    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    Accepts connections from SMTP senders over port 25. This is the common messaging entry point into your organization.

          Outbound Proxy Frontend    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    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: http://msexchangeguru.com/2012/08/09/e2013-mailflow/

Exchange 2013 Certificates

Create a new Exchange certificate on Exchange 2013: http://msexchangeguru.com/2013/01/18/e2013-certificate/

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 – http://msexchangeguru.com/2013/06/29/import-cert-e2013/

  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.

                       8. Switch namespace to Exchange 2013 CAS or Exchange 2013 CAS pool load balancer. This can be simply done by changing SNAT internal IP from Exchange 2010/2007 to Exchange 2013. Also Point the internal mail and autodiscover IP to Exchange 2013 CAS server/load balancer.

                       9. Time to test OWA connectivity from internet. At this time I am able to access owa for the users in both Exchange 2013 and 2010. I am also able to send and receive then emails.

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

http://msexchangeguru.com/2013/01/17/e2013-dag/

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

Check the below link to create IP less DAG

http://msexchangeguru.com/2014/03/21/e2013sp1-ip-less-dag/

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

http://technet.microsoft.com/en-us/library/dn169226(v=exchg.150).aspx

Configure Enabled Outlook Anywhere

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

For Exchange 2010
Set-OutlookAnywhere -Identity “2010 CasServerNameRpc (Default Web Site)” -ClientAuthenticationMethod Basic -SSLOffloading $False -ExternalHostName webmail.domainname -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 $Exchange2013HostName -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 $Exchange2013HostName -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

RemoteDomain:

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

Pop/IMAP:

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

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

1. Create or change DNS pointers to Exchange 2013.

autodiscover.domain.com will be pointing to the CAS 2010 or Load balancer of CAS 2010. So change the IP from  Exchange  2010 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

mail.domain.com Change the IP from Exchange 2010/2007 to Exchange 2013 CAS servers or Load balancer.

Legacy.domain.com this host record is only required in case of exchange 2007 co-existence. This will point to Exchange 2007 CAS servers or lad balancer.

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

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:

       Get-MoveRequest

    3. Once completed it will show the below window

For Cross forest mailbox migration check this link: http://msexchangeguru.com/2013/11/02/e2013crossforestmigration/

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:

    http://msexchangeguru.com/2013/04/18/exchange2013-public-folders/

  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: http://msexchangeguru.com/2013/08/06/e2013mobiledomain/

OWA redirection broken page and SSL: http://www.expta.com/2013/05/owa-2013-cu1-redirection-is-broken-for.html

If you have pop/imap user go for CU2: http://msexchangeguru.com/2013/08/04/e2013popimapauth/

Mailflow misconfiguration: http://msexchangeguru.com/2013/08/03/e2013-2010mailflowissue/

Certifacate and cryptographic provider Issue: http://msitpros.com/?p=1770

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.

    http://msexchangeguru.com/2013/09/01/e20102007decomposte2013mig/

Advertisements

One comment on “Exchange 2010/2007 to 2013 Migration and Co-existence Guide

  1. Great, thanks for sharing the helpful these step to migrate exchange 2010/2007 to 2013 and migrate the entire or selected mailbox data to Exchange Online from your Exchange server. But I tried the automate exchange migrator tool from http://www.lepide.com/exchangemigrator/ that provides the facilitate to migrate to-and-fro between exchange server and complete migration including all or chosen items of user mailboxes and allows to migrations of Intra-forest and cross forest exchange server.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s