Loading...

How to fix Azure Classic Cloud Service prepare failure while using in-built ARM migration feature

How to fix Azure Classic Cloud Service prepare failure while using in-built ARM migration feature

Introduction:

 

Over the years, Azure Cloud Services (classic) has played a central role in Microsoft’s cloud offerings. However, as technology advances, there arises a demand for more sophisticated and efficient services. To address this, Microsoft has introduced Azure Cloud Services (extended support) as a successor to the classic model. It provides comparable functionality while adding extra benefits and features. This transition is essential for businesses to remain current with technology, enhance their cloud management capabilities, and be well-prepared for the future.

Cloud Services (extended support) is a highly anticipated and essential platform enhancement for Azure early adopter customers who are transitioning to Azure Resource Manager (ARM).

 

Cloud service in-built migration is a feature that allows you to migrate your cloud service deployments from the classic deployment model to the Azure Resource Manager deployment model. This can help you take advantage of the benefits of the Resource Manager model, such as role-based access control, tags, and policy.

However, sometimes the migration process may fail with an error message that says, "cloud service must be within a virtual network to be migrated". This means that your cloud service is not associated with a virtual network in the classic model, and you need to create one and link it to your cloud service before you can migrate.

 

In late 2018, Azure started automatically creating new deployments (without customer specified virtual network) into a platform created “default” virtual network. These default virtual networks are hidden from customers.

 

If you created your cloud service before 2018, it is possible that you never specified a virtual network for it, and it was deployed in the Azure public cloud without any isolation. This can cause problems when you try to migrate your cloud service to the ARM model, because the migration process requires a virtual network to map the network configuration of your cloud service. Hence, any cloud service deployment prior to 2018 would not support in-built migration to CSES.

https://learn.microsoft.com/en-us/azure/cloud-services-extended-support/in-place-migration-technical-details#migration-of-deployments-not-in-a-virtual-network

Therefore, you need to create a virtual network in the classic model and link it to your cloud service before you can migrate it. This will not affect the functionality or availability of your cloud service, but it will enable you to move it to the ARM model more easily.

In this blog post, we will show you how to do that, and what steps to take if you encounter similar issues during the migration process.

 

Pre-requisites:

 

  • You need to have an Azure subscription and an Azure account with sufficient permission to create and manage cloud services and virtual networks.

  • You need to have the name and location of your cloud service that you want to migrate. You can find them in the Azure portal or by using the Get-AzureService cmdlet - Get-AzureService (Azure) | Microsoft Learn

Symptom:

 

Cloud service inbuilt migration fails with below error:

Deployment <guid-value> in cloud service <cloud-service-name> must be within a virtual network to be migrated.

 

Solution:

 

Solution-1:

 

One solution to this scenario and the easiest way is to consider redeploying cloud service application directly in Azure Resource Manager (i.e. new cloud service extended support) by creating a VNET and associating the same to cloud service via service configuration file.

Sample configuration only with VNET & subnet details that can be added in the CSCFG file is shown below:

 

<Networkconfiguration>
    <Virtualnetworksite name="Your_RG-vnet">
        <Addressassignments>
            <Instanceaddress rolename="WebRoleSite">
                <Subnets>
                    <Subnet name="test"></Subnet>
                </Subnets>
            </Instanceaddress>
        </Addressassignments>
    </Virtualnetworksite>
 </Networkconfiguration>

 

The following example shows the complete NetworkConfiguration element and its child elements.

 

<ServiceConfiguration>
<NetworkConfiguration>
<AccessControls>
<AccessControl name="aclName1">
<Rule order="<rule-order>" action="<rule-action>" remoteSubnet="<subnet-address>" description="rule-description"/>
</AccessControl>
</AccessControls>
<EndpointAcls>
<EndpointAcl role="<role-name>" endpoint="<endpoint-name>" accessControl="<acl-name>"/>
</EndpointAcls>
<Dns>
<DnsServers>
<DnsServer name="<server-name>" IPAddress="<server-address>" />
</DnsServers>
</Dns>
<VirtualNetworkSite name="Group <RG-VNet> <VNet-name>"/>
<AddressAssignments>
<InstanceAddress roleName="<role-name>">
<Subnets>
<Subnet name="<subnet-name>"/>
</Subnets>
</InstanceAddress>
<ReservedIPs>
<ReservedIP name="GROUP <ResourceGroupNameOfReservedIP> <reserved-ip-name>"/>
</ReservedIPs>
</AddressAssignments>
</NetworkConfiguration>
</ServiceConfiguration>

 

Here is a quick reference guide for the pre-requisites to ensure a successful Cloud Services (extended support) deployment- Prerequisites for deploying Azure Cloud Services (extended support) | Microsoft Learn

 

Solution-2:

 

Migrate via creating new Staging deployment and VIP Swap. For this approach:

 

  1. Create a non VNET classic cloud service in the same region as the VNET you want to migrate and in the Azure portal, select the 'Staging' drop-down.

 

  1. Create a deployment with the same configuration as existing deployment by selecting 'Upload' next to the staging drop-down. The platform creates a Default VNET deployment in staging slot. Once staging deployment is created, the URL, IP address, and label populate.

 

  1. After verifying the data, select 'Swap' to swap the production and staging deployments. This operation swaps both the deployments. After swapping, you'll find staging deployment in production slot with the DNS and IP address of production deployment.

 

  1. You can now safely delete the staging slot and trigger the Cloud Service Migration Operation.

 

  1. Use this reference for step-by-step guide - Migrate cloud services not in a virtual network to a virtual network | Microsoft Learn

 

Solution-3:

 

Migrate the cloud service without VNET using PowerShell. For this approach:

 

  1. Get the deployment name for the Cloud Service you want to migrate:
     $serviceName = "My Service"
$deployment = Get-AzureDeployment -ServiceName $serviceName
$deploymentName = $deployment.DeploymentName

 

  1. Validate that you can migrate the Cloud Service by using the commands below:

 

    $validate = Move-AzureService -Validate -ServiceName $serviceName -DeploymentName $deploymentName -CreateNewVirtualNetwork
$validate.ValidationMessages

 

  1. Once validation is successful or has just warnings, you can move on to the Prepare step.

 

    Move-AzureService -Prepare -ServiceName $serviceName -DeploymentName $deploymentName -CreateNewVirtualNetwork

 

  1. Check the configuration for the prepared Cloud Service (extended support).
  • If you're ready to complete the migration, commit the migration:

 

    Move-AzureService -Commit -ServiceName $serviceName -DeploymentName $deploymentName

 

  • If you're not ready for migration and you want to go back to the old state, abort the migration.

 

    Move-AzureService -Abort -ServiceName $serviceName -DeploymentName $deploymentName

 

We hope this blog post has helped you resolve the issue of cloud service in-built migration error. If you have any questions or feedback, please leave a comment below or contact us at [email protected].

Published on:

Learn more
Azure PaaS Blog articles
Azure PaaS Blog articles

Azure PaaS Blog articles

Share post:

Related posts

Azure Storage - TLS 1.0 and 1.1 retirement

Overview TLS 1.0 and 1.1 retirement on Azure Storage was previously announced for Nov 1st, 2024, and it was postponed recently to 1 year later...

1 year ago

Efficient Management of Append and Page Blobs Using Azure Storage Actions

  Overview In Azure Storage, Blob Lifecycle Management (BLM) allows you to automate the management of your data based on rules defined by...

1 year ago

[Azure AI Search] Internal Server Error when creating CMK encrypted objects

Scenario Customers follow the Microsoft doc to create CMK encrypted objects (data source, index etc.), but get the 500 Internal Serv...

1 year ago

Optimizing Azure Table Storage: Automated Data Cleanup using a PowerShell script with Azure Automate

Scenario This blog’s aim is to manage Table Storage data efficiently. Imagine you have a large Azure Table Storage that accumulates logs from ...

1 year ago

Optimizing Azure Table Storage: Automated Data Clean-up using a PowerShell script with Azure Automat

Scenario This blog’s aim is to manage Table Storage data efficiently. Imagine you have a large Azure Table Storage that accumulates logs from ...

1 year ago

Restoring Soft-Deleted Blobs with multithreading in Azure Storage Using C#

Blob soft delete is an essential feature that safeguards your data against accidental deletions or overwrites. By retaining deleted data for a...

1 year ago

Performing simple Azure Table Storage REST API operations using curl command.

The blog provides guidance to perform simple Table Storage REST API operations such as Create table, Delete Table, Insert entity, Delete entit...

1 year ago

Bulk delete all the old jobs from the batch account

Deleting a Job also deletes all Tasks that are part of that Job, and all Job statistics. This also overrides the retention period for Task dat...

1 year ago

Utilizing Azure Storage and Runbooks for scheduled automated backups of Azure SQL Databases

In this article, we are going to provide detailed steps to create a scheduled Azure SQL Database backup to storage account using automation. T...

2 years ago

[Azure Service Bus] JMS messages getting dead-lettered

The article discusses a problem where numerous messages end up in the dead letter queue (DLQ) when the JMS service bus consumer connects to th...

2 years ago

Newsletter

Get the latest Dynamics 365 and Power Platform content in your inbox

A curated digest of community blogs, product news, videos, and podcasts — delivered without the noise.

Weekly updates Unsubscribe anytime Fresh community picks
We use your email only for the newsletter and you can unsubscribe at any time.
By subscribing, you agree to the privacy policy.