An Azure service that is used to automate, configure, and install updates across hybrid environments.
Hello Vladimir Tsitovtsev
When you delete a resource group, Azure Resource Manager (ARM) deletes resources asynchronously and in dependency order. If any single resource delete keeps retrying or is blocked, the entire RG stays in Deleting.
- Check Activity Log at the resource group scope (most important):
This tells you exactly which resource is blocking deletion.
In Azure Portal
- Go to the Resource Group
- Select Activity log
- Filter:
- Operation =
Delete resourceorDelete resource group- Status =
Failed
- Status =
Look for:
- Failed delete operations
- Error codes like
Conflict,AnotherOperationInProgress,AuthorizationFailed - This is the authoritative source for the blocker.
- List remaining / “ghost” resources with CLI:
Even if the portal shows nothing, resources may still exist logically.
az resource list --resource-group <rg-name> -o table
If any resource is returned, that resource must be deleted first.
- Check for resource locks: Deletion fails silently if a lock exists.
az lock list --resource-group <rg-name>
If found, remove it:
az lock delete --ids <lock-id>
Azure requires all locks be removed before RG deletion
- Look for known hard blockers: When troubleshooting long-running delete operations, check for known hard blockers. Common resources that often cause these issues include Application Gateway or Load Balancer with backend references that haven't been detached, Virtual Machines or VM Scale Sets with disks, NICs, or public IPs still attached, Key Vaults with soft-delete or purge protection enabled, and Private Endpoints where the DNS zone or link still exists.
Azure retries delete calls for 15 minutes per resource, after which it can get stuck indefinitely if retries keep failing.
- Check for
managedByresources: Some resources are owned by another service (AKS, ML Workspace, Dev Center environments).
az resource list --resource-group <rg-name> --query "[?managedBy!=null]"
If present, you must delete the parent service, not the resource directly.
- Retry deletion after removing blockers:
az group delete --name <rg-name> --yes --no-wait
This does not force delete — it only works once blockers are gone.
Thanks,
Suchitra.