Thursday, September 18, 2014

This property cannot be currently changed. Please unelist the send port before changing this property.

Yesterday we ran into this error while importing a BizTalk binding file for an existing application:

Failed to update binding information. (mscorlib)

This property cannot be currently changed.  Please unelist the send port before changing this property. (Microsoft.BizTalk.ExplorerOM)

(The typo is Microsoft's, not mine)

That is the same error you get when trying to change an enlisted send port to (or from) ordered delivery.

Our situation was weird though, as the existing application had been created using the exact same binding file. Meaning, we have a binding file that can be imported once, but not twice.

The reason for this is rather subtle. Created by a hand the binding file configuring the ordered send port looked somewhat like this:

<SendPort ...>
   ...
  <PrimaryTransport>
   ...
   <OrderedDelivery>false</OrderedDelivery>
   ...
  </PrimaryTransport>
  <SecondaryTransport>
   ...
  </SecondaryTransport>
   ...     
  <OrderedDelivery>true</OrderedDelivery>
   ...
</SendPort>

Note how ordered delivery of the primary transport is set to false while ordered delivery is set to true on the send port itself. This will create a send port with an ordered primary transport on first import, but a second import will make the import fail with the error above.

The solution is to keep the OrderedDelivery tag of the send port in sync with that of the Primary transport

<SendPort ...>
   ...
  <PrimaryTransport>
   ...
   <OrderedDelivery>true</OrderedDelivery>
   ...
  </PrimaryTransport>
  <SecondaryTransport>
   ...
  </SecondaryTransport>
   ...     
  <OrderedDelivery>true</OrderedDelivery>
   ...
</SendPort>

This is however not very clear from the documentation:


Finally a word of caution: import binding can change a send ports delivery status to and from ordered delivery without first having to unenlist the port. I'm investigate whether this is safe or not:

Safe to change sendport delivery status to and from ordered delivery using import binding?


Wednesday, September 3, 2014

How-to move BizTalk databases

Even though Microsoft has provided scripts to help moving BizTalk databases it's still a cumbersome.

For reference please see:
I've created the script below to ease the pain after database restore. The script will:
  1. create the config file used by UpdateDatabase.vbs and UpdateRegistry.vbs
  2. stop all running host instances by stopping ESSO
  3. update the BizTalk databases content
  4. update the BizTalk frontend registry values
  5. start ESSO
  6. start all previously running host instances
Please note, the script will only work in the simple case of no BAM and all databases residing on one database server only.



Wednesday, July 9, 2014

Check-in and undo pending changes when having several Visual Studio solutions in the same folder could have side effects

In my current project we have a number of Visual Studio projects distributed into several solutions. In our case all solutions files are located in the same (root) folder.

Now, if I choose to check in pending changes at the solution level in one solution, the included changes will unexpectedly include changes for all solutions in the root folder.

Similarly, and even worse, if I choose to undo the pending changes at the solution level in one solution, the list of changes to be undone will actually include changes made to the other solutions as well.

The risk of checking in changes from other solutions by mistake, can be mitigated easily by selecting the View Option: Show Solution Changes:




However, there seems to be not similar easy way to avoid undoing pending changes in other solutions when undoing pending changes in one solution. Instead I sort by folder name and exclude the changes I want to keep one by one:




Friday, May 23, 2014

BizTalk Performance counters disappear after in-place upgrade of BizTalk 2010 to BizTalk 2013

During in-place upgrade of BizTalk 2010 to BizTalk 2013, we have seen performance counters disappear, especially the BizTalk:Message Agent and BizTalk:Messaging counters.

I've been running a MS support case, and Microsoft confirms the issue (this issue might even be present in BizTalk Server 2013 R2).

Inspired by:
I’ve made this script that fixes the issue:

Wednesday, May 21, 2014

Please ensure that the Remote Registry Service is enabled on the Biztalk Server ...


While trying to connect, the BizTalk Terminator tool fails with the following error
Error
---------------------------
Please ensure that the Remote Registry Service is enabled on the Biztalk Server XYZ
---------------------------
You checked server XYZ and the Remote Registry Service is actually running. You even connected to the registry of server XYZ remotely, to make sure the service works.

So what’s wrong then?
Well, BizTalk Terminator (event the latest version 2.0.0.276) is reporting the wrong server name in the error message!
If you have a BizTalk group that consists of servers XYZ and ABC, and let’s say the Remote Registry Service is stopped on server ABC. Terminator will report the service stopped on XYZ (even though it is not), if this server has the lowest id (1) in the BizTalkMgmtDb table adm_Server.

Now, in our case the server ABC was nonworking. So we could not start the Remote Registry Service, neither could we remove the server from the BizTalk group via the usual BizTalk Server Configuration tool (as this needs to be run on the server you want to (un)configure). Luckily, it is possible to remove a nonworking server from a BizTalk Server group via WMI as described in the KB article "How to remove a nonworking server from a BizTalk Server group":

http://support.microsoft.com/kb/883375/en-us

Following the steps in the KB we managed to connect the BizTalk Terminator tool successfully.