Creating Compatibility Collections for Windows 11 in MEMCM

The other day I tweeted a screenshot of collections I had created in MEMCM for Windows 11 based off custom inventoried data – this post is just to explain how they were created and provide scripts and files for you to do the same if you wish.

The data is inventoried from Windows 10 workstations by customising the hardware inventory collected by MEMCM and adding values from the following registry keys:

  • HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\CompatMarkers\CO21H2
  • HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\TargetVersionUpgradeExperienceIndicators\CO21H2

These keys are used by the Microsoft compatibility appraiser and provide useful insights into whether a device will run a particular version of Windows and if not, what’s blocking it. I haven’t seen any official documentation around what these keys actually mean, but you’ll find a brief description in this blog.

Creating collections from this data allows you to see which and how many devices may be blocked from upgrading by the various kinds of block (including safeguard holds), and also for targeting Windows 11 to capable devices, creating a limiting collection for those devices, or targeting remediations to those that can be remediated. You can also sync collections with Azure AD groups so you can target with Intune instead if you prefer.

You can find the required files in my Github repo here.

First you’ll need to update your configuration.mof using the content from the configuration_additions.mof file. Then update your client settings > hardware inventory classes by importing the AppCompat mofs. I’ll assume you are familiar with the process involved, if not check out this guide and test in a lab environment first.

Once your hardware inventory has been updated, you’ll have some new tables in the database that will contain the compatibility data, and you can use query rules in your collections from this data. The PowerShell script Create-MEMCMW11CompatibilityCollections.ps1 will create all these collections for you, with a daily refresh schedule. The you just need to wait for clients to send inventory data so the collections will populate.

You could also use this info to build your own readiness report for Windows 11.