Move guidance for classic deployment model resources

The steps to move resources deployed through the classic model differ based on whether you're moving the resources within a subscription or to a new subscription.

Move in the same subscription

When you move resources from one resource group to another resource group within the same subscription, the following restrictions apply:

  • You can't move virtual networks (classic).
  • You must move virtual machines (classic) with the cloud service.
  • You can only move the cloud service when the move includes all its virtual machines.
  • You can only move one cloud service at a time.
  • You can only move one storage account (classic) at a time.
  • You can't move storage account (classic) in the same operation with a virtual machine or a cloud service.

To move classic resources to a new resource group within the same subscription, use the standard move operations through the portal, Azure PowerShell, Azure CLI, or REST API. Use the same operations as you use for moving Resource Manager resources.

Move across subscriptions

When you move classic cloud services to a new subscription, the following restrictions apply:

  • The source and target subscriptions need to be under the same Microsoft Entra tenant.
  • Cloud Service Provider (CSP) subscriptions don't support migrating classic cloud services.
  • All classic resources in the subscription must be moved in the same operation.
  • The target subscription must not have any other classic resources.
  • You can only request the move through a separate REST API for classic moves. The standard Resource Manager move commands don't work when moving classic resources to a new subscription.

To move classic resources to a new subscription, use the REST operations that are specific to classic resources. To use REST, do the following steps:

  1. Check if the source subscription can participate in a cross-subscription move. Use the following operation:

    POST https://management.azure.com/subscriptions/{sourceSubscriptionId}/providers/Microsoft.ClassicCompute/validateSubscriptionMoveAvailability?api-version=2016-04-01
    

    In the request body, include:

    {
     "role": "source"
    }
    

    The response for the validation operation is in the following format:

    {
     "status": "{status}",
     "reasons": [
       "reason1",
       "reason2"
     ]
    }
    
  2. Check if the destination subscription can participate in a cross-subscription move. Use the following operation:

    POST https://management.azure.com/subscriptions/{destinationSubscriptionId}/providers/Microsoft.ClassicCompute/validateSubscriptionMoveAvailability?api-version=2016-04-01
    

    In the request body, include:

    {
     "role": "target"
    }
    

    The response is in the same format as the source subscription validation.

  3. Move all classic resources that pass validation from one subscription to another subscription. Use the following operation:

    POST https://management.azure.com/subscriptions/{subscription-id}/providers/Microsoft.ClassicCompute/moveSubscriptionResources?api-version=2016-04-01
    

    In the request body, include:

    {
     "target": "/subscriptions/{target-subscription-id}"
    }
    

The operation might run for several minutes.

Possible error messages in the source subscription validation stage

"Subscription migration for SubscriptionId {subscription ID} cannot continue as IaaS classic to ARM migration is in progress for the following deployment resource: xx in HostedService {classic-cloud-service-name}"

This message means there's a classic cloud service that's ongoing migrating to the cloud service (extended support). You should abort this ARM migration operation and then retry validation.

"Source subscription {subscription ID} is empty"

The source subscription can't be empty, disabled, deleted, or currently undergoing migration. During the migration period, write operations aren't allowed on resources within the subscription.

"Source subscription contains application(s) which doesn't support migration: {application name}"

"Source subscription contains following cloud service(s) which doesn't support migration: {cloud service name}"

You can't migrate the resources mentioned in the error message, so delete these resources before triggering the migration.

More information

The domain name and the public IP are still the same as before migration. Under normal circumstances, there's no downtime for the cloud service during the migration.

Next steps

If you have trouble moving classic resources, contact Support.

For commands to move resources, see Move resources to new resource group or subscription.