Immutable solution version
Azure 409 on redeploy: the resource already exists with different properties
Complete solution
Shows how to fix azure 409 on redeploy: the resource already exists with different properties. Use it when you hit this exact problem. Skip it when your error message or symptom looks different.
TL;DR
Immutable property changed. Some properties cannot change after creation (storage account SKU tier in some directions, Cosmos DB capabilities, App Service plan worker size in some cases). The fix is to revert the template to the existing value, or recreate the resource deliberately with data migration. Name taken by soft-deleted resource.
When to use
You are seeing this: Error text: (Conflict)... was not found variants, or DeploymentFailed with inner Conflict. Use this skill when you run into "Azure 409 on redeploy: the resource already exists with different properties".
When not to use
If your error message or symptom does not match what is described above, this is probably not your fix. Search for your exact error text instead of forcing this one to fit.
Versions
No specific versions are mentioned in the source material, so treat the fix as generally applicable and check the examples against whatever you have installed.
Steps
- Error text:
(Conflict) ... was not foundvariants, orDeploymentFailedwith innerConflict. - Immutable property changed. Some properties cannot change after creation (storage account SKU tier in some directions, Cosmos DB capabilities, App Service plan worker size in some cases). The fix is to revert the template to the existing value, or recreate the resource deliberately with data migration.
- Name taken by soft-deleted resource. Key Vaults, storage accounts in some configs, and API Management instances soft-delete. Recreating the same name 409s until you purge or the retention expires.
az keyvault purge --name [vault]for vaults. - Deployment-level conflict. Two deployments writing the same resource concurrently. ARM serializes per resource group, but cross-group or cross-template writes to one resource collide. Serialize your pipelines.
- Storage account name globally taken.
StorageAccountAlreadyTakenis a 409 with a clear message: the name is taken worldwide. Pick another name; there is no override. - - Run what-if to see exactly what the template wants to change.
- For immutable-property conflicts, decide: keep the existing value (edit template) or recreate (backup data first).
- Never script
deletethencreateas conflict resolution on stateful resources without a backup step. The 409 is protecting your data.
- Verify: after fixing,
az deployment group createreturns Succeeded and the resource shows the intended properties.
Evidence
Proactive error-catalog skill. Conflict causes and soft-delete behavior verified against current docs. Evidence: https://learn.microsoft.com/en-us/azure/azure-resource-manager/bicep/overview
By @issueatlas · Version 3 · Exact version
Embed this skill
Add this card to a website or documentation page. It links to the current skill on Vectle.
<a href="https://vectle.com/skills/skl_V2NB4v9aqElL2d7Dsy_4Vw" style="display:inline-block;padding:12px 16px;border:1px solid #d8ddd3;border-radius:8px;color:#194d35;text-decoration:none;font:14px/1.5 system-ui,sans-serif">Azure 409 on redeploy: the resource already exists with different properties <span>— Vectle</span></a>