HomeNewsletterCommunityMVP FeedToolsArchiveBlogToday's NewsAboutServicesQuick Links Subscribe free
← Back to Blog
Windows 11 Windows 11ActivationMicrosoft Entra IDLicensingIntuneTroubleshooting

Windows Subscription Activation: When the Device Says Pro but You Licensed Enterprise

IA
Imran Awan
21 August 2026

You bought Windows 11 Enterprise E3. You imaged a laptop. You opened Settings and it says Windows 11 Pro. Somebody on the team asks which KMS server the device is pointing at. That question has no answer, because modern Windows Enterprise activation does not involve a KMS server, a Multiple Activation Key, or a product key of any kind. The licence arrives from Microsoft Entra ID when a licensed user signs in. This post explains that mechanism end to end, then shows you how to find out why a specific device is refusing to move.

The short version

Windows subscription activation steps a device up from Pro to Enterprise when a user holding a Windows Enterprise E3 or E5 licence signs in with their Entra account. There is no product key and no KMS host anywhere in that flow, which is why a freshly imaged device correctly shows Pro until that first sign-in. The device must be Microsoft Entra joined or Microsoft Entra hybrid joined, with the underlying Pro licence already activated. When a device stays on Pro, the block is the device, the join, or the licence, and you can tell which in about ninety seconds by reading two separate licence layers.

The problem: the device says Pro and the KMS hunt begins

The scenario is always the same shape. The organisation has an Enterprise Agreement with Windows Enterprise E3, or it has Microsoft 365 E3 or E5, which carries the same Windows entitlement. Devices are built from a Windows 11 Pro image, or arrive from the OEM with Pro preinstalled. Somebody checks the Activation page and finds Pro.

What follows is usually a hunt for infrastructure that is not part of the design. Someone looks for a Key Management Service host. Someone else finds a Generic Volume License Key on an old wiki page and pastes it into a command. A third person opens a ticket asking for the Enterprise ISO. All three actions are wrong, and one of them actively makes the situation worse.

Here is the first thing to internalise. A device that installs as Pro and shows Pro before anybody has signed in with a licensed Entra account is behaving exactly as documented. Microsoft describes the feature as a "step-up" from Pro to Enterprise, triggered by user sign-in. Nothing steps up before a user signs in, because the licence is attached to the user, not the device.

The genuinely broken cases look different, and they are the ones worth your time:

Context: this is not an in-place upgrade. A step-up changes the edition of the running installation. No reinstall, no image swap, and no reboot. Microsoft's own wording is that "user sign-in triggers a silent edition upgrade, with no reboot required". Subscription activation also cannot move you to a newer version of Windows. It changes edition only.

Why it happens: two licence layers, one of them in the cloud

Windows has two independent licensing stacks, and almost every subscription activation misdiagnosis comes from confusing them.

Layer one is the Software Protection Platform. The service is sppsvc, display name Software Protection, and its binary is a real executable rather than a shared service host. It owns the base edition licence: the retail, OEM, or volume key that makes your Windows installation genuine. Everything the licensing script traditionally reported comes from here.

Layer two is the Client License Service. The service short name is ClipSVC, display name Client License Service (ClipSVC). It owns store-delivered licences, including the Enterprise subscription. This is the layer that steps the edition up.

The chain, in order, from trigger to result:

  1. A user signs in to a Microsoft Entra joined or Entra hybrid joined device with their work account.
  2. Windows obtains a token for that user and asks the store licensing service whether the user holds a Windows Enterprise entitlement. Microsoft names the cloud app involved in its Conditional Access guidance: Universal Store Service APIs and Web Application.
  3. If the answer is yes, ClipSVC installs an application licence and a lease for it locally.
  4. The edition steps up from Pro to Enterprise. Enterprise features unlock. No reboot.
  5. The device renews the licence periodically. When the subscription lapses or is reassigned, the device reverts to Pro once the current validity expires.

Notice that steps 2 and 3 need a working user token and internet access. That is why an authentication problem shows up as an activation problem, and why a Conditional Access policy applied too broadly can leave a fully licensed user stuck on Pro.

Prerequisites, in the order they must be true

Microsoft lists these across two articles. Combined and ordered, they are:

  1. A supported version of Windows Pro (or Pro Education for the Education path) installed. Out-of-support versions do not support the feature.
  2. The base Pro licence activated. Subscription activation does not remove the need to activate the underlying operating system. Automatic, non-KMS activation of that base licence also requires a firmware-embedded activation key.
  3. Microsoft Entra ID available for identity management.
  4. The device Microsoft Entra joined or Microsoft Entra hybrid joined. Microsoft is explicit: workgroup-joined and Microsoft Entra registered devices are not supported. Federated customers are eligible. For hybrid, the on-premises user must be synchronised to Entra ID with Microsoft Entra Connect Sync.
  5. Per-user Enterprise licensing. The documentation states plainly that subscription activation requires Enterprise per user licensing and does not work with per device licensing.
  6. A Windows Enterprise licence assigned to the signing-in user from the Microsoft 365 admin center. Group-based licensing is the preferred assignment method.
Gotcha: Entra registered is not Entra joined. This is the single most common false start. A personal or unmanaged device that has "added a work account" is Entra registered, and it will never step up no matter how many E5 licences the user holds. In dsregcmd /status, Entra joined means AzureAdJoined : YES. Entra hybrid joined means AzureAdJoined : YES and DomainJoined : YES together. Registered-only devices show WorkplaceJoined : YES with AzureAdJoined : NO.

How this differs from KMS, MAK and Active Directory-Based Activation

Spelling out the acronyms, because they get thrown around loosely. KMS is Key Management Service. MAK is Multiple Activation Key. ADBA is Active Directory-Based Activation. GVLK is Generic Volume License Key.

MethodWhat it needsWhat it produces
Subscription activationEntra join or hybrid join, per-user Enterprise E3 or E5, internet, base Pro licensedAn edition step-up from Pro to Enterprise, no key, no reboot
KMSA KMS host on your network, a GVLK on the client, TCP reachability on port 1688 by defaultA time-limited volume activation of an edition already installed
MAKA five-by-five product key from the Volume Licensing Service Center, installed per deviceA perpetual activation of an edition already installed
ADBAA KMS host key activated against the Active Directory forest, domain-joined clientsVolume activation from Active Directory, with no KMS host service

The important column is the third one. KMS, MAK and ADBA all activate an edition you already installed. Subscription activation changes the edition. If you deploy an Enterprise image and then wonder why you need a key, you have chosen the old path by accident.

There is a useful subtlety here. Microsoft documents that on currently supported versions of Windows, subscription activation pulls the firmware-embedded key, activates the underlying Pro licence, then steps up to Enterprise. That means existing KMS-activated or MAK-activated Enterprise devices migrate to subscription-activated Enterprise automatically when a licensed user signs in. You do not have to rebuild them.

The timings that make this look broken when it is not

BehaviourDocumented timingWhat it means for you
Licence renewalUpgraded devices attempt renewal about every 30 daysAn offline device eventually reverts to Pro, then recovers when reconnected
Upgrade eligibility cacheUp to four days after a qualifying purchaseA brand-new subscription can look broken on day one. Wait before escalating
Devices per user licenceUp to fiveOn a sixth device, the machine the user has not signed in to for longest reverts to Pro
Reactivation after a long spell offlinePrompted at sign-in on Windows 11 23H2 with KB5034848 or laterA toast appears reading "Your account requires authentication"
Gotcha: the four-day eligibility cache. Windows uses a built-in cache when deciding upgrade eligibility, and it caches the "not eligible" answer too. Microsoft states it can take up to four days after a qualifying purchase before eligibility is enabled and the cache expires. A device that says Pro on the afternoon you bought the licences is not evidence of a fault.

How to verify: read the licence, the subscription, then the join

Verification has a natural order that mirrors the layers. Base licence first, subscription second, join third, plumbing fourth. Do not skip ahead, because a device with an unlicensed Pro base can never step up, and every other check will look fine.

Step 1: the graphical answer

The fastest read is the Activation page. Press Windows and R, type ms-settings:activation, and press Enter. On Windows 11 the same page sits under Settings, System, Activation.

SettingsSystemActivation

Expand both Activation state and Subscription. A healthy device shows two separate statements: Windows is activated with a digital license for the base licence, and Windows 11 Enterprise subscription is active for the step-up. If the Subscription block is absent entirely, the subscription has never been applied on this device.

Step 2: slmgr, and how to read it properly

The licensing script lives at C:\Windows\System32\slmgr.vbs. Two options matter here and neither requires elevation. /dli prints basic licence information. /dlv prints detailed licence information, including the activation ID, the key channel and the trusted time.

PowerShell - read the licence, change nothing
cscript //nologo $env:SystemRoot\System32\slmgr.vbs /dli # Basic licence info. /dli and /dlv are read-only and do not contact an activation service. Name: Windows(R), Professional edition Description: Windows(R) Operating System, RETAIL channel Partial Product Key: XXXXX License Status: Licensed # HEALTHY base layer: status Licensed. It still says Professional - that is correct and expected. Subscription edition: Windows 11 Enterprise Subscription type: User based subscription Subscription status: Active Subscription expiry: Unknown # HEALTHY step-up. BROKEN looks like: this whole block missing, or status Not active, Expired or Disabled.

Read that output as two answers, not one. The first block is the Software Protection Platform reporting the base licence, and on a subscription-activated device it correctly reports Professional with a Retail channel. The second block is the subscription. An admin who reads only the first four lines concludes the step-up failed, when the four lines below prove it succeeded.

Never run these while diagnosing. The /ipk option installs a product key. The /upk option uninstalls the current product key and leaves the system Unlicensed after a restart. The /ato option forces an activation attempt, and on a device carrying a GVLK it forces a KMS attempt against infrastructure you do not have. The /rearm option resets activation timers. None of these fix a subscription activation problem, and pasting a GVLK to "make it Enterprise" replaces a working firmware-derived Pro licence with one that cannot activate. Diagnose with /dli and /dlv only.

Step 3: the same answers from PowerShell, where automation lives

Two WMI classes carry this state, and knowing which is which is the whole trick.

The SoftwareLicensingProduct class is the Software Protection Platform view. It exposes LicenseStatus, whose values are documented:

LicenseStatusNamePractical reading
0UnlicensedNo usable licence for this SKU
1LicensedHealthy. This is what the base Pro SKU should show
2OOBGraceOut-of-box grace period, not yet activated
3OOTGraceOut-of-tolerance grace, typically after a hardware change
4NonGenuineGraceFailed genuine validation
5NotificationGrace exhausted. This is the state behind the desktop watermark
6ExtendedGraceExtended grace period

The subscription is not in that class. It is exposed on SoftwareLicensingService, through four properties that the in-box licensing script reads to print its Subscription block: SubscriptionEdition, SubscriptionType, SubscriptionStatus and SubscriptionExpiry.

PowerShell - both licence layers in two commands
Get-CimInstance SoftwareLicensingProduct | Where-Object { $_.PartialProductKey } | Select-Object Name, Description, ProductKeyChannel, LicenseStatus # Layer one. Only SKUs with a key installed are real. HEALTHY: the Windows SKU shows LicenseStatus 1. Get-CimInstance SoftwareLicensingService | Select-Object SubscriptionEdition, SubscriptionType, SubscriptionStatus, SubscriptionExpiry # Layer two. HEALTHY: SubscriptionStatus 1 plus an edition string. BROKEN: SubscriptionType 120 means no subscription. SubscriptionEdition : Windows 11 Enterprise SubscriptionType : 0 SubscriptionStatus : 1 SubscriptionExpiry : <unspecified> # Type 0 = user based, 1 = device based, 2 = Azure based. Status 1 = Active, 100 = Disabled, 120 = Expired.
Gotcha: those numbers are not in the published WMI reference. The subscription properties and their value mappings are not listed in Microsoft's SoftwareLicensingService class documentation. The mapping above is read out of Microsoft's own in-box slmgr.vbs on Windows 11 25H2, which is why it matches what the script prints. Treat it as observed rather than contractual, and prefer alerting on the human-readable /dli text if you need something stable across updates.

Step 4: the join, which is the other half of the answer

Microsoft's own troubleshooting guidance sends you to dsregcmd.exe /status and tells you to confirm that AzureAdJoined reads YES under Device State.

Command prompt - join state and firmware key
dsregcmd /status # Read the Device State block only for this purpose. +----------------------------------------------------------------------+ | Device State | +----------------------------------------------------------------------+ AzureAdJoined : YES EnterpriseJoined : NO DomainJoined : YES DomainName : CONTOSO Device Name : CONTOSO-1234 # HEALTHY hybrid: AzureAdJoined YES plus DomainJoined YES. HEALTHY cloud-only: AzureAdJoined YES, DomainJoined NO. # BROKEN: AzureAdJoined NO. A registered-only device shows WorkplaceJoined YES lower down and never steps up. (Get-CimInstance -query 'select * from SoftwareLicensingService').OA3xOriginalProductKey # Firmware-embedded key. HEALTHY: a key is returned. BROKEN: blank means no OEM key, so Pro will not self-activate.

Step 5: the plumbing surfaces

Services. Three services matter. Two of them are trigger-start, so a Stopped status is not automatically a fault.

Short nameDisplay nameExpected state
sppsvcSoftware ProtectionStart type Automatic. Runs from its own binary, not a shared service host
ClipSVCClient License Service (ClipSVC)Start type Manual, trigger-started, hosted in the wsappx service host group
LicenseManagerWindows License Manager ServiceStart type Manual, trigger-started, hosted in a LocalService group

Scheduled tasks. Two tasks under a single parent path do the recurring work of acquiring and keeping the subscription. Parent path, stated once:

\Microsoft\Windows\Subscription\
TaskObserved state on a working deviceWhat to check
LicenseAcquisitionReady, last result 0x0A non-zero last result on a device stuck on Pro is your strongest single clue
EnableLicenseAcquisitionReady, last result 0x0Runs alongside the task above. Same reading
\Microsoft\Windows\Clip\License ValidationDisabled on the device testedDisabled is normal here, not a fault to chase
\Microsoft\Windows\SoftwareProtectionPlatform\SvcRestartTaskReadyRestarts the Software Protection service on schedule. Unrelated to the step-up itself
Context: these task names are not published. Microsoft does not document the tasks under \Microsoft\Windows\Subscription\ in the subscription activation articles. They exist on the Windows 11 25H2 device used for this post and their last-result codes are genuinely useful when triaging. Read them, but do not build a compliance rule that fails when Microsoft renames them.

System files and binaries. Every one of these was verified present on the test device.

PathRole in the flowLayer
C:\Windows\System32\sppsvc.exeThe Software Protection service itself. Owns the base edition licenceSPP
C:\Windows\System32\sppc.dll and sppcext.dllSoftware licensing client libraries the service and tooling callSPP
C:\Windows\System32\ClipSVC.dllThe Client License Service implementation, loaded into the wsappx hostClipSVC
C:\Windows\System32\ClipUp.exeClient licensing setup and update helperClipSVC
C:\Windows\System32\ClipRenew.exeRenews store-delivered licences, including the subscription leaseClipSVC
C:\Windows\System32\slmgr.vbsThe licensing script. Reads both layers for its outputBoth
C:\Windows\System32\licensingdiag.exeLicensing Diagnostic Tool. Collects a licensing report bundleBoth
C:\Windows\System32\changepk.exeApplies a product key. Used by the MDM edition-upgrade path, not by subscription activationSPP
C:\Windows\System32\spp\store\2.0\data.datThe SPP token store holding base licence stateSPP
C:\ProgramData\Microsoft\Windows\ClipSVC\tokens.datThe ClipSVC token store holding store licences and leasesClipSVC

Log files, honestly. There is no documented plain-text log for the step-up. Windows does not write a text log you can tail while a device steps up. What exists instead is licensingdiag.exe, present in System32, which collects licensing diagnostics into a report and a cabinet file. Its command-line switches are not documented on Microsoft Learn, so if you use it, treat the syntax as observed and read the report it produces rather than scripting against it. The real diagnostic trail lives in the event log, which is the next surface.

Step 6: Event Viewer

Microsoft publishes no event ID catalogue for subscription activation. What it does publish, in its Conditional Access guidance, is the identity side of the story, and the channels below are the ones that carry the evidence. Channel names verified on the test device by enumerating the log list.

ChannelProviderWhat it tells you
Microsoft-Client-Licensing-Platform/AdminMicrosoft-Client-Licensing-PlatformClipSVC lifecycle, application licence installs and lease installs. The step-up itself
Microsoft-Client-License-Flexible-Platform/AdminMicrosoft-Client-License-Flexible-PlatformThe related flexible-licensing channel. Frequently empty
ApplicationMicrosoft-Windows-Security-SPPBase licence status checks and service restarts. The Pro layer
Microsoft-Windows-AAD/OperationalMicrosoft-Windows-AADToken acquisition. Where a blocked licensing call actually shows up

Within the ClipSVC admin channel, these are the IDs observed on a working device. Channel, stated once:

Applications and Services Logs > Microsoft > Windows > Client-Licensing-Platform > Admin
Event IDMessage text observedReading
100ClipSVC service is starting. Caller: TriggerStartedNormal trigger start
101ClipSVC service is running. Version followsNormal
102ClipSVC service has shutdownNormal idle shutdown
116Application license successfully installedThe step-up licence landed. This is the success line
117Lease successfully installedThe renewal lease landed alongside it
Event Viewer - Microsoft-Client-Licensing-Platform/Admin (illustrative layout, real message text from the test device)
Information   21/08/2026 21:46:32   Event ID 116   Application license successfully installed.
Information   21/08/2026 21:46:32   Event ID 117   Lease successfully installed.
Information   21/08/2026 21:40:57   Event ID 101   ClipSVC service is running.
Error           21/08/2026 23:17:00   AAD channel, Event ID 1098   Error: 0xCAA9002B WS-Trust metadata exchange request failed.

Two things to take from that panel. A device that has ever stepped up shows 116 and 117. A device that has not, but whose ClipSVC starts and stops cleanly, is telling you the service is fine and the answer from the cloud was no. In that case the AAD channel is where you look next, because a token failure and a licence failure look identical from the Activation page.

Gotcha: do not build detection logic on these IDs. Microsoft does not publish an event ID list for ClipSVC. The IDs 116 and 117 are observed on Windows 11 25H2 and could change in any update. If you need a durable signal, key on the message text and the severity, or better still on the subscription status value, and re-verify after each annual feature update.

Step 7: registry

There is no registry switch that turns subscription activation on. What the registry holds is Software Protection Platform configuration and policy. Shared parent key, stated once:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\SoftwareProtectionPlatform
ValueTypeWhat it does
SkipRearmREG_DWORDDocumented. When set to 1, the rearm operation does nothing
UserOperationsREG_DWORDDocumented. Setting 1 lets standard users install keys and activate without elevation
VLActivationIntervalREG_DWORDDocumented. KMS activation attempt interval in minutes, default 120
VLRenewalIntervalREG_DWORDDocumented. KMS renewal interval in minutes, default 10080
KeyManagementServiceNameREG_SZDocumented. Pins a KMS host. Its presence on a subscription fleet is a smell, not a cause
Activation\ManualREG_DWORDDocumented subkey value. Setting 1 disables automatic online activation
TokenStore, CacheStore, ClipSvcStart, LicStatusArrayVariousPresent on the test device and undocumented. Read-only curiosity. Do not build on them

One policy value genuinely matters, and it lives elsewhere:

HKLM\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate
ValueTypeEffect on the step-up
DoNotConnectToWindowsUpdateInternetLocationsREG_DWORDDocumented. When set to 1, the device can lose activation status or be blocked from upgrading to Enterprise. Must be 0, or absent

The fix: prerequisites in order, and the settings that really exist

Work the list top down. Stop at the first thing that is false, fix it, and re-test with a fresh sign-in.

  1. Is the base Pro licence activated? If the basic licence read shows anything other than License Status: Licensed, fix that first. If the device has a firmware key but was never activated with a Pro key, Microsoft publishes a one-liner that reads the OEM key and applies it with changepk.exe. That is a write operation, so treat it as a change, not a diagnostic. Note also that firmware-embedded activation happens automatically only during the out-of-box experience.
  2. Is the device Entra joined or Entra hybrid joined? Confirm with dsregcmd /status. A registered-only device needs a proper join, which for most fleets means a rebuild through Autopilot, or an Entra join from the Access work or school pane.
  3. Is the user licensed with Windows Enterprise E3 or E5? Check the assignment, not the bundle name. See the table below.
  4. Was the licence assigned in the last four days? If yes, wait. The eligibility cache is documented to take up to four days to expire.
  5. Is Windows Update blocked? Clear the policy covered below.
  6. Is Conditional Access blocking the licensing call? Exclude the store app, or move to Windows 11 23H2 with KB5034848 or later, where the user is prompted with a toast instead.
  7. Sign out and sign back in with the licensed account while connected to the internet. The step-up is a sign-in-triggered event.

Which licence bundles actually carry the entitlement

This is where a lot of tickets die. The requirement is a Windows Enterprise licence assigned from the Microsoft 365 admin center. Bundle marketing names do not tell you whether the right service plan is inside. Microsoft publishes the authoritative mapping in its product names and service plan identifiers reference:

BundleWindows service plan insideSteps a Pro device up?
Windows 10/11 Enterprise E3 or E5, standaloneWIN10_PRO_ENT_SUBYes. This is the documented licence for the feature
Microsoft 365 E3 and E5WIN10_PRO_ENT_SUB, listed as Windows 10/11 EnterpriseYes. The same service plan as the standalone SKU
Microsoft 365 F3WIN10_ENT_LOC_F1, listed as Windows 10 Enterprise E3 (Local Only)A different plan. Do not assume a step-up. Verify in your own tenant
Microsoft 365 Business PremiumWINBIZ, listed as Windows 10/11 BusinessNo Windows Enterprise plan is present at all
Tip: assign with groups, and verify the service plan. Microsoft names group-based licensing in Entra ID as the preferred way to assign Enterprise E3 and E5. When a step-up fails for one user and works for their colleague, open the user's licences in the Microsoft 365 admin center and confirm the Windows service plan is present and enabled, not just that the bundle is assigned. A disabled service plan inside an assigned bundle is invisible from the device.

Group Policy: the only setting that matters, and the one that does not exist

Be clear about this, because it is the point of the whole post. There is no Group Policy setting that enables subscription activation. No administrative template turns it on, turns it off, or points it anywhere. The feature is driven by identity and licence assignment, not by device policy.

The one policy Microsoft's troubleshooting guidance sends you to is a Windows Update setting that can break re-activation. On Windows 11 the full path is:

Computer ConfigurationAdministrative TemplatesWindows ComponentsWindows UpdateManage updates offered from WSUSDo not connect to any Windows Update Internet locations
  1. Press Windows and R, type gpedit.msc, and press Enter. In a domain, edit the GPO in the Group Policy Management Console instead.
  2. Expand Computer Configuration, then Administrative Templates.
  3. Expand Windows Components, then Windows Update.
  4. On Windows 11, open Manage updates offered from Windows Server Update Service. On Windows 10 the setting sits directly under Windows Update.
  5. Double-click Do not connect to any Windows Update Internet locations.
  6. Set it to Disabled or Not Configured, then select OK.
  7. Confirm on the device that the policy value under the WindowsUpdate key is 0 or absent. If the policy is still Enabled somewhere, the value returns to 1 no matter how many times you edit the registry by hand.
Registry Editor - the policy that blocks re-activation (illustrative)
Computer\HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate
DoNotConnectToWindowsUpdateInternetLocations   REG_DWORD   0x00000001 (1)   BROKEN
DoNotConnectToWindowsUpdateInternetLocations   REG_DWORD   0x00000000 (0)   HEALTHY
Value absent entirely is also healthy.
Destructive risk: the KMS reflex. The most damaging response to a Pro-stuck device is to install a Generic Volume License Key for Enterprise and point the device at a KMS host. On a subscription-activation fleet that replaces a working firmware-derived Pro licence with a volume key that has no infrastructure behind it. The device now has a broken base licence and no step-up, and the Activation page reports an error that sends the next engineer even further down the wrong path. Never resolve a subscription activation ticket by installing a key.

Intune: what exists, what does not, and the trap in between

There is no Settings Catalog setting that enables subscription activation either. That is not an oversight. There is nothing to configure, because the trigger is a licensed user signing in.

What Intune and MDM genuinely expose is the WindowsLicensing configuration service provider. Its read-only nodes are the useful part for reporting:

OMA-URIAccessWhat you get
./Vendor/MSFT/WindowsLicensing/EditionGetThe running edition as an integer
./Vendor/MSFT/WindowsLicensing/Subscriptions/{SubscriptionId}/StatusGetThe status of a subscription on the device
./Vendor/MSFT/WindowsLicensing/DeviceLicensingService/LicenseTypeGet, Replace0 is a user-based subscription, 1 is device-based
./Vendor/MSFT/WindowsLicensing/DeviceLicensingService/DeviceLicensingLastErrorGetThe last error from a refresh or remove device-licence operation

Note the shape of that CSP. It reports on, and manipulates, device-based subscription, and several of the subscription nodes are marked as Windows Insider Preview at the time of writing. None of it is a switch that makes user-based subscription activation happen.

The trap is the profile that does exist. Intune has an Edition upgrade and mode switch template, and it will happily upgrade Pro to Enterprise. Read its prerequisites: it needs a valid product key, either a MAK or a KMS key. That is the old path wearing a modern portal. If you hold E3 or E5, using it is a mistake, and Microsoft notes that removing the policy later does not revert the device.

intune.microsoft.comDevicesManage devicesConfigurationCreate > New policy
  1. Sign in to the Microsoft Intune admin center.
  2. Select Devices, then Manage devices, then Configuration.
  3. Select Create, then New policy.
  4. For Platform, select Windows 10 and later.
  5. For Profile type, select Templates, then Edition upgrade and mode switch.
  6. Select Create, give the profile a name in Basics, then select Next.
  7. In Configuration settings, choose the target edition and supply the MAK or KMS product key.
  8. Complete Scope tags, then Assignments, then Review + create.
Gotcha: do not use the steps above if you have E3 or E5. They are written out so you can recognise the profile in a tenant you inherited, and understand why devices there are key-activated. Creating this profile on a subscription-activation fleet adds a key-based dependency you never needed and cannot cleanly remove.

Conditional Access, which is the identity-side fix

Microsoft documents that organisations using subscription activation with Conditional Access should exclude the Universal Store Service APIs and Web Application cloud app from their policies, using Select Excluded Cloud Apps. The symptom this prevents is specific: a device that has been offline for an extended period might not reactivate automatically.

  1. Sign in to the Microsoft Entra admin center and open the Conditional Access policy that targets all cloud apps.
  2. Under Target resources, open the Exclude tab.
  3. Choose Select excluded cloud apps.
  4. Find and select Universal Store Service APIs and Web Application. Depending on the tenant, the same application ID may appear under the retired Windows Store for Business name.
  5. Save the policy, then re-test the step-up with a licensed sign-in.

On Windows 11 23H2 with KB5034848 or later, Microsoft changed the behaviour so the user is prompted with a toast instead, reading "Your account requires authentication". That removes the need for the exclusion, though the exclusion is still valid if you would rather users never saw the prompt.

Context: Defender, ASR and WDAC are not involved. Nothing in the subscription activation flow is gated by Microsoft Defender Antivirus, Attack Surface Reduction rules, exploit protection, Windows Defender Application Control or the firewall's default configuration, and there is no Endpoint Security profile that affects it. This section is a genuine not-applicable, and worth saying out loud so nobody spends an afternoon there. The only network dependency worth checking is general internet reachability, since the licence must be acquired and renewed online.

The other environmental limits worth knowing

Proof it worked: a real hybrid-joined device that stepped up

The companion script for this post is Get-SubscriptionActivationState.ps1. It reads every surface above in one pass and tells you whether the block is the device, the join, or the licence. It is strictly read-only: it never issues an activation command, never writes a registry value or service state, and it reports the presence of product keys rather than their characters. If any read fails it prints READ FAILED and exits 1, so a broken read can never be mistaken for a healthy device.

The output below is a genuine run on a Windows 11 Enterprise 25H2 device that is Entra hybrid joined and subscription activated. Device name, domain and key material have been replaced, and the section separators are shortened to fit.

Windows PowerShell 5.1 - real run, identifiers replaced
.\Get-SubscriptionActivationState.ps1 -EventCount 6 ===== 1. Edition and build ===== Win32_OperatingSystem Caption: Microsoft Windows 11 Enterprise EditionID: Enterprise ProductName (registry): Windows 10 Enterprise Build: 26200.9168 # The registry ProductName really does say Windows 10 on Windows 11. Undocumented. Trust EditionID. ===== 2. Base Windows licence ===== Name: Windows(R), Professional edition Product key channel: Retail LicenseStatus: 1 (Licensed) # HEALTHY base layer. Professional here is correct on a stepped-up device, not a failure. ===== 3. Subscription step-up state ===== SubscriptionEdition: Windows 11 Enterprise SubscriptionType: 0 (User based subscription) SubscriptionStatus: 1 (Active) # HEALTHY step-up. BROKEN would read SubscriptionType 120, or a status other than 1. ===== 5. Join state ===== AzureAdJoined: YES DomainJoined: YES Qualifying join state: YES - Microsoft Entra hybrid joined # HEALTHY. BROKEN: AzureAdJoined NO, or WorkplaceJoined YES with AzureAdJoined NO. ===== 6. Licensing services ===== ClipSVC: Running / start type Manual sppsvc: Running / start type Automatic LicenseManager: Running / start type Manual # Manual plus Running is normal for the trigger-started pair. ===== 7. Licensing scheduled tasks ===== \Microsoft\Windows\Subscription\LicenseAcquisition state Ready | result 0x0 # 0x0 is the healthy last result. Anything else on a Pro-stuck device is your lead. ===== Verdict ===== SUBSCRIPTION: active. This device has stepped up. No device-side blocker was found by these checks. All reads succeeded and no blocker was found. Exiting 0.

The verdict block is the part built for triage. When the subscription is not active and no device-side blocker is found, the script says so explicitly and points off-device: no Windows Enterprise licence on the signed-in user, a licence assigned inside the four-day cache window, or a blocked token. That is the sentence that stops the KMS hunt.

Script validation, stated plainly: zero parse errors under Windows PowerShell 5.1 and PowerShell 7, zero non-ASCII bytes, no null-conditional operator, no module dependency, and no write of any kind. It exits 0 on a healthy device and 1 when a read fails or a prerequisite is unmet.

Tip: run it before you escalate, and again afterwards. The fastest way to close a subscription activation ticket is to show that every device-side prerequisite is green. That converts the conversation from "the laptop is broken" into "please check this user's Windows service plan", which is where the answer usually lives.

References

Microsoft official documentation:

Community deep-dives, both fetched and confirmed on topic before citing:

AuthorPostWhy it is worth reading
Rudy OomsNight at the Windows Store API Service: Secret of the Subscription ActivationReproduces the failure by deliberately blocking the store API with Conditional Access, then compares event logs from working and broken devices
Rudy OomsKB5036980 breaks the Windows 11 Enterprise Subscription ActivationA worked example of a servicing regression breaking the step-up during Autopilot, and how it was traced

Companion script: Get-SubscriptionActivationState.ps1 in the Windows-11-Scripts repository, under the subscription-activation-entra-licensing folder.

PowerShell — companion script

Download it from Imran76Awan/Windows-11-Scripts — no sign-in required. It is read-only: it reports and never changes a device or anything in Intune. Validate it in your own environment before relying on the output.

Get-SubscriptionActivationState.ps1 — Reports the Windows subscription activation posture of the local device: edition,
View all scripts on GitHub
Was this post helpful?
React below — no account needed
Share this post
LinkedIn X / Twitter Reddit Bluesky

More from EndpointWeekly

Windows 11
The Built-In Scheduled Tasks Windows 11 Actually Depends On
Windows 11 ships 284 scheduled tasks under MicrosoftWindows, and 47 of them are Disabled…
Windows 11
The machine bluescreened and there is no dump file: Windows…
A memory dump only survives if five independent settings line up: the dump type, a page…
Windows 11
Windows Search finds nothing, or eats the disk: the index, its…
The Windows Search index is a real database on disk, and most search failures are a…