As Azure grows and resources continue to improve, Microsoft will continuously retire old and outdated resources. Any resources not migrated by the retirement date may stop working as Microsoft shuts down the endpoints on which they run. Below is a list of all resources that will be retired within the next six months.

DateRetiring ResourceFeature/VersionNew ResourceMigration Plan
2024-08-31Storage AccountClassicStorage AccountMigrate
2024-08-31App ServiceApp Service v1/v2App Service v3Migrate
2024-08-31Cloud ServicesClassicCloud Services (extended support)Migrate
2024-08-31Machine Learning StudioClassicAzure Machine LearningRebuild
2024-08-31Virtual MachinesVirtual Machine Av1Virtual Machine Av2Resize
2024-08-31Virtual MachinesVirtual Machine HBVirtual Machine HBv2/HBv3Resize
2024-08-31Virtual NetworkClassicVirtual NetworkMigrate
2024-08-31Azure Cache for RedisClassicVirtual Machine Scale SetsMigrate
2024-08-31Integration Service Environment (ISE)ClassicLogic AppsExport
2024-08-31API Management ServicesAPI Management Services stv1API Management Services stv2Migrate
2024-08-31Application GatewayClassicApplication GatewayRecreate
2024-08-31Reserved IP AddressClassicPublic IP AddressUpgrade
2024-08-31ExpressRoute GatewayClassicExpressRoute GatewayMigrate
2024-08-31VPN GatewayClassicVPN GatewayMigrate
2024-09-16Azure Database for MySQLAzure Database for MySQL – Single ServerAzure Database for MySQL – Flexible ServerMigrate
2024-09-30Azure Managed GrafanaGrafana version 9Grafana Version 10Upgrade
2024-10-31Azure Cache for RedisTLS 1.0/1.1TLS 1.2Update
2024-10-31Storage AccountTLS 1.0/1.1TLS 1.2Update

There are several ways to determine if your environment is running these retiring resources.

Email

Microsoft will send out emails regularly with information about resources in your tenant that are being retired. It will include a list of resources affected, information about what is being retired, and a plan to transition to the latest version of each resource.

Azure Retiring Resources Email

Portal

When accessing resources in the portal, Microsoft will show a notification on any resource that is being retired. It may include a link to documentation on transitioning to the latest version and a link to do a step-by-step migration using their wizard.

Azure Retiring Resources Portal
Azure Retiring Resources Email Migration Link

Azure Advisor

Azure provides a resource called Advisor, which contains a Workbook that compiles a list of all resources announced as retiring. To access this, log into the portal and go to Advisor. On the left panel, select Workbooks. Choose the Service Retirement (Preview) from the list by clicking on it. Here, you can see a list of all resources being retired and any affected resources in your tenant. You can edit and save the Workbook and pin it to a Dashboard for easy access.

Azure Retiring Resources Azure Advisor

CLI

Either Azure CLI or PowerShell can be used to search for resources programmatically.  In the below example, the Azure CLI can be used to find all Classic resources. 

# Define the tenant ID
$tenantId = "XXXXXXXXXXX"

# Connect to Azure with the specific tenant
az login --tenant $tenantId

# Get all subscriptions in the specified tenant
$subscriptions = az account list --query "[?tenantId=='$tenantId'].{id:id, name:name}" --output json | ConvertFrom-Json

# Initialize array to hold all classic resources across all subscriptions
$allClassicResources = @()

# Loop through each subscription
foreach ($subscription in $subscriptions) {
    Write-Output "Processing subscription: $($subscription.name)"

    # Set the current subscription context
    az account set --subscription $subscription.id

    # List classic resources in the current subscription
    $classicResources = az resource list --query "[?contains(type, 'Classic')]" --output json | ConvertFrom-Json

    # Add subscription ID and name to each resource for context
    foreach ($resource in $classicResources) {
        $resource | Add-Member -MemberType NoteProperty -Name SubscriptionId -Value $subscription.id
        $resource | Add-Member -MemberType NoteProperty -Name SubscriptionName -Value $subscription.name
        $allClassicResources += $resource
    }
}

# Display the classic resources
if ($allClassicResources.Count -eq 0) {
    Write-Output "No classic resources found across all subscriptions."
} else {
    Write-Output "Classic resources found across all subscriptions:"
    $allClassicResources | ForEach-Object {
        Write-Output "Subscription: $($_.SubscriptionName) ($($_.SubscriptionId))"
        Write-Output "Name: $($_.name)"
        Write-Output "Type: $($_.type)"
        Write-Output "Resource Group: $($_.resourceGroup)"
        Write-Output "Location: $($_.location)"
        Write-Output "---------------------------"
    }
}

For more information or any questions, please contact us.

Share This