Monday, 7 December 2015

Exchange 2013 to 2016 Migration (Part 1)

Introduction


In this multi-part series, we’ll cover how to upgrade from Exchange 2013 to Exchange 2016. This will include setting up a CAS co-existence scenario, migrating mailboxes and services then eventually decommissioning the Exchange 2013 server. 

At the time of writing, Microsoft have not yet updated the Exchange Deployment Assistant with instructions to migrate from Exchange 2013 to 2016 however there have been numerous blogs released about CAS coexistence which have helped write this article.

To read other parts in this series, go to:

Lab environment


In this lab, we have a single Exchange server called litex01 in the litwareinc.com domain which is running Exchange 2013 CU10. All clients connect using the name mail.litwareinc.com. We’ll install an Exchange 2016 server called litex02.


Exchange 2013 to 2016 Migration Overview


First of all, we’ll make a list of tasks that we’ll go through to migrate to Exchange 2016. We’ll just list these here then will go through the steps.

  1. Upgrade all Exchange 2013 servers to CU10 or later. This is a requirement before you can install Exchange 2016 in your environment. We won’t cover this in this post but it is here just for completeness.
  2. If you have any Exchange 2010 servers in your environment, these need to either be decommissioned or upgraded to SP3 UR11 or later. This won’t be covered in this post as we’ll focus more on the migration between 2013 and 2016.
  3. Decommission any Exchange 2007 servers. These are simply not supported in an Exchange 2016 environment. Again, we won’t cover this in this post.
  4. Check that you meet the pre-requisites to install Exchange 2016 in your environment.
  5. Install Exchange 2016 in your environment
  6. Configure the Service Connection Point on the Exchange 2016 server
  7. Install the required SSL certificate on the Exchange 2016 server
  8. Configure Exchange 2013 – 2016 CAS coexistence. There are different methods to do this. We’ll talk about them briefly and then I’ll demonstrate one of them briefly.
  9. Move mailboxes to Exchange 2016
  10. Move public folder mailboxes to Exchange 2016
  11. Migrate mail flow to Exchange 2016
  12. Decommission the Exchange 2013 server



Preparation


Firstly, we’ll check that we meet the requirements for Exchange 2016 to be installed in our environment. System requirements can be found here: https://technet.microsoft.com/en-us/library/aa996719(v=exchg.160).aspx. Have a read and make sure that you meet these requirements.

The next step in our preparation is to read the release notes as this ensures you don’t have problems down the line. See here: https://technet.microsoft.com/en-us/library/jj150489(v=exchg.160).aspx.

Size up your server correctly. This ensures that you have enough RAM, CPU and storage resources available for your server to perform correctly. Essentially, Exchange 2016 is sized the same as an Exchange 2013 multirole server but requires additional compute resources. See here for more information: http://blogs.technet.com/b/exchange/archive/2015/10/15/ask-the-perf-guy-sizing-exchange-2016-deployments.aspx.

Check that your clients are supported. Windows clients need Outlook 2010 with KB2965295, Outlook 2013 or Outlook 2016. As for Mac clients, you need Outlook for Mac 2011 or Outlook for Mac for Office 365. Upgrade your clients if needed. You’ll note here that Outlook 2007 was supported for Exchange 2013 but is no longer supported for Exchange 2016. The same is for Entourage 2008 for Mac.

Now that all the reading is out the way, (if you didn’t read it, shame on you!), we can start building the new Exchange 2016 server. Build your server and install a supported OS (either Server 2012 Standard or Datacenter or Server 2012 R2 Standard or Datacenter). In this case, we’ll use Server 2012 R2. Once installed, join to your domain and install windows updates.


Install Exchange 2016


Once you've gone through the preparation steps above, it's now time to install Exchange.
The recommendation from Microsoft for Exchange 2013 was to install multi-role servers but with Exchange 2016, the CAS and MBX roles have been merged so installing multi-role servers is no longer possible.

Assign correct permissions


For the first Exchange server in the organization, the user that performing the install must be a member of the Enterprise Admins and Schema Admins group in AD and a member of the local admins group on the server you are installing Exchange on.

We'll now go on to install the pre-requisites for Exchange 2016.



Install .Net 4.5.2


Install .Net 4.5.2 from here. Accept the license terms and click install:






Install Windows Management Framework 4.0


If you are not using Server 2012 R2 then you also need to install the Windows Management Framework 4.0. In our case we are using Server 2012 R2 so this is not required.


Install the Unified Messaging Communications Managed API 4.0 Runtime


Download the UMCM API from here and install as below:








Install the required Windows features


Use the below command to install the required Windows features. This command needs to be run on a single line and run from a PowerShell window with elevated privileges. Those who can remember extremely long PowerShell strings will note that this is the same list of features required for Exchange 2013.


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,RSAT-ADDS





The AD tools are included in the above command - this prevents issues with AD operations and the EXSetup program.



Download Exchange 2016


Download Exchange 2016 from here or the latest Exchange CU. The Cumulative Update includes the entire Exchange package. There is no need to install Exchange then install the CU.


image


Once downloaded, double click to extract Exchange.

image

Select a location to extract the files to. In this demo, we're extracting to C:\temp\Exchange2013-x64-cu10.


image

image






Run Exchange Setup


Once extracted, open up the location you have extracted to and double click on Setup.exe:

image

image

image

image

image

image

image

image

image

image

image

image

image

image


You should then be presented with a window to report a successful installation.



Confirm the installation was successful


To do this, run the command below. This will list all the Exchange servers, their roles and version. Check that your new Exchange server is listed with all the required roles.
Get-ExchangeServer


image

Also, review the setup log for any issues. This log file is C:\ExchangeSetupLogs\ExchangeSetup.log.

Configure the Service Connection Point


The Service Connection Point (SCP) is an attribute on the Exchange server object stored in AD which directs domain-joined Outlook clients to a URL to retrieve autodiscover settings. By default this is the FQDN of the server, e.g. https://litex02.litwareinc.com/autodiscover/autodiscover.xml. You need to change this immediately to stop Outlook clients connecting to it and getting a certificate warning when they are presented with the default self-signed certificate that is installed by Exchange. We’ll configure the SCP to reference our Exchange 2013 endpoint, in this case https://mail.litwareinc.com/autodiscover/autodiscover.xml:

Set-ClientAccessService -Identity litex02 -AutoDiscoverServiceInternalUri https://mail.litwareinc.com/autodiscover/autodiscover.xml

image

Conclusion


At the end of the first part, we’ve now prepared for and installed Exchange 2016 into our Exchange 2013 environment and configured the SCP. In the next post, we’ll install an SSL certificate on Exchange 2016 and configure Exchange 2013 – 2016 coexistence which prepares us for the mailbox migration. Click here for part 2.

32 comments:

  1. Great, thanks for creating this article, it provides complete information about migrate exchange 2013 to exchange 2016, but i tested this solution ( http://www.lepide.com/exchangemigrator/ ) which migrates any exchange server to exchange server 2016 or office 365 and provide facility to migrate mailbox and public folder data from any exchange server to another exchange server.

    ReplyDelete
    Replies
    1. Here is a tool that helped us in successful migration of mailboxes from Exchange 2013 to Exchange 2016 server with full accuracy and formats: http://www.recover-computerdata.com/exchange-server-recovery.html

      This easy to use solution not only helps in migration but also in recovery of lost/damaged mailboxes.

      Good Luck!
      - Jerry

      Delete
  2. I get this error when running the step "Run Exchange Setup":

    A previous version of Exchange Server is already installed on this computer. Run Exchange Server 2016 Setup from a different computer or remove the previous version of Exchange Server.

    ReplyDelete
    Replies
    1. This comment has been removed by the author.

      Delete
    2. I'm done with Exchange server 2013 to 2016 mailboxes migration. Actually I already had a mailbox migration tool called Stellar mailbox extractor (for you reference: http://www.stellarservertools.com/extract-exchange-mailbox.php ) which did the migration without any hassle, so I haven't tested these migration steps in my lab yet. BTW, I appreciates the hard work of author for posting for such a knowledgeable and wonderful post. It will help all Exchange administrators (me too) who're planing to migrate mailboxes from current Exchange 2013 server environment to 2016.

      Absolutely great stuff!!

      Best,
      Patrick Wood

      Delete
    3. This comment has been removed by the author.

      Delete
  3. Wanted to note, you need to run the powershell install command first before you run the Microsoft UCM 4.0 install. When I tried running the UCM first, it gave me an error that media foundations wasn't installed on my server.

    ReplyDelete
  4. You're also forgetting to run the commands off the install disk on one of your AD servers:
    Setup.exe /PrepareSchema /IacceptExchangeServerLicenseTerms
    Setup.exe /PrepareAD /IacceptExchangeServerLicenseTerms

    ReplyDelete
    Replies
    1. This isn't actually necessary. It's good practice to do this first, but these commands will run automatically during the setup.

      Delete
  5. I can´t run the Set-ClientAccessService cmdlet, i get the following error:
    The operation couldn´t be performed because object 'xxx' couldn´t be found on 'domain'

    ReplyDelete
    Replies

    1. Set-ClientAccessSeRVER -Identity litex02 -AutoDiscoverServiceInternalUri https://mail.litwareinc.com/autodiscover/autodiscover.xml

      Delete
  6. Hi, Very nice description about StudentsOffice 365 Migration
    I like your web blog.Because whenever i come into your web blog
    then i always get the new interesting and important information in your web blog.

    Thank You

    Office 365 Migration

    ReplyDelete
  7. Very well written blog about the window migration services.I appreciate your hard work. Thanks.
    windows 8 to 10 migration
    windows 10 packaging

    ReplyDelete
  8. from someone who has done a lot of exchange migration you hit all the bases, this is helpful. thanks!

    ReplyDelete
  9. I think the classiest thing you have done here Mark Gossa is create some visually stunning , but kept it highly accessible too - truly progressive. Lovely stuff! Office365

    ReplyDelete
  10. Best Exchange guide I have ever had the pleasure to reference. Top notch mate!!!

    ReplyDelete
  11. Thanks for sharing this information to perform migration step by step via powershell command, I also tested this exchange migrator tool ( https://softcart.wordpress.com/exchange-server-migration/ ) that helps to directly migrate from any exchange server to exchange server

    ReplyDelete
  12. Great, thanks for sharing the post and it describes how to migrate Exchange 2013 to 2016 . I searched a automated solution ( www.edbtopstfile.com) for doing this an eaisest way.

    ReplyDelete
  13. Hi. I have an Exchange 2013 SP1 (CU4) installed and in production on a Windows Server 2016.

    Now I need to migrate to Exchange 2016 but for that I need to install Exchange 2013 CU 10 to support the migration but seems that the link is no longer available in Microsoft and CU19 is not supported by Windows Server 2016.

    Can anyone please give me an available link?

    Thank you
    Ricardo Gomes

    ReplyDelete
    Replies
    1. Hi Ricardo, it looks like you're in an unsupported scenario as Exchange 2013 isn't supported on Server 2016. See here - https://technet.microsoft.com/en-us/library/aa996719(v=exchg.150).aspx#Operating%20system. I think the best way to get out of this situation is to build a new Exchange 2013 CU19 server on Server 2012 R2 and move mailboxes to that then migrate to Exchange 2016 on a new Server 2016 server.

      Delete
    2. Hi Mark. Thanks for your reply.
      Yes I noticed that.
      In the current scenario there is any way to get the download link of the Exchange 2013 CU10 ?
      As I've seen CU10 would still work in Windows 2016 and would give me the possibility to do the migration to Exchange 2016.

      Delete
    3. Hi Ricardo, I'm not sure if you can still download CU10 as it's no longer a supported build of Exchange 2013 however if you manage to find it and install it on Server 2016, you may have other problems with Exchange or you may have problems when you come to migrate to Exchange 2016. It's best to migrate to a supported scenario first then migrate to Exchange 2016. Mark

      Delete
  14. Hi Mark.
    About moving from Exchange 2013 to another Exchange 2013. This step by step is similar to the migration of 2013 to 2016? Or there is an specific step by step for 2013->2013 ?

    Thank you
    Ricardo

    ReplyDelete
    Replies
    1. Hi Ricardo, yes the process is pretty much the same. Thanks. Mark

      Delete
    2. Hi Mark.

      About the step:

      Set-ClientAccessService -Identity litex02 -AutoDiscoverServiceInternalUri https://mail.litwareinc.com/autodiscover/autodiscover.xml

      How can I check which is the current value of this parameter before run the above comand?

      Thank you
      Ricardo

      Delete
    3. For check the current value the command is:
      Get-ClientAccessServer |fl identity,autodiscoverserviceinternaluri

      In Exchange 2013 the Set command is:
      Set-ClientAccessServer -Identity litex02 -AutoDiscoverServiceInternalUri https://mail.litwareinc.com/autodiscover/autodiscover.xml

      Delete
  15. OK I'm trying this. Been doing Exchange since Exchange was born, and actually was flown out to Redmond to be part of the initial SBS way back in the day. But up to this point my clients have all been smaller places, so migration was easy, could move mailboxes over a night or weekend, then change inbound firewall rules to go to new server, and rekey the SSL with the new REQ on the new server using the same names. Never had to worry about external working during the changeover as it was quick. Now I've got a couple large sites with too much data to do quickly, so I've done the first few steps here and am testing. So before I actually make the changes to their public DNS, I want to make sure I have the flow right. So I've got both servers running, am mid way on page 4 of your guide here, I can move mailboxes between them just fine, internally outlook clients simply point to whatever one it's been moved to without any issues. I've done the same FQDN for the virtual directories on the new server (remote.domain.com) and copied the SSL over and that is fine when I connect from outside (currently spoofing DNS with a host entry on my PC on my work network). We have OWA and smart phone clients, so from my testing, looks like my next step is simply changing the firewall to point SSL and all the SMTP ports to the new 2016 server. Names aren't changing so DNS doesn't have to be touched. I've spoofed a new IP for testing and verified my mailbox on the old server is accessible via both OWA and my iPhone via activesync when the ports are inbound from the public internet to the 2016 server - it's proxying everything just fine. So that's really it? I can make those firewall changes and all the existing people on the old server will keep mail flowing for PC's, laptops, phones, etc, with the new server proxying everything from the old server's database? Then as I move people to the new, it'll simply be on the new server, not proxied and no further changes needed as far as clients go? Seems almost too simple and too logical. :) Thanks!

    ReplyDelete
  16. Nice Explainer on 2013 to 2016 migration! I've had good experience with EdbMails Edb to PST recovery tool - which can easily migrate dismounted exchange databases from 2013 server to live exchange 2016. It is quick and uses deep scan to recover most data out of even corrupted databases.It supports public, private folder recovery. And also supports migration to Live exchange and Office 365. Archive mailbox migration is also supported by edbmails

    ReplyDelete
  17. Hi. I've having some problems with my Exchange 2016 CU8.
    In some Outlook clients appear the message that is updating the address book "forever". I think this started happening after the deletion of some active directory users like the user "DiscoverySearchMailbox".
    I tried to recreate that user and mailbox but the problem persists.
    Maybe some other necessary mailboxes where deleted.


    Now I am trying to install another Exchange 2016 and migrate for that hopping that solves the problem but I am getting the following error during setup and it not complete.

    Error:
    The following error was generated when "$error.Clear();
    if ( ($server -eq $null) -and ($RoleIsDatacenter -ne $true) )
    {
    Update-RmsSharedIdentity -ServerName $RoleNetBIOSName
    }
    " was run: "Microsoft.Exchange.Management.Tasks.RmsSharedIdentityUserNotFoundException: RMS Shared Identity user FederatedEmail.4c1f4d8b-8179-4148-93bf-00a95fa1e042 not found.
    at Microsoft.Exchange.Configuration.Tasks.Task.ThrowError(Exception exception, ErrorCategory errorCategory, Object target, String helpUrl)
    at Microsoft.Exchange.Configuration.Tasks.Task.WriteError(Exception exception, ErrorCategory category, Object target, Boolean reThrow)
    at Microsoft.Exchange.Management.Deployment.UpdateRmsSharedIdentity.Link()
    at Microsoft.Exchange.Management.Deployment.UpdateRmsSharedIdentity.InternalProcessRecord()
    at Microsoft.Exchange.Configuration.Tasks.Task.b__91_1()
    at Microsoft.Exchange.Configuration.Tasks.Task.InvokeRetryableFunc(String funcName, Action func, Boolean terminatePipelineIfFailed)".

    Anyonee had some issues like this.
    Any help will be great

    ReplyDelete
  18. When I insert the command Get-Mailbox - Arbitration I did not get any result.

    Any tips how to recreate the necessary mailboxs?

    Thank you

    ReplyDelete