Following the topic from my previous post, when we are configuring/optimizing a new environment, if some features are installed like EDI features or RosettaNet Accelerator, if we create different or dedicated host and host instances for each functionality, for example, a host instance for receive, send, process (orchestrations), tracking and so on; of course then we need to associate them as a specific handler of each adapter (receive or send handler) and if we want to delete the “BizTalkServerApplication” as a receive handler from each adapter… we can’t!
This happens because, at least, both EDI and RosettaNet will create during the installation some Receive Ports:
- BatchControlMessageRecvPort with a receive location BatchControlMessageRecvLoc using SQL Adapter
- ResendReceivePort with a receive location ResendReceiveLocation using SQL Adapter
- LOB_To_PrivateInitiator with a receive location LOB_To_PrivateInitiator using SQL Adapter
- LOB_To_PrivateResponder with a receive location LOB_To_PrivateResponder using SQL Adapter
And all these ports, by default during the installation, are configured with the only existing Receive handler available at the time: “BizTalkServerApplication”.
To accomplish the task of deleting “BizTalkServerApplication” as a receive handler of each adapter, we need to do basically the same steps described in my last post:
- Manually reconfigure the Receive handler for each the existing receive location first, configuring them with the new Receive Handler;
- and then manually delete the “BizTalkServerApplication” as a Receive handler for each adapter;
This task can be more normal to happen on the first time we configure/optimize the environment – day one of the BizTalk Server – but can be more critical if you reach an existing environment, already containing several BizTalk Applications running, that is not configured according to best practices in terms of host and host instances.
Once again, all of these tasks are time-consuming, and to be fair… again…, they are a little boring to do after we know how to do it manually;
So how can we automate tasks? and reuse them whenever necessary and at the same time save significant time for other tasks?
Using PowerShell is a good option J. Windows PowerShell is a Windows command-line shell designed especially for system administrators and can be used by BizTalk administrators to help them in automating repetitive tasks or tasks that are time-consuming to perform manually.
This is a simple script that allows you to configure the receive handlers associated with all the existing Receive Ports in your environment that are using the SQL Adapter, but this can be easily changed to cover all the Receive Locations independently of the configured adapter:
$catalog = New-Object Microsoft.BizTalk.ExplorerOM.BtsCatalogExplorer $catalog.ConnectionString = "SERVER=$bizTalkDbServer;DATABASE=$bizTalkDbName;Integrated Security=SSPI" foreach($receivePort in $catalog.ReceivePorts) { # For each receive location in your environment foreach($recLocation in $receivePort.ReceiveLocations) { # In this case I want only Receive location that are using SQL Adapter if($recLocation.ReceiveHandler.TransportType.Name -eq 'SQL') { # Let's look for receive handlers associated with SQL Adapter foreach ($handler in $catalog.ReceiveHandlers) { # if is a SQL Adapter Receive Handler if ($handler.TransportType.Name -eq "SQL") { # And is not BizTalkServerApplication, then configure that as the handler of the receive location # Note: that in this case we will configure as a Receive Handler of the Receive location, the first # receive handler that we find that is not the "BizTalkServerApplication" # because the goal is to delete this handler if($handler.Name -ne 'BizTalkServerApplication') { $recLocation.ReceiveHandler = $handler break } } } } } } $catalog.SaveChanges()
Prerequisites for this script: The host, host instances and Receive handlers need to be already configured in your environment before you run the script;
- Of course, this feature/behavior can be added, for example to the “PowerShell to Configure BizTalk Server 2013/2013 R2 Host and Host Instances” script that you can find in TechNet Gallery to automatically perform the creation, configuration of host, host instances and handlers for each adapter; (soon)
Download
THIS POWERSHELL IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND.
You can download PowerShell to Configure Receive Handlers from existing Receive locations from GitHub here: