Migrating a small organization from Exchange 2010 to Exchange 2016 (Part 6)

If you would like to read the other parts in this article series please go to:

Migrating the Pilot Group

Before migrating mailboxes en-mass to Exchange 2016, it’s important to validate that you’ve had an opportunity to identify any issues that using and moving test mailboxes didn’t expose.

First we will select a pilot group of users to migrate to Exchange Server 2016. They should provide feedback on any issues they encounter, and will represent a cross-section of end-users; for example users that are heavy mobile users, those that are primarily external users and those that regularly use features like shared calendars and delegation.

Many smaller organizations will find most pilot candidates within the IT department, but if you have users who are keen to be early adopters outside of IT, then you’ll get a better representation of real issues.

Migrating Mailboxes

When migrating mailboxes from Exchange 2010 to Exchange 2016, we’ve got a number of methods that can be used to migrate mailboxes in large numbers.

The first method applies if you have created equivalent databases to match your source Exchange 2010 environment. For each database, you can queue up mailboxes to be moved using the following command:

Get-Mailbox -Database <Database> | New-MoveRequest -TargetDatabase<Database_E2016> -BatchName <Database>

Image

Figure 1: Creating new move requests

If you are using traditional backups on your Exchange 2016 server then take into account the impact of log file usage when determining the batch sizes.

When a mailbox is moved, log files consuming the same amount of space as the mailbox itself are generated. This means that you can only move as many mailboxes as log space allows in between regular backup jobs.

You can mitigate against this by either performing additional incremental backups during mailbox migrations; or temporarily turning on circular logging.

We can keep track of the migrations using the Exchange Management Shell by calling the Get-MoveRequest cmdlet, again specifying the BatchName; then piping the output to Get-MoveRequestStatistics to gain a detailed insight into our current batch of migrations:

Get-MoveRequest -BatchName "<Database>" | Get-MoveRequestStatistics

Image

Figure 2: Monitoring move requests from PowerShell

If you’d prefer to use the Exchange Admin Center rather than PowerShell to co-ordinate the migration, then consider using the migration batches, as shown during our test mailbox moves.

Figure 3: Using the EAC interface to the New Migration Batch cmdlets

Use the New Migration Batch wizard to select mailboxes from the Global Address List, as shown below:

Image

Figure 4: Adding mailboxes to the new migration batch

After creating and starting a migration batch via the Exchange Admin Center, we can examine the progress of those moves by selecting the migration batch from the list, and then choosing View Details:

Image

Figure 5: Viewing the list of Migration Batches

We’ll then be presented with a list of all mailboxes within the batch, each of which can be selected and the full status available for detailed examination:

Image

Figure 6: Monitoring progress of a Migration Batch

Either of these two methods is equally effective, and whichever you use is down to which ever method makes most sense within your organization.

After performing migrations of end users you can verify that no additional mailboxes remain on Exchange 2010, using the following command at the Exchange 2016 Management Shell:

Get-Mailbox -Server <Server>

If any mailboxes do remain, then pipe the results of the command to the New-MoveRequest cmdlet as a new migration batch, for example:

Get-Mailbox -Server <Server> | New-MoveRequest -BatchName "Remaining Mailboxes"

We’ll also need to move the system mailboxes from Exchange 2010. We’ll find these by using the Get-Mailbox cmdlet with the –Arbitration parameter:

Get-Mailbox -Server <Server> -Arbitration

You’ll expect to see a couple. Move them to Exchange 2016 using the New-MoveRequest cmdlet again:

Get-Mailbox -Server <Server> -Arbitration | New-MoveRequest

After all mailbox moves from the Exchange 2010 server are complete, remove the mailbox move requests from Exchange 2016.

To remove successfully completed move requests, use the Remove-MoveRequest cmdlet in combination with the output of Get-MoveRequest:

Get-MoveRequest -MoveStatus Completed | Remove-MoveRequest

Image

Figure 7: Removing completed move requests

If you opted to use the Migration Batch method then you can remove it via the Exchange Admin Center by viewing the batch, and then if it is complete, hitting the Delete button:

Image

Figure 8: Removing a completed batch

Decommissioning Exchange 2010

Getting ready to decommission Exchange 2010

By this point, we should be safe to remove Exchange 2010 from the environment. Earlier in the series we moved inbound and outbound mail flow to Exchange 2016, moved client access across; and we have just completed migrating all Mailboxes over to Exchange 2016.

Before removing the staging server, it’s important to verify that these servers are definitely no longer used. For example, if you have devices that use the Exchange 2010 server for SMTP relay, double check that all these devices have been updated to use the Exchange 2016 server.

Also double check you’ve implemented and migrated mail flow. We’ll need to verify that both Inbound and Outbound mail (via Receive and Send Connectors respectively) is configured to flow via Exchange 2016 only.

After checking that mail flow should no longer be configured to flow through the Exchange 2010 infrastructure, we should be ready to remove Exchange 2010 completely. To ensure that this is definitely the case, shut down the Exchange 2010 server and leave switched off for a reasonable period of time (for example, a week) to ensure that should anything have been missed the Exchange 2010 server can be started up and anything that wasn’t originally identified migrated.

Removing unused Offline Address Books

We’ll start off with a relatively simple task, removing the old default Offline Address Book.

As part of the installation of Exchange 2016, a new Offline Address Book was created and set as the default. This will have the suffix (Ex2013) signifying it is created by Exchange 2013 or above.

We’ll remove the old Exchange 2010 one by opening the Exchange Management Console and navigating to Organization Configuration>Mailbox and then within the Offline Address Book tab selecting the original address book, with the Generation Server specified as the old Exchange 2010 server. Simply choose Remove:

Image

Figure 9: Removing obsolete Offline Address Books

Removing Databases

In our example organization we do not use Public Folders, therefore we only have one type of Database we need to remove from our Exchange 2010 – Mailbox Databases.

Before we press ahead and remove the databases, we’ll need to double check that all mailboxes have been moved to Exchange 2016.

To verify all mailboxes have been removed from our Exchange 2010 server, we’ll use the following commands:

Get-Mailbox -Server <ServerName>
Get-Mailbox -Server <ServerName> -Arbitration
Get-Mailbox -Server <ServerName> -Archive

After verifying that no mailboxes exist on the server, we’re ready to remove the databases. As part of this process Exchange 2010 will double check that no mailboxes exist. It will not allow the removal of databases that contain mailboxes.

We’ll use the following PowerShell command from our Exchange 2010 server to first get a list of the databases:

Get-MailboxDatabase –Server <ServerName>

After confirming that the command is showing the correct databases, remove the Mailbox Databases using the following command;

Get-MailboxDatabase –Server <ServerName> | Remove-MailboxDatabase

Uninstalling Exchange 2010

With Mailbox Database configuration removed we can now uninstall Exchange Server 2010.

To do this, navigate to Programs and Features, within the Control Panel and choose Uninstall after selecting Microsoft Exchange Server 2010 from the list of installed applications:

Image

Figure 10: Uninstalling Exchange 2010

The Exchange Setup application is used for the uninstallation process, much like it was used for the original installation. When prompted, we’ll therefore unselect each Exchange Role installed, for example Client Access, Hub Transport and Mailbox.

Additionally, we’ll choose to uninstall the Management Tools – which includes the Exchange Management Console and Exchange Management Shell:

Image

Figure 11: Uninstalling all components of Exchange 2010

After choosing Next, Exchange Server Setup will perform checks to ensure that we’re actually ready to uninstall. After moving Send Connectors earlier in this series and performing the tasks in this article, we’ll expect each readiness test to complete successfully, allowing us to choose Uninstall:

Image

Figure 12: Verification of successful uninstallation

After choosing Uninstall we’ll expect the setup program to continue with removal of Exchange 2010. After it completes successfully the server can be decommissioned, and the server removed from the domain.

Summary

In this six-part series we’ve walked through a straightforward migration to Exchange 2016 from Exchange 2010. If you had experienced migrations between previous versions you will have seen that in comparison, the Exchange 2016 migration process is relatively straightforward.

If you would like to read the other parts in this article series please go to:

33 thoughts on “Migrating a small organization from Exchange 2010 to Exchange 2016 (Part 6)”

    1. Hiya,

      We have other public folder migration articles on the site that can be used in combination – As this was already a multi-part series, I didn’t want to make things too repetitive.

      Steve

    1. Hello,

      During migration a user shouldn’t see any noticeable effects as the migration can be performed online. Once the migration completes, they will be prompted to re-start Outlook. However, there is a small amount of time that the client will be disconnected straight after the move completes, so I recommend completing moves out of hours.

      Steve

  1. Best step-by-step for an Exchange migration I have found yet. Just completed a 2010 to 2016 migration following this process and it could not have gone smoother. Thanks for taking the time to write such a great article.

    1. Will, is there any downtime during any of these steps or do both 2010 and 2016 operate at the same time with no down time by both talking to each other? Can someone log into OWA on 2016 and access their email if it still resides on 2010? Thanks!

      1. Greg, the only downtime is whey the mailbox is in transit to the new server.

        Example, after you queue a group of mailboxes to migrate, they begin to transfer 1 at a time. During the actual transfer and only then, that mailbox will be unavailable – Outlook shows disconnected. When the mailbox has completely moved, the Outlook client is automatically updated to point to the new server and you’re back online.

  2. Great article, really helped me when migrating from SBS 2011 to Exchange 2016, still valid even now, although there have been a few changes since it was written.

  3. Hello, I have followed this guide step-by-step, but when Iam trying to move/migrate first mailbox, this mailbox is still in synchronization Status. Mailbox isnt moved to new 2016 server. Still synchronizing. Where could be the problem ? Thanks

    1. Hiya, sorry for the late reply. I would suggest examining the detail of the move request, which should show you the move request log. This should show some indication on whether it is simply migrating, or there is some issue (such as a connectivity issue).

  4. Johan Ljunggren

    Thanks for an awesome article – looking forward to the next one for migrating 2016 to 2019 🙂

    Only problem I had was with IOS and macOS devices that did not support http/2 which IIS in Windows Server 2016 defaults to. But after disabling that (a lot of articles out the on how to do that in the registry) those worked as well.

    “EnableHttp2Tls”=dword:00000000

  5. I have just today moved by test group. For some reason when i tested switching my old 2010 exchange server off none of these mailboxes work or the ECP is not accessible. Any ideas whats gone wrong? Seems my 2016 exchange will only work when 2010 server is on and running.

    1. Hey Dave,

      Where are the DNS records for your Exchange servers pointing at? Are they pointed at the 2010 servers still, or only at the Exchange 2016 servers?

      Steve

  6. This article has helped me more with 2010 to 2016 migrations than any other. I would install Exchange 2016 after hours, so that there is enough time to set the SCP, install a valid certificate in 2016, and change internal/external URLs. The chance of invalid cert pop-ups in Outlook is too great. I also move most mailboxes after hours, but if performed during hours I found a tip that is helpful. After the user receives the message to close and restart Outlook, Outlook will show as disconnected. Restarting the AutoDiscover app pool on the 2016 server will fix this fast. Other than these two points, I am able to do everything else during business hours. I have found Public Folders to be a pain and that migration should be done after hours. Today I ran into an issue in which I had to go through the Public Folder migration procedure, even though there were no Public Folders in the old database. I couldn’t remove the old Public Folder database until I went through the migration steps.

  7. Excellent guide for migrating to E2K16. Have already read the ms exchange deployment assistant, reading this guide as well give a great amount of configuration assistants.

    Well done

  8. One problem I keep seeing after a mailbox is moved to exch 2013 or 2016 is the client in a disconnected state or prompting for a password for several hours… first thing to do at this point is recycle the Autodiscover web apps pool in is on the server you moved the mailbox to. Its a know issue with caching Autodiscover connections

    Regards
    Mark

  9. Hi,

    I still Can read the part 6 of Migration Exchange 2010 to Exchange 2016 after creating my Account in the your web site. Please help me to read this part 6 ?

    Thank you

  10. Thanks for the great article. Right now I have two exchange 2016 servers and one exchange 2010 server. I would like to move to only 2016. What do I have to do that is different from above? Right now everything is going thru 2010.

    Thanks.
    Bill

  11. Goran Kirjaković

    Hello. is this a six or 5 parts tutorial ?
    I get confused because sometimes it shows 5 parts and sometimes 6 parts with 5 missed ?
    Could you please provide exact loinks for 5 or six parts please ?

    Thank you very much.
    Goran

  12. Trevor Holyoak

    Thanks for this guide. I started my migration in Q4 last year and finally decommissioned the old server today. Your guide was invaluable.

  13. Went through the process of migrating since August last year and today I finally decommissioned our 2010 server from the organisation.
    Few hiccups but nothing major however this guide was invaluable to my training and following through the process of migration to 2016.
    Thanks!

  14. Doing exchange 2010 to 2016 migration here following this wonderful guide, my only issue is after moving the port forwards to direct mail to the new server, the activesync for mobile devices stops working on the exchange 2010 but works fine on the 2016 server. Seems like a proxy issue. OWA and Outlook work just fine in or outside of the network for mailboxes on 2010 and 2016.

  15. Great article. One issue that I am running in to is that the users that are still on the Exchange 2010 server are unable to use the password change option is OWA. They can login to OWA with no issues but if they try and click on anything under options, they get a Something went wrong error. This is not an issue for the users that have already been migrated to Exchange 2016.

  16. Everything worked fine and able to send and receive emails from the SBS 2011 Ex2010 and Ex2016 and external emails are being received and able to send to external accounts.

    But if I move a User from Ex2010 to Ex2016 then that user stops being able to access the account externally. On an iOS device it says unable to verify account information. Do I need to update the ports 443 and 80 to point to Ex2016? If I do that, then the Ex2010 user’s iOS devices accessing externally stops when they leave the office. Where am I doing wrong?

    1. The problem is redirecting Port 443. Since SBS2011 require it for remote access you can’t assign it to the new exchange server. Don’t know a solution at present.

Leave a Comment

Your email address will not be published.

This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Scroll to Top