Automatic edition upgrade for Windows devices

My first blog post in this new year will be about the feature to automatically upgrade the edition of Windows devices. This is already possible, for a while, for Windows 10 devices managed via the MDM channel. However, starting with Configuration Manager 1610 this is now also possible for Windows 10 devices managed via the Configuration Manager client.

In this post I’ll provide the general information and configuration settings that are applicable for Microsoft Intune hybrid and Microsoft Intune standalone. I’ll end this post by showing the details of the end result on a Windows 10 device managed via the Configuration Manager client. Think about details like how this is achieved and the relation to the MDM channel.

Information

The edition upgrade feature can be used to, for example, automatically upgrade devices bought with Windows 10 Pro to Windows 10 Enterprise, without the requirement to reimage the devices. This enables users to buy their own device and get their license upgraded after enrollment. With the new addition to Configuration Manager 1610, the following management scenarios are supported for Windows 10 devices:

  1. Managed via the MDM channel by Microsoft Intune standalone;
  2. Managed via the MDM channel by Microsoft Intune hybrid;
  3. Managed via the Configuration Manager client by Microsoft Intune hybrid (or Configuration Manager standalone).

Within each of those management scenarios the following upgrade paths are supported.

From edition To edition
Windows 10 Pro Windows 10 Enterprise
Windows 10 Pro N Windows 10 Enterprise N
Windows 10 Home Windows 10 Education
Windows 10 Home N Windows 10 Education N
Windows 10 Mobile Windows 10 Mobile Enterprise
Windows 10 Holographic Windows 10 Holographic Enterprise

Configuration

Now let’s have a quick look at the configuration. To perform an edition upgrade, Microsoft Intune hybrid and Microsoft Intune standalone, both require the following information during the creation of the policy:

  • Name: A name for the edition upgrade policy;
  • Description (optional): A description for the edition upgrade policy;
  • SKU to upgrade device to/ Edition to upgrade to: A selected edition that the edition upgrade policy should upgrade to;
  • Product Key: For Windows 10 Desktop, a valid product key that can be used by the edition upgrade policy to install the new version of Windows. This can be either Multiple Activation Keys (MAK) or Key Management Server (KMS) keys;
  • License File: For Windows 10 Mobile and Windows 10 Holographic, a valid license file that can be used by the edition upgrade policy to install the new version of Windows.

This information is requested during different wizards, in Microsoft Intune hybrid and Microsoft Intune standalone, as shown below.

Microsoft Intune hybrid Microsoft Intune standalone
EdiUpgrPol_MSIH EdiUpgrPol_MSIS

End result

Let’s end this post by looking at the end result. In this case it’s not really interesting to look at a screenshot of before and after, as it will simply show a different edition. It’s a lot more interesting to look at how it’s achieved. For Windows 10 devices that are managed via the MDM channel, the WindowsLicensing CSP is used.

Now let’s have a look at how this is achieved on Windows 10 devices that are managed via the Configuration Manager client. As the edition upgrade policy is applied like a configuration baseline, a good place to start with looking is the DcmWmiProvider.log. Below is a log snippet about a successful edition upgrade.

>>>>>>Starting PutInstanceAsync in OsEditionUpgradeProvider<<<<<<
Class name: MDM_WindowsLicensing
>>>>>>Starting PopulateKeyValueParameters in OsEditionUpgradeProvider<<<<<<
Getting properties of wrapper class MDM_WindowsLicensing.
>>>>>>Finished PopulateKeyValueParameters in OsEditionUpgradeProvider<<<<<<
Using created object instance __PATH = \\.\root\cimv2\mdm\dmmap:MDM_WindowsLicensing.ParentID=’./Vendor/MSFT’,InstanceID=’WindowsLicensing’
Creating parameters for method CheckApplicabilityMethod
Requesting productkey for EditionUpgrade
Successfully requested productkey for EditionUpgrade
Calling method CheckApplicabilityMethod
Successfully Executed method CheckApplicabilityMethod, return value 0
Calling method UpgradeEditionWithProductKeyMethod
Successfully Executed method UpgradeEditionWithProductKeyMethod, return value 0
PutInstanceAsync Succeeded
>>>>>>Finished PutInstanceAsync in OsEditionUpgradeProvider<<<<<<

That log snippet provides clear information about the class (MDM_WindowsLicensing) and the methods (CheckApplicabilityMethod and UpgradeEditionWithProductKeyMethod) that are used to upgrade the edition by creating a new instance. By using a combination of PSEXEC and my favorite WMI Explorer, I can simply locate the created instance, as shown below.

MDM_WindowsLicensing

After locating the MDM_WindowsLicensing class, or after a logic interpretation of the name of the class, and the created instance, it’s pretty clear that the MDM Bridge WMI Provider is used to perform the edition upgrade action. In other words, the Configuration Manager client is simply using the existing MDM capabilities. Basically this means that all management scenarios use the same configuration method, but just use another path to get the job done.

More information

Fore more information about the Windows edition upgrade policy, the Windows licensing CSP and the Windows licensing WMI class, please refer to:

6 thoughts on “Automatic edition upgrade for Windows devices”

Leave a Comment

This site uses Akismet to reduce spam. Learn how your comment data is processed.