BizTalk: Automating BTDF Generated MSI Deployments in Multi Server Environment
Introduction
Well I am not going to tell you about BizTalk Deployment Framework, it is already a well known tool for customizing the BizTalk MSI for deployments and has already proven its features to be well worth to use. Most of the people do BTDF deployments in various ways say manually or by using batch scripts or using powershell scripts etc.
However I see some limitations being faced by the users like the deployment process needs deploy/undeploy each msi package into all BizTalk servers in the farm manually by logging in to each server and also it includes a lot of manual steps or human intervention. One of our clients is using BTDF where we also faced such limitations.
We have scripts too but those were not generic, cannot be used for all environments and cannot do remote deployment on all the BizTalk servers.
So I thought to make a generic automated process for all BTDF users to do deployments on all the BizTalk servers in the BizTalk farm in a single shot(be it single server or more) and also with clubbing new and upgraded BizTalk application deployments into a single unit of automated deployment etc. So, I came up with a tool that makes the whole process easy. I have seen several scripts available over net, they guide you to some extent, but they are not complete and not generic and not meant for full automated remote deployment. On the other hand this tool can be used by any BTDF user and for any environment say DEV, UAT and PROD etc , this is a generic tool for BTDF deployments. Also you need not to login into each server to deploy each msi. The most interesting part of this is it supports remote deployment in to all BizTalk servers that too with clubbing new and upgraded application msi deployments in to a single deployment unit, and it supports GUI too for easy step by step navigation.
Who is this for?
This article targets the audience who are already using BTDF as a part of their BizTalk applications deployment process. They can leverage this tool to make the applications deployment process even smooth and easy further.
What does this tool do?
This tool provides following things.
- Automates all BTDF MSI application deployments without much manual steps.
- Avoids manual deployment steps in to all BizTalk servers by doing automated Remote deployments into all BizTalk servers in the BizTalk Farm. Avoids logging into each server to deploy.
- Clubbing New and upgrading BizTalk application deployments into a single unit. Means we can run the tool to deploy new applications as well as undeploy and deploy existing applications to upgrade them simultaneously.
- Supports GUI where ever needed.
- Supports both 32bit and 64bit environments
- Generic, can be used by any BTDF user and for any environment(example dev, uat, prod)
Walk Through Steps
I have uploaded the tool in the gallery here . Download and extract it anywhere in one of the BizTalk servers.
Once you extract, you will see the contents like below.
Now place all your BTDF generated msi files in the folder "BizTalkMSI"
You can place both the following msi files types into this folder for a single shot deployment
- The BizTalk application msi is going to be deployed for the first time
- You are going to upgrade the existing BizTalk application(means application already exists(already deployed earlier), but this current msi is a upgraded one which needs redeployment)
Now, run/double click on the file "InitiateDeployment.bat. This will in turn execute the RunDeployment.ps1 script. You should not run the RunDeployment.ps1 file directly because GUI components will not work, so run InitiateDeployment.bat file.
Once you run it, after few seconds, It will prompt/or show few windows. The good thing is you only need to enter the details only once, no need to re enter them again and again for every msi.
So now it will prompt you to enter the BizTalk user account details. By default, it will populate the current logged in user account fully qualified name like domain\username. Before Clicking OK, make sure you enter correct user account details fully qualified name that has access to BizTalk.
Now next it will prompt to enter domain qualified user account details for HTTP/Soap identities that is used on IIS has access to BizTalk.
Once you click ok, it will prompt the following window with populating all existing BizTalk application names.
This is one of the main important steps that you should be keen of. You should select the application names based of following needs
There are two cases for this
- If you are just going to deploy a new msi files, I mean not going to upgrade any existing files, just do not select any thing and click “OK”
- If you are also going to upgrade at least one of the existing BizTalk applications, choose those application names by using CTRL key and then click OK.
This step is required because, whatever the application name you choose here (if any), those applications will be un deployed first. If you are not going to upgrade any existing applications, just click OK without selecting any. There is a reason behind including this step, you neither can read BizTalk application name from an MSI, nor assume that MSI name itself is the BizTalk Application name, because any one can change the MSI file name, and also different teams follow different approaches to name the msi. so to make this tool generic, i came up with this step.
Once you click OK, it will open a file dialogue box to choose the environment file,
Choose the correct environment file and then click OK.
That’s it;
It will take care of all the rest of the things for deployment. It deploys all msi packages in to all servers in the BizTalk farm and into BizTalk databases. Once completed you just need to verify your applications J J
Very easy indeed, isn't it?
How it works?
There is a lot much the script does inside, but at a higher level view following things are done by script
Step wise,
- Prompts for BizTalk user account details
- Prompts for Http/soap identity details.
- Show list of all BizTalk applications in a List box (these application names are read from BizTalk explorer OM class)
- If you choose any applications from the list, they will be uninstalled from the BizTalk database.
- loop through each msi file from the BizTalkMSI folder
- Now extract the server names in that BizTalk farm and Loop through each BizTalk server in the Farm
- Get the productcode from the msi file
- If the product code exits, then uninstall the application.
- Install the msi into that particular server
- Install in to BizTalk database
Customization
As a generic purpose, I have made this tool to prompt for BizTalk user account and HTTP/SMPT identity accounts.
However, if you want to change/remove/add the steps, you can make the changes in the script according to your requirement.
Limitations
I have seen some cases, where we want to deploy or undeploy the BizTalk applications in particular order wise due to dependency.
This tool does not handle this case. I have already developed another tool to handle this case, will post about that tool shortly after I complete my test cases.
Conclusion
This tool can be used to leverage the BTDF deployment process. It can be used simultaneously for newer installation as well as for upgrading existing applications. You need not to login into each server, just login into any one server and run the batch file. It does complete installation into all BizTalk servers in BizTalk farm, be it a single server or more.
See Also
Another important place to find a huge amount of BizTalk related articles is the TechNet Wiki itself. The best entry point is BizTalk Server Resources on the TechNet Wiki.