An Azure personalized recommendation engine that helps users follow best practices to optimize Azure deployments.
Hello Aimee Silva
The lowCpuThreshold property on Microsoft.Advisor/configurations has always been defined as an enumeration in the resource provider, and the only accepted values are:
5 (default), 10, 15, or 20
This is documented consistently across every current API version (stable and preview) of the resource type, and across the REST API, Bicep, and ARM template references:
- ARM template / Bicep reference —
Microsoft.Advisor/configurations(latest): https://learn.microsoft.com/en-us/azure/templates/microsoft.advisor/configurations —lowCpuThresholdallowed values:'5' | '10' | '15' | '20'. - REST API — Configurations - Create In Subscription (
2025-01-01): https://learn.microsoft.com/en-us/rest/api/advisor/configurations/create-in-subscription "CpuThreshold … Valid values: 5 (default), 10, 15 or 20." - REST API — Configurations - List By Subscription (
2025-01-01): same enum, same four values.
So 100 was never a valid value on the ARM contract, the docs page you referenced was updated recently to correct the property table so it matches what the Advisor RP actually accepts. That is why your deployment now fails validation on that value, even if a previous run appeared to succeed.
Why the Portal still shows 100:
The Azure Portal blade for Advisor's VM/VMSS right-sizing rules exposes a couple of UI options that are handled by the Portal experience itself, not by the Microsoft.Advisor/configurations ARM resource. The ARM lowCpuThreshold property specifically feeds Advisor's low CPU utilization evaluation (used to detect under-utilized VMs for shutdown/resize recommendations), which by design is bounded to a small threshold range see the algorithm details here:
- Optimize VM/VMSS spend – Azure Advisor: https://learn.microsoft.com/en-us/azure/advisor/advisor-cost-recommendations
That is consistent with why the ARM enum caps at 20.
To fix this update your Bicep/ARM template to use one of the supported values. For example:
resource advisorConfig 'Microsoft.Advisor/configurations@2025-01-01' = {
name: 'default'
properties: {
lowCpuThreshold: '20' // allowed: '5' (default) | '10' | '15' | '20'
duration: '7' // allowed: '7' (default) | '14' | '21' | '30' | '60' | '90'
exclude: false
}
}
Equivalent REST PUT body (sample from the official reference):
{
"properties": {
"lowCpuThreshold": "20",
"duration": "7",
"exclude": false
}
}
If you truly need a 100% threshold:
That value isn't currently expressible through the ARM/Bicep/REST contract for Microsoft.Advisor/configurations, so there's no template workaround. The best path is to open a feature request using below link:
https://feedbackportal.microsoft.com/feedback/post/
Thanks,
Suchitra.