---
name: reference_windows_edition_upgrade_rmm
description: Verified fleet procedure to upgrade a Windows machine Home->Pro/Pro-for-Workstations via RMM, with the three gotchas (DISM error 50, shutdown /t drop, PfW MAK auto-upgrade).
metadata:
  type: reference
---

Verified on ACG-Tech03L 2026-07-06 (Home 26200 -> Win 11 Pro for Workstations, permanently activated).

**Procedure (all steps as SYSTEM via `/rmm`, byte-exact via -EncodedCommand):**
1. Probe: EditionID/LicenseStatus (`.rmm-key-probe.ps1` pattern), confirm no logged-in user
   (`query user`) so a reboot is safe.
2. Flip edition: `changepk.exe /ProductKey VK7JG-NPHTM-C97JM-9MPGT-3V66T` (generic Pro key).
   Flips EditionID Core->Professional **live** (registry) + sets CBS RebootPending. exit 0.
3. Reboot to finalize (see gotcha #2).
4. Install MAK + activate: `slmgr /ipk <MAK>` then `slmgr /ato`; verify `slmgr /xpr` =
   "permanently activated" and WMI SoftwareLicensingProduct LicenseStatus=1.

**Gotcha 1 — DISM is a dead end for online edition change.** `DISM /online /Set-Edition:Professional`
returns **Error 50 "Setting an edition is not supported with online images"** even though
`/Get-TargetEditions` lists Professional. Use `changepk.exe`, not DISM, for online Home->Pro.

**Gotcha 2 — `shutdown /r /t N` is silently DROPPED in the SYSTEM service session.** The command
returns exit 0 but the box never reboots (verified twice on tech03l). Also `shutdown /c "comment"`
fails outright because the RMM->cmd.exe layer strips the quotes ([[feedback_windows_quote_stripping]]).
Reboot reliably with `Restart-Computer -Force` (encoded PS) or `shutdown /r /t 0 /f` (no comment).
NOTE: on a fast SSD the edition-upgrade reboot can be <30s of downtime — a 30s-interval last_seen
monitor can miss the gap entirely; confirm the reboot by `LastBootUpTime` advancing, not by catching
the offline window. `is_connected` is null fleet-wide — track `last_seen` age, never that flag.

**Gotcha 3 — the ACG MAK `infrastructure/windows-pro-mak` is a Pro-for-WORKSTATIONS MAK** (mislabeled
"Pro"). `slmgr /ipk` of it on a Professional machine AUTO-UPGRADES the edition to ProfessionalWorkstation
(a strict superset of Pro), live, **no extra reboot** (verified DALLAS 2026-07-07). If a client genuinely
needs *plain* Pro, this key will over-shoot to PfW — there is no plain-Pro MAK in the vault. Billing:
each activation consumes one MAK count = $99 to the customer (ACG-internal machines: no invoice, still
burns a count).

**Gotcha 4 — `changepk.exe` TIMES OUT under SYSTEM but STILL flips the edition. Do NOT treat the timeout
as failure — VERIFY EditionID.** Run as SYSTEM via `/rmm`, `changepk.exe /ProductKey <key>` does not return
cleanly (the RMM command comes back `failed` / exit -1 `Command timeout`, or your Start-Process/`&` wrapper
hangs to the agent timeout), yet the registry `EditionID` flip to `Professional` DID happen. Always confirm
with a one-liner (`Get-ItemProperty 'HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion' EditionID`) before
concluding anything — if it reads `Professional`, proceed to the finalize reboot; the running OS still
reports Home in `Win32_OperatingSystem.Caption` until that reboot. (Verified DALLAS 2026-07-07 — the
`changepk` command timed out but EditionID was already `Professional`.)

**Gotcha 5 — Modern Standby laptops (S0 Low Power Idle) drop the RMM/SC agent when idle/lid-closed, which
mimics an endless reboot.** On a Core Ultra / S0-only machine, idle or a closed lid drops Wi-Fi -> agent
offline for long stretches (looked like a 25-min "slow reboot"; the box had actually been up 25 days and
never rebooted). Before a reboot-driven upgrade on a laptop, pin it awake first:
`powercfg /change standby-timeout-ac 0; powercfg /setacvalueindex SCHEME_CURRENT SUB_BUTTONS LIDACTION 0;
powercfg /setactive SCHEME_CURRENT` (AC only — safe; DON'T lid-nothing on DC/battery). A command dispatched
to an already-offline agent goes `pending` and fires (uncontrolled) on next wake — cancel stale ones with
`/rmm cancel`. NOTE: an RDP *target* laptop must STAY awake to be reachable, so keep the AC no-sleep in place.
