Having a common set of Hosts and Handlers over different environments is a quite common practice. Being able to script the setup is a great way to ensure you have the same set hosts and settings. A good approach when you write scripts to handle Hosts, instances and handlers is to be able to re-run them over and over and just creating new if not present.
Sample scripts can be found here: https://github.com/skastberg/biztalkps/tree/master/ScriptedInstallSamples
Create a host and instances
I use the PowerShell Provider that comes with BizTalk Server which I find handy. If you prefer that you could use the WMI classes MSBTS_Host, MSBTS_HostInstance and MSBTS_ServerHost. The sample below uses the PowerShell Provider. Note that for hosts I do a Push-Location to “BizTalk:\Platform Settings\Hosts\“. To create objects with the Provider, navigating to the right location is a must before calling New-Item.
To create a host
To create an instance
The full samples can be found in the BizTalk-Common.psm1.
Making a host handler for an adapter
To configure handlers with WMI use the classes MSBTS_ReceiveHandler and MSBTS_SendHandler2. Doing it with the PowerShell Provider is straight forward using New-Item.
The full sample can be found in the BizTalk-Common.psm1.
Exporting and importing Hosts, instances and handlers
A lot of customers have asked for a way to “copy” their setup in let’s say QA to Production. One tool you could use is the BizTalk Server Migration Tool in which you can select what parts you want to move, that said you might want to change some settings along the way. I have written a script (Export-BizTalkHostsRemote.ps1) to export Hosts, Host Instances and Handler to a CSV file and another (Configure-Hosts.ps1) to import using the edited output from the export. I could have used the existing settings export but wanted to easily be able to edit the file in Excel. I have intentionally left out throttling settings. Hope you find them handy, if you find any issues let me know.
Format of the file
Column | Comment |
HostName | Name of the host |
HostType | Expected values InProcess or Isolated |
GroupName | Windows Group that controls access to the host |
AuthTrusted | Authentication Trusted setting in the properties dialogue. |
IsTrackingHost | Allow host tracking setting in the properties dialogue. |
Is32BitOnly | 32-Bit only setting in the properties dialogue. |
MessagingMaxReceiveInterval | Messaging Polling Interval for the host |
XlangMaxReceiveInterval | Orchestration Polling Interval for the host |
InstanceServer | A pipe | separated list of instances
Server1|Server2 |
InstanceUser | Service Account used for the host instances |
InstanceUserPwd | In the export same value as InstanceUser for the import it expects path to a password in a KeePass database |
ReceiveHandler | A pipe | separated list of Receive adapters for this host.
WCF-SQL|MSMQ|FILE |
SendHandler | A pipe | separated list of Send adapters for this host. A * will mark this as the default host.
WCF-SQL|*MSMQ|FILE |
Amazing helpful and detailed information! Thank you for sharing!
Thanks, glad it helps!