In this article, we provide a quick overview of how the BizTalk Migrator tool handles deployment.
To see our detailed discussion of this topic, watch a recording of our live video demo in January 2021, presented by Dr Andrew Rivers (345 Technology) and Daniel Probert (Affinus), who were joined by Valerie Robb (Senior Program Manager at Microsoft): youtu.be/jkisMY0RhOA
The migration tool starts in the Discover stage of extracting the MSI into a Binding File, moving on to a Parse phase, then an Analyse phase. A Convert phase then generates scripts and templates, and the process ends with a Report phase.
- Discover phase: BizTalk assemblies contain the resources needed for BizTalk applications to work, such as schemas, orchestrations, pipelines, binding files and everything else. The tool extracts the binding files from the MSI and all the assemblies and DLL files.
- Parse phase: the tool reads through the binding file and then looks through all the historic assemblies, pulling out the definitions to find and build a source model.
- Analyse phase: the tool starts building a target model, to work out what can be migrated.
- Report phase: the tool produces HTML reports based on its assessment and outputs – useful when using the tool to test ahead of a real migration.
- Convert phase: the tool generates a large number of scripts and templates that will be used for deployment. The tool generates a series of PowerShell scripts and batch files. These can feel like a lot at first, but we have to keep in mind that this is because BizTalk Server is a black box: the BizTalk Migrator has to replicate a lot of what goes on inside that black box in order to generate the necessary scripts.
For example, the tool needs to create scripts to replicate the engines that handle running maps and resuming, among others, to recreate what’s needed for a cloud migration to Azure.
The “Deploy All” script
The tool outputs a series of PowerShell scripts – including a “Deploy All” script – and ARM (Azure Resource Manager) templates. A combination of the Azure CLI and ARM templates is used to deploy resources.
Azure CLI is an alternative to deployment instead of using ARM templates. It used to be that your only real choices for doing deployment to Azure programmatically were either PowerShell commandlets or ARM templates.
If you’ve ever used Visual Studio for doing development and deployment of Azure resources, you’ll be familiar with ARM templates. Azure CLI is relatively new and follows the idea of a command line interface that you can run on any shell, such as PowerShell or bash.
The Deploy All (Deploy-All.ps1) PowerShell script assumes a best case scenario for deployment. Instead of checking to see what you have in your subscription, it just runs. Because each subscription can differ, the script can easily fail if it finds that certain conditions aren’t met. This means that we don’t necessarily recommend it for a real deployment – but it’s still good for testing.
The Deploy All script will attempt to deploy everything in descending order. It’s starts by deploying the basics that have no dependencies before moving on to deploy those things that depend on those basics, as well as deploying system applications components.
Each script can be taken from Deploy All and put into our own pipeline, which should suit you if you already use DevOps pipelines or GitHub actions.
Migrator tool pre-requisite checker
The migration tool generates a batch file (Deploy-All.bat) to make things as easy as possible to get started with the Deploy All process.
However, before you proceed with running this, it’s important to run the migration tool’s pre-requisite checker. This presents the following 6 pre-requisites that need to be checked before proceeding with the Deploy All script.
- Is the Azure CLI installed?
- Can you login to the Azure CLI?
- Can you select a subscription?
- Is the Azure App Configuration resource provider registered?
- Is there a Free SKU App Configuration instance deployed?
- Are there any Free SKU Integration Account instanced deployed?
For starters, you will need to download and install the latest version of Azure CLI, because, unlike PowerShell, it won’t be available by default as part of your Windows installation.
In Azure, you can have only one instance of app configuration on the free SKU. You’re allowed only one per subscription, so attempting to deploy a second one will fail.
The same goes for integration accounts: you can have only one free integration account per region subscription. Attempting to use a second one will fail.
The script assumes that you have the appropriate owner or contributor permissions to deploy. This may be most relevant if you work for a large organisation and you’re not an admin. For example, your organisation may have a non–profit subscription and you’re not the admin of it, meaning that you don’t have contributor permissions on the subscription. In this case, the scripts are likely to fail because they will attempt to create new resource groups that don’t have permission to authorise.
Even with all prerequisites checked, you should bear in mind that the current deployment script can’t assure you of a flawless deployment. In fact, it’s important to note that the script will keep running if an error occurs.
This can cause what we refer to as a “wall of red”, because later resources will undoubtedly fail if earlier ones have failed. This means we can’t be sure what has deployed and what has failed.
We’ve looked at the main issues that have cropped up during the migrations our clients have done using the tool and have put our findings into the next article, Troubleshooting deployment issues with BizTalk Migrator.
Need help with your BizTalk migrations to the cloud?
In this article, we’ve given a quick overview of the BizTalk Migrator tool in action. In the next article, we’ll look at the main issues we’ve discovered while performing BizTalk migrations via the tool – so do read that to help you make your migrations as stress free as possible.
We think the BizTalk Migrator tool is an excellent resource for getting your BizTalk Server apps ready for the cloud – but it can’t do everything (yet!).
If you need a hand with the specific circumstances of your BizTalk migration, get in touch and let’s have a chat.