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.
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:
Get-ExchangeServer | Sort-Object Name |
Format-Table Name, ServerRole, Edition, AdminDisplayVersion -AutoSizeCU14 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:
D:\Setup.exe /IAcceptExchangeServerLicenseTerms_DiagnosticDataOFF /PrepareSchema
D:\Setup.exe /IAcceptExchangeServerLicenseTerms_DiagnosticDataOFF /PrepareADIf 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:
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 MaintenanceBefore 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#
D:\Setup.exe /IAcceptExchangeServerLicenseTerms_DiagnosticDataOFF /Mode:UpgradeUse _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#
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 MaintenanceRestore the activation policy you noted if it wasn't Unrestricted. When every DAG member is done, rebalance the active databases:
& $exscripts\RedistributeActiveDatabases.ps1 -DagName DAG01 -BalanceDbsByActivationPreference -Confirm:$false7. 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#
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, ReplayQueueLengthGood looks like:
AdminDisplayVersionshowsVersion 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.Editionstill 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.RequiredServicesRunningis True for every role.- No inactive components except
ForwardSyncDaemonandProvisioningRps, 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.exeor.\Setup.exe). In PowerShell, a baresetup.execan 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.logfor[ERROR]; the first one is usually the real cause.

