Monday, March 9, 2015

Exchange 2010/2007 to 2013 Migration


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.
  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)  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.
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 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: 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:
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: 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
       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: 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

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 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 :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. autodiscover.domain.com 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. mail.domain.com (OWA/activesync/RPCoverhttp/mapioverhttp) Change the IP from Exchange 2010/2007 to Exchange 2013 CAS servers or Load balancer.
c. Create Legacy.domain.com 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 https://legacy.Domain.com/EWS/Exchange.asmx -internalurl https://legacy.Domain.com/EWS/Exchange.asmx
  • OWA – Run the below cmd on Exchange 2007 EMS
Get-OWAVirtualDirectory | Set-OWAVirtualDirectory -ExternalUrl https://legacy.Domain.com/OWA -internalurl https://legacy.Domain.com/OWA
  •  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:
       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:
  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 – This was fixed in CU3
If you have pop/imap user go for CU2: http://msexchangeguru.com/2013/08/04/e2013popimapauth/
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.