ESU (Extended Support Updates) allows organisations to maintain access to Windows Updates (and ongoing technical support) for platforms that Microsoft has designated End of Life. It is now managed via Azure, and a mandatory pre-requisite for non-azure hosted resources is connectivity via Azure ARC.
Billing for the ESU licensing for each server occurs monthly via the existing Azure commercial agreement and is charged per CPU core. Removing an ESU license from Azure terminates the billing at the next cycle, which is monthly.
To create a new ESU license
Navigate to Azure Arc blade (search for “Azure Arc”) then select “Extended Security Updates”.

On the “Licenses” tab, select “Create”

Complete the form as follows
| Subscription | Azure Subscription Name |
| Resource Group | Resource Group Name for the server |
| License Name | Type the hostname of the server |
| Region | (Europe) UK South |
| Activate License | Activate Now |
| SKU | Standard Edition |
| Core Type | Virtual Cores |
| Core Packs | All cores on the VM must be licensed. Minimum is 8. Select the appropriate quantities. EG for a 20 core server select 16 cores: 1 and 2 cores: 2 (16+(2*2)=20). The command wmic cpu get numberofcores will show how many cores a server has. |
Click the Create button.
Select “Eligible Resources”

Then select the checkbox on the row containing the server to which the license that was just created will be assigned. Then Select Enable ESUs.
Select Core Type: Virtual Cores and ESUs license: <The license created in the previous steps

Select Enable.
The procedure is complete.
To view the current ESU licenses being used, Azure Resource Graph Explorer should be used

The following query can be copied/pasted to the query pane and used to return the total number of CPU cores, total number of servers, and total ESU licenses in place:
resources
|where type =~ ‘microsoft.hybridcompute/machines’
|extend CoreCount = toint (properties.detectedProperties.logicalCoreCount)
|extend ESUCount = properties.licenseProfile.esuProfile.esuKeyState
|project name, CoreCount, ESUCount
|summarize totalcores = sum (CoreCount), totalservers = count(), ESUcount = count()
