Migrate from Azure Service Management to Azure Resource Manager


Recently we started to migrate all of our customers from Azure Service Management (also known as ASM or Azure Classic) to Azure Resource Manager (ARM). The reason we migrate everything to ARM are various. A few reasons are:

  • RBAC on resources
  • Use tags on resources
  • Easier deployments (both new and incremental)
  • No need to update PowerShell scripts

Azure Classic and Azure Resource Manager picture

There are different possibilities to migrate from ASM to ARM:

As we have multiple things that are not supported by Microsoft’s own solution for migrating from ASM to ARM we decided to use MigAz. As the BlobCopy of MigAz is very slow we use AzCopy to copy the content between the storage accounts – yes this requires downtime.

Migrate from ASM to ARM

I was working on a migration of a customer that uses Virtual Machines, a VNET-TO-VNET and an ExpressRoute to connect from on-premises to the Azure Virtual Machines. Migrating ExpressRoutes are not supported with the PowerShell cmdlets Microsoft provides to migrate from ASM to ARM, so I decided to use MigAz together with AzCopy. However before I could use this I needed to migrate the ExpressRoute and the gateways first.

ExpressRoute & Gateways

Moving the ExpressRoute from Classic to ARM is not that hard and well documented by Microsoft. However when you move the ExpressRoute over to ARM it is still using the Gateway from the Classic environment.

ExpressRoute Circuit co-existence ASM and ARM

If you want to migrate from ASM to ARM you do not want to use the Gateways from ASM. So I needed to migrate the Gateways (for ER and VNET-TO-VNET) also. However documentation about tis part was not provided by Microsoft. So what I did was using some existing documentation and some common sense.

The VNET in ARM was already created with a Gateway subent (/27 or smaller is needed for both ER and VNET-2-VNET) and the ExpressRoute was moved. Now I need to create the Gateways for both the ER and the VNET-TO-VNET. For this I used the documentation “Configure ExpressRoute and Site-to-Site coexisting connections for the Resource Manager deployment model” (only point 4 and 6).

As the gateways are created I could start removing the Circuit Link with the Gateways in the Classic environment and link the Circuit to the Gateway created in ARM.

The complete script I used for migrating the ExpressRoute


Virtual Machines

Now the ExpressRoute and Gateways are migrated to ARM I could start the migration of the Virtual Machines to ARM using MigAz and AzCopy. I used MigAz to generate the JSON file and to create the environment from scratch in ARM. I used AzCopy to copy the virtual machine disks to the Storage Account in ARM. After the copy was completed I could start the virtual machines and the migration was completed.

Do you have any questions related to this blogpost, please leave a message and I’ll get in contact with you as soon as possible!

1 Star2 Stars3 Stars4 Stars5 Stars (2 votes, average: 5.00 out of 5)

One thought on “Migrate from Azure Service Management to Azure Resource Manager

  1. Paresh Mundade

    Very nicely documented! Thanks to people like you, it helps a lot of folks around.


Leave a Reply

Your email address will not be published. Required fields are marked *