Exchange ServerHow-to

In-place upgrade from Exchange Server 2019 to Exchange Server SE, step by step

Upgrade Exchange Server 2019 CU14 or CU15 to Exchange Server SE in place: prerequisites, AD preparation, the Setup command, DAG maintenance mode, product keys and post-upgrade checks.

If your Exchange Server 2019 servers run CU14 or CU15, moving to Exchange Server Subscription Edition (SE) doesn't need new servers or mailbox moves: Setup upgrades them in place, much like installing a cumulative update. In this post I'll walk through what to check first, the exact commands, how to handle DAG members, what happens to your product key, and what a healthy upgraded server looks like.

How this guide is organised: Prerequisites → Step-by-step → Verify the upgrade → Tips and gotchasFlow diagram of the article's sections in reading order: 1. Prerequisites. 2. Step-by-step (7 steps: Get the SE media onto the server; Prepare Active Directory (optional); Put DAG members into maintenance mode; Run Setup in upgrade mode; Install the latest SE security update; Bring the server back into service; Repeat for the rest). 3. Verify the upgrade. 4. Tips and gotchas. Toolbox: ExchangeSetup.log, Get-MailboxServer, Get-MailboxDatabaseCopyStatus, Get-Queue, web.config.1Prerequisites2Step-by-step3Verify the upgrade4Tips and gotchas1Get the SEmedia onto…2PrepareActive Dir…3Put DAGmembers i…4Run Setupin upgrade…5Install thelatest SE s…6Bring theserver bac…7Repeat forthe restTOOLBOXExchangeSetup.logGet-MailboxServerGet-MailboxDatabaseCopyStatusGet-Queueweb.configHow this guide is organised: Prerequisites → Step-by-step → Verify the upgrade → Tips and gotchasFlow diagram of the article's sections in reading order: 1. Prerequisites. 2. Step-by-step (7 steps: Get the SE media onto the server; Prepare Active Directory (optional); Put DAG members into maintenance mode; Run Setup in upgrade mode; Install the latest SE security update; Bring the server back into service; Repeat for the rest). 3. Verify the upgrade. 4. Tips and gotchas. Toolbox: ExchangeSetup.log, Get-MailboxServer, Get-MailboxDatabaseCopyStatus, Get-Queue, web.config.1Prerequisites2Step-by-step1Get the SE media onto the server2Prepare Active Directory (optional)3Put DAG members into maintenance mode4Run Setup in upgrade mode5Install the latest SE security update6Bring the server back into service7Repeat for the rest3Verify the upgrade4Tips and gotchasTOOLBOXExchangeSetup.logGet-MailboxServerGet-MailboxDatabaseCopyStatusGet-Queueweb.config
At a glance: how this guide is organised · 7 steps · 5 key settings and tools

Status (October 2026): Exchange Server SE RTM (released July 2025) is still the current baseline. In August 2026 the Exchange team said CU1 has no release date yet, while security updates for SE RTM continue to ship. Exchange 2016 and 2019 have been out of support since 14 October 2025. Check Microsoft's build numbers page before you start, because new updates appear regularly.

Prerequisites#

An in-place upgrade is supported only from Exchange Server 2019 CU14 or CU15. Everything else needs a different route:

  • Exchange 2019 CU13 or older: install CU14 or CU15 first, then upgrade to SE.
  • Exchange 2016: there is no in-place path. You need a legacy upgrade: add SE servers, move mailboxes and services, then uninstall the old servers.
  • New hardware or a newer Windows Server version: also a legacy upgrade, because upgrading Windows underneath an installed Exchange server isn't supported.

Before the change window, confirm:

  • No Exchange 2013 left. SE Setup won't run while an Exchange 2013 server still exists in the organisation.
  • Permissions. Run Setup with an account in Organization Management. If Setup has to update Active Directory, the account also needs Schema Admins and Enterprise Admins, or the AD team can run the preparation for you (step 2).
  • Licensing. SE needs an active entitlement through Software Assurance or a qualifying subscription. My Exchange Server SE explainer covers licensing and planning.
  • A clean starting point. A recent backup, no pending reboot and a clean Health Checker report. Fix red findings before the upgrade, not after.
  • Customisations recorded. Setup replaces configuration files such as web.config, so note any manual changes you'll need to reapply.
  • Vendor support for SE from your backup, antivirus and archiving products.

Inventory first:

PowerShell
Get-ExchangeServer | Sort-Object Name |
  Format-Table Name, ServerRole, Edition, AdminDisplayVersion -AutoSize

CU14 shows as Version 15.2 (Build 1544.x) and CU15 as Version 15.2 (Build 1748.x). A server reporting Version 15.1 is Exchange 2016, and Version 15.0 is Exchange 2013, which must be removed first.

Step-by-step: upgrade each server#

1. Get the SE media onto the server#

Download the Exchange Server SE ISO, mount it locally (the examples use D:) and open an elevated Command Prompt or PowerShell window.

2. Prepare Active Directory (optional)#

Setup updates the schema and the Exchange organisation in Active Directory by itself when the account has the rights. If those rights belong to another team, have them run these commands first and wait for AD replication:

Command Prompt
D:\Setup.exe /IAcceptExchangeServerLicenseTerms_DiagnosticDataOFF /PrepareSchema
D:\Setup.exe /IAcceptExchangeServerLicenseTerms_DiagnosticDataOFF /PrepareAD

If other domains in the forest contain Exchange servers or recipients, add a run with /PrepareAllDomains.

3. Put DAG members into maintenance mode#

Upgrade one DAG member at a time. Note the current activation policy (Get-MailboxServer EX01 | Format-List DatabaseCopyAutoActivationPolicy), then drain and isolate the server:

PowerShell
Set-ServerComponentState EX01 -Component HubTransport -State Draining -Requester Maintenance
Redirect-Message -Server EX01 -Target EX02.contoso.com
Suspend-ClusterNode -Name EX01
Set-MailboxServer EX01 -DatabaseCopyActivationDisabledAndMoveNow $true
Set-MailboxServer EX01 -DatabaseCopyAutoActivationPolicy Blocked
Set-ServerComponentState EX01 -Component ServerWideOffline -State Inactive -Requester Maintenance

Before you continue, Get-MailboxDatabaseCopyStatus -Server EX01 should show no mounted copies on EX01, and Get-Queue -Server EX01 should be empty apart from the Poison and Shadow Redundancy queues.

4. Run Setup in upgrade mode#

Command Prompt
D:\Setup.exe /IAcceptExchangeServerLicenseTerms_DiagnosticDataOFF /Mode:Upgrade

Use _DiagnosticDataON if you want to send diagnostic data to Microsoft. Setup runs readiness checks first and stops if a prerequisite is missing. Progress and errors go to C:\ExchangeSetupLogs\ExchangeSetup.log. Restart the server when Setup finishes. If Setup fails part-way, fix the cause shown in the log and run the same command again; it normally picks up from the failed step.

5. Install the latest SE security update#

Fixes released after RTM aren't on the RTM media, so install the newest Security Update (or Hotfix Update) published for SE RTM, again from an elevated prompt, and restart. My security update guide covers preparation and common failures.

6. Bring the server back into service#

PowerShell
Set-ServerComponentState EX01 -Component ServerWideOffline -State Active -Requester Maintenance
Resume-ClusterNode -Name EX01
Set-MailboxServer EX01 -DatabaseCopyActivationDisabledAndMoveNow $false
Set-MailboxServer EX01 -DatabaseCopyAutoActivationPolicy Unrestricted
Set-ServerComponentState EX01 -Component HubTransport -State Active -Requester Maintenance

Restore the activation policy you noted if it wasn't Unrestricted. When every DAG member is done, rebalance the active databases:

PowerShell
& $exscripts\RedistributeActiveDatabases.ps1 -DagName DAG01 -BalanceDbsByActivationPreference -Confirm:$false

7. Repeat for the rest#

Upgrade the remaining Mailbox servers one at a time, then Edge Transport servers and workstations running the Exchange Management Tools, with the same /Mode:Upgrade command.

Verify the upgrade#

PowerShell
Get-ExchangeServer EX01 | Format-List Name, Edition, AdminDisplayVersion
Get-Command ExSetup.exe | ForEach-Object { $_.FileVersionInfo.FileVersion }
Test-ServiceHealth -Server EX01
Get-ServerComponentState EX01 | Where-Object State -ne "Active"
Get-MailboxDatabaseCopyStatus -Server EX01 | Format-Table Name, Status, CopyQueueLength, ReplayQueueLength

Good looks like:

  • AdminDisplayVersion shows Version 15.2 (Build 2562.17), the SE RTM build. It doesn't change when you install security updates, so use the ExSetup file version (15.02.2562.xxx) to confirm the update level.
  • Edition still shows Standard or Enterprise rather than a trial (Evaluation) edition. SE RTM doesn't need a new product key and keeps working after an in-place upgrade.
  • RequiredServicesRunning is True for every role.
  • No inactive components except ForwardSyncDaemon and ProvisioningRps, which are normally inactive on-premises.
  • Database copies are Healthy with low copy and replay queues.
  • OWA, the Exchange admin center, Outlook and mobile clients connect, mail flows both ways, and the Health Checker shows no new red findings.

Tips and gotchas#

  • Don't wait for CU1. It will install over SE RTM like any other CU, and every month spent on Exchange 2019 is a month on an out-of-support product.
  • Mind the CU2 deadline. SE CU2 Setup will block coexistence with versions unsupported at its release, including 2016 and 2019. If Exchange 2016 is still around, see your options after end of support.
  • Keep mixed builds short-lived, and reapply recorded customisations after each server.
  • Always give Setup a path (D:\Setup.exe or .\Setup.exe). In PowerShell, a bare setup.exe can start the copy in Exchange's Bin folder, which then "succeeds" without upgrading anything.
  • Product keys: nothing to do for SE RTM. Microsoft has said a future CU will introduce an SE product key requirement, so read the release notes of every CU before installing it.
  • Reading setup failures: search ExchangeSetup.log for [ERROR]; the first one is usually the real cause.

References#

Written and checked against current Microsoft Learn documentation. Test changes with a pilot group before rolling them out to everyone, and if an admin center path has moved since, search for the setting name instead.

Spotted a mistake, or did this fix work differently for you? Email me or message me on LinkedIn — corrections are credited in the article.

Written by

Omer Eltayeb

Intune Subject Matter Expert in Cairo, Egypt, former Microsoft Cloud Solutions Architect, Microsoft Certified Trainer and Microsoft Innovative Educator Expert (2024–26) and Microsoft Elevate Educator Expert (2026–27). I share practical, step-by-step guides, study plans, scripts and toolkits for Microsoft Intune, Configuration Manager, Microsoft Entra ID, Microsoft Defender, Exchange and Microsoft 365 with the community.

Microsoft Certified Trainer (MCT) 2026Microsoft Innovative Educator Expert 2025–2026Microsoft Elevate Educator Expert 2026–2027ISC2 Certified Information Systems Security Professional (CISSP)Microsoft 365 Certified: Enterprise Administrator Expert (MS-102)