How To Prepare for an App Service Migration

Microsoft Azure cloud hero

If you want to move your existing web applications and web services into Azure App Services, but you aren’t sure if the projects will work in Azure, then the App Service Migration Tool is here to help. Microsoft recently released the tool in a preview state, and you can assess your projects in two simple steps.

The first step, if you have a public endpoint for your project, is to visit https://appmigration.microsoft.com/ and enter your project’s URL. The App Migration website will use publicly available information, like the information in your HTTP headers, to perform basic compatibility checks.

appmigrationwebsite

Here’s what happens when I run an analysis on petri.com. You can see this site uses PHP, and you can see that petri.com hosts itself on Nginx in Cloudflare. Going further into the analysis you’ll see that petri.com uses WordPress and dozens of client-side frameworks.

petrianalysis

As you’d expect with this level of analysis, nearly every website you own will be compatible with App Services, because App Services supports a wide range of technologies including Java, .NET, PHP, and Ruby, and offers both Windows and Linux environments. The devil, as always, is in the details.

To get into a more detailed analysis of your application, you can download and install a Migration Assistant Tool (currently only available for Windows). When you first launch the tool, you’ll be able to select an application from the local IIS instance, and then create an assessment report.

assesment
Migration Readiness Report

The assessment report includes a number of readiness checks. The checks try to find IIS settings that will not work in App Services. For example, there are checks to ensure your site is using standard protocols (HTTP and HTTPS) on standard ports (80 and 443). The checks also look for 3rd party ISAPI filters, and custom application pool identity settings.

If you’ve passed the readiness check, you can then use the tool to sign into Azure and begin the setup of a new App Service instance. Perhaps in an effort to simplify the process, the tool doesn’t let you change the default setting of a premium App Service plan. If you want to avoid premium pricing, you’ll need to make changes in Azure after the tool completes.

azureoptions

The migration tool will not move a database into the cloud for you. You’ll need to move any databases manually. The tool will, however, detect connection strings in an IIS application and offer to setup a hybrid connection from the new App Service to your database, if you choose to keep the database in its existing location. Otherwise, the migration itself consists of provisioning the App Service and App Service plan resources in Azure, then copying content from the local IIS site into the new App Service.

The tool feels targeted to an audience where point and click migration is appealing. This type of audience isn’t creating web sites from scratch and writing source code, but relying on install scripts and automated setups to create web sites in IIS with established platforms like WordPress. In enterprise shops, you’ll want to start your migration by moving source code into a platform like Azure DevOps, where you can build and deploy your projects from source control.

Also, while the Migration Assistant might be useful for spotting easy to find migration problems in an existing web application or web service, there are still many opportunities for failure in the migration. For example, the tool will check to make sure you use a supported framework, like ASP.NET, but won’t be able to know if you do something at runtime that doesn’t work in an App Service. One familiar example is PDF generation. There are components available in the .NET ecosystem to create PDF files, but some of these components rely on low-level system calls to the GDI subsystem of Windows. App Services are a sandboxed environment that disallows calls into GDI.

Give the Migration Assistant a try, but be aware of the limitations. Hopefully, the tool will evolve out of preview mode with the heuristics to catch even more potential problems.