Free Step by Step guide to migrate Exchange 2013 to 2019

First thing to see when migrating from Exchange 2013 are the requirement, limitations and co-existence. These are the important things to take note when migrating from Exchange 2013 to 2019. For this free guide we will assume that only one Exchange Server is installed.


In this case, if you are migrating from Exchange 2013 you would need the setup to have Cumulative Update 21 (CU21) or later installed and the Active Directory Servers must be hosted on Windows 2012 R2 Standard or Datacenter and higher with Windows Server 2012 R2 Active Directory forest functionality or higher. So if you still host Windows 2008 R2 domain controllers, you need to make sure that these are decommissioned prior to the installation and finally the migration.

 Exchange 2013 to 2019 Migration

One important thing to take note is that with Exchange 2019 we don’t have any Unified Messaging (UM) meaning that if you have Lync or Skype for Business Server you will lose the ability to save voicemail messages in your mailboxes and an alternative needs to be found like CX-E or Azure Voicemail on Office 365. Another thing to consider is clients as Outlook 2013 and higher are supported.

So let’s start by having out virtual machine or physical machine installed with specifically Windows Server 2019 standard or DataCenter. Microsoft recommends installing Exchange 2019 on Windows Server 2019 Core but the Desktop Experience feature is still supported, so it’s your choice at this stage. You cannot install it on any other operating system. If you will be installing the Management Tools on other machine you will need to install them on a Windows 10 64 bit edition. After doing all the updates possible the following are the requirements for installation.

Installation of pre-requisites is to have .NET Framework 4.7.2 or later, Visual C++ Redistributable Package for Visual Studio 2012 and 2013; and the Remote Tool Adminisration Pack and some other stuff. This can be done via PowerShell using the below command to install all pre-requisites.

Install-WindowsFeature NET-Framework-45-Features, RSAT-ADDS, 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

Before installing anything, let’s start by preparing inserting the Exchange Server 2019 media and running the below command to prepare the Schema and the AD.

Setup.exe /PrepareSchema /IAcceptExchangeServerLiscenceTerms
Setup.exe /PrepareAD /OrganizationName:”Contoso” /IAcceptExchangeServerLicenseTerms

Here we have prepared the Active Directory to be Exchange 2019 friendly and now we can start the installation. Before we start, make sure that no new updates are available for the pre-requisites we installed.

Open Setup.exe

Tick the box to Connect to the Internet and check for updates and click Next. After the introduction click Next.

On the Server Role Selection page make sure to tick Mailbox Role and Management Tools and click Next. Choose the location of the installation of the Exchange server and click Next (Make sure not to install Exchange on the system drive as it’s highly recommended).

On the Malware protection setting click No for now as this can be enabled in the future but for now we don’t need it. After the Readiness screen the installation will start and after finishing make sure again to see if any updates are available.

Setup the Service Connection Point (SCP)

The next step is to setup the Service Connection Point (SCP) which is an attribute on Exchange Server that is stored in the AD schema that directs domain-joined client computers using Outlook to the server using auto discover settings. By default it will change to the new server and we would need to stop users from connecting to the new server for now due to issues with certificates as the default with the installation is a self-signed one. This can be changed by running the PowerShell cmdlet Set-ClientAccessService –Identity ExchangeServer2013 –AutoDiscoverServiceInteralUri. This will point the users to the current server..

Import the Certificates

Now we need to import the Certificates to the new server. First we need to identify the certificates to move by using the PowerShell cmdlet

Get-ExchangeCertificate | fl Thumbprint,NotAfter,Issuer,CertificateDomains,Services.
 Exchange 2013 to 2019 Migration

This will give us a list of certificates along with the thumbprint and the services they are used for so we know the certificates and on what services to assign them to. On the Exchange 2013 server use the PowerShell cmdlet below to export the certificate for the Exchange 2019 server.

$CertPass = ConvertTo-SecureString "LetMeIn" -AsPlainText –Force
Export-ExchangeCertificate -Thumbprint C87C1CBA43733D177B2679BC825808C7BECC659B -FileName C:\temp\Exchange2013Certificate.pfx -Password $CertPass | Out-Null

Once done, keep a note of the password. Don’t worry as if you forget it you can always redo the above and use a new password. Copy the file to the Exchange Server 2019 and run the below in PowerShell

$CertPass = ConvertTo-SecureString "LetMeIn" -AsPlainText –Force
Import-ExchangeCertificate -FileName C:\temp\Exchange2013Certificate.pfx -PrivateKeyExportable $true –
Password $CertPass | Enable-ExchangeCertificate –Services POP,IMAP,IIS,SMTP –DoNotRequireSsl

This will import the certificate and assign it to the services of POP, IMAP, IIS and SMTP. The next step is to set the URLs for the internal and external access using Outlook Anywhere. On the Exchange 2019 run the below command for Outlook Anywhere, OWA, ECP, Web Services, ActiveSync, Offline Address Book and MAPI

Get-OutlookAnywhere -Server srvexc2019 | Set-OutlookAnywhere -InternalHostname -InternalClientAuthenticationMethod Ntlm -InternalClientsRequireSsl $true -ExternalHostname -ExternalClientAuthenticationMethod Basic -ExternalClientsRequireSsl $true -IISAuthenticationMethods Negotiate,NTLM,Basic
Get-EcpVirtualDirectory -Server srvexc2019 | Set-EcpVirtualDirectory -InternalUrl https://ex02/ -ExternalUrl
Get-OwaVirtualDirectory -Server srvexc2019 | Set-OwaVirtualDirectory -InternalUrl -ExternalUrl
Get-WebServicesVirtualDirectory -Server srvexc2019 | Set-WebServicesVirtualDirectory -InternalUrl -ExternalUrl
Get-ActiveSyncVirtualDirectory -Server srvexc2019 | Set-ActiveSyncVirtualDirectory -InternalUrl -ExternalUrl
Get-OabVirtualDirectory -Server srvexc2019 | Set-OabVirtualDirectory -InternalUrl -ExternalUrl
Get-MapiVirtualDirectory -Server srvexc2019 | Set-MapiVirtualDirectory -InternalUrl -ExternalUrl

So that these changes are in effect immediately we would need to recycle the Application Pool for MSExchangeAutodiscoverAppPool. To do this just open IIS, expand the server and click on Application Pools. Find the Application pool and click on Recycle.

 Exchange 2013 to 2019 Migration

DNS Records

Now that the URLs are changed it’s now time to point the DNS records to the new Exchange 2019 server by contacting your network team to see that any ports open and forwarded with NAT to the current Exchange 2013 are replicated to also point to the Exchange 2019. All open ports to the Exchange 2013 should be opened for the Exchange 2019. Any forwarding from outside to the inside should be changed to point to the Exchange 2019 server instead. It’s now the time to point the SCP record we set before to point to the Exchange 2019 rather than the 2013.

Here the users should be able to work by accessing the Exchange 2019 as their Exchange server while being redirected to the Exchange 2013 server as the location of their mailbox. It’s time to go round and work on the multi-function devices to point to the new Exchange 2019 Server and from the server setup the transport rules to allow the devices to be allowed to pass through it. You would need to make sure that the URL being used internally is also changed and propagated. Then it’s up to connecting one Outlook and checking that it’s connecting to the right Exchange Server by opening the Outlook Connection status.

Mailbox move from one server to another

The next step is to do the mailbox move from one server to another. This is done by creating a Migration batch job. Open the Exchange Admin and click on Recipients, Click on Migration and click the + sign and select move to a different database

 Exchange 2013 to 2019 Migration

Select the mailboxes to move and click Next

 Exchange 2013 to 2019 Migration

Then you can select to move everything or selective being the mailbox only or the archive mailbox only. Select the Target database for mail and archive and click next. You can select multiple mailboxes at once in a job depending on the volume and sizes.

Once all mailboxes have moved, you can go ahead and uninstall Exchange 2013 from the current server and after that you can decommission the server with it. Your Exchange Server migration is complete. Now with every migration and practically for any Exchange Setup it is also recommended to have the right tool like Stellar Converter for EDB for those moments you have those annoying issues and catastrophes during an installation, migration or day to day work. With EDB to PST Converter application you will be able to open an online or offline EDB file, export to PST, and export to another live Exchange Server or Office 365. You can download now and preview your Converted pst file free!!

Free download
  1. Rene November 22, 2020
    • Eric Simson November 24, 2020
  2. Neal Blackie July 23, 2020
  3. martin July 10, 2020
  4. Lucas Armer February 18, 2020
  5. Bruno D January 30, 2020
    • Eric Simson February 1, 2020

Leave a Reply

Your email address will not be published. Required fields are marked *

Time limit is exhausted. Please reload CAPTCHA.