At the time of writing this, moving/migration of VMs with managed disks to a new Azure Subscription, is not supported in Azure. It is possible however, to move managed snapshots of a VM’s vhds  to another Azure subscription, and then ‘reconstruct’ the VM using the OS and data disks snapshots or managed disks. The VM object itself is just metadata running the vhds  (The Move option for both snapshots or managed disks displays in the Azure portal, but we found that the portal Move option does not work for our various Azure Accounts and Subscriptions.(See screen shot below).) The Move operations of snapshots or managed disks can be done easily via PowerShell.

Why move managed disks to another subscription? For example, once a Dev/Test environment is proven, the typical procedure is to migrate the IaaS infrastructure to an Enterprise Subscription for a production environment. Also, moving copies of snapshots out of the main subscription is beneficial for data retention in case of Disaster Recovery or accidental deletions.

A work around for this current limitation – not being able to move/migrate a VM, is to move the managed snapshot(s) to a new Subscription, and then create new managed disks of OS and data vhds for VM in another subscription. It is also possible to migrate a copy of a snapshot or a managed disk into a Storage Account as a page blob to be used by other subscriptions or even other Azure accounts. Read about moving Snapshots to a Storage Account

Unsuccessful Snapshot Move In ARM Portal:

While the option to Move to another subscription is shown on the snapshot blade, validation of the process failed giving the error that this subscription is not ‘registered to use Microsoft.Computer/ManagedResourcesMove feature…but a snap shot can easily be copied to another subscription via PowerShell.


Copy and Move a managed snapshot with PowerShell

Login to Azure and Select Subscription

#1. Declare Variables:
$sourceSubscriptionId='<Subscription ID>'
$sourceResourceGroupName='<Resource Group of the snapshot>'
$snapshotName='<Name of Snapshot to be Copied and Moved>'
$destinationSubscriptionId='<Subscription ID of the destination Subscription'
$destinationResourceGroupName='<Resource Group that the snapshot will be copied and moved to>'

#2. Set the context of source Subscription ID
Select-AzureRmSubscription -SubscriptionId $sourceSubscriptionId

#3. Get the snapshot
$snapshot= Get-AzureRmSnapshot -ResourceGroupName $sourceResourceGroupName -Name $snapshotName

#4. Set the context of the destination Subscription ID
Select-AzureRmSubscription -SubscriptionId $destinationSubscriptionId

#5. Instantiate the Snapshot Configuration
$snapshotConfig = New-AzureRmSnapshotConfig -SourceResourceId $snapshot.Id -Location $snapshot.Location -CreateOption Copy

#6. Instantiate new snaphot in destination subscription and resource group
New-AzureRmSnapshot -Snapshot $snapshotConfig -SnapshotName $snapshotName -ResourceGroupName $destinationResourceGroupName