Archive for the 'BizTalk 2006' Category

Error when expanding ‘Application’ in the BizTalk 2006 Admin Console

Yesterday we encountered a worrying blocking error when expanding the Application node under a BizTalk Group in the 2006 Administration Console:

Failed to create ApplicationNode (Microsoft.BizTalk.SnapIn.Framework)

Additional Information:
Exception has been thrown by the target of an invocation. (mscorlib)
Failed to enable constraints. One or more rows contain values violating non-null , unique or foreign-key constraints. (System.Data)

All of the servers in the Group were affected, this suggested to me that there was some corruption in the management database given that we had been performing a deployment of new assemblies just before it occurred.

One possible resolution to the problem - repair the BizTalk installation - was discussed on MSDN, but that didn’t appear to work in our case; Instead, restarts of all the servers in the Group (3 servers in total) resolved the problem.

Not a satisfactory resolution, but one which worked nonetheless; we’ll be keeping a close eye on the environment in future….

SOAP Adapter - Confusing error with an untrusted Root Certificate Authority

I recently wrote about problems with two-factor authentication and installing a certificate in the correct certificate store. Well, we’ve had similar problems, this time securing the transport link on a SOAP adapter, which resulted in the following error:

Could not establish trust relationship for the SSL/TLS secure channel with authority ‘your machine name’. The underlying connection was closed: Could not establish trust relationship for the SSL/TLS secure channel.

After some digging, it turns out that the problem is due to an untrusted certificate issuer (Certificate Authority) for the cert we were trying to use. Adding the root certificate to the list of Trusted Root Certification Authorities resolved the issue.

BizTalk 2006 Message Archiving Component v0.4 - Proposed Enhancements

The BizTalk 2006 Message Archiving Component I released in March of this year on Codeplex has been received well by the BizTalk Community based on the e-mails I have received and downloads (156 source code downloads & 51 binary downloads):

Download StatisticsThe component allows messages to be written to the file system for archiving, it can be executed in either the Decode (Receive) or Encode (Send) stages and uses message context-properties to define the archive path. The component is written in a streaming fashion, is designed for large message consumption and can handle Xml, binary and flat-files. If you haven’t tried it yet, download a copy from Codeplex now.

I’m now starting to think about feature enhancements for the next version, 0.4; my current feature list is as follows:

  • Enabled/Disabled flag to allow easy on/off functionality at run-time
  • Archiving to database (rather than file)
  • Enhanced logging functionality
  • ‘Special’ macros to include values other than those taken from the context properties (e.g. %ReceivedFolderName% when messages are received via the file adapter)
  • MSI-based installer
  • Documentation!

Please feel free to add any further features or requests via the comments.

Updating Existing Send Ports through Binding Files

When we make changes to our BizTalk environments, we always ensure that the changes are scripted so the Ops Team don’t really need worry about messing things up - as a result, we use Binding files everywhere. Normally, we do large scale solution deployments, but earlier this week we needed to update the subscription filter on a single Send Port; to my surprise, I was pleased to discover that Binding files can be used to update existing (unenlisted) Send Ports - no need to delete and re-create (via the binding file).

Consider the scenario above, we have a Send Port subscribing to messages where the Receive Port Name = ‘Sample Receive Port’:

Subscriptions After Update

To update the subscription using a bindings file, strip the Bindings file down to just the Send Port in question and update the <filters> element to include a new subscription (a filter on BTS.InboundTransportType has been added in this case, the operator of zero indicates that its an equals predicate):

Subscription Filter Xml Fragment

With the Send Port in the unenlisted state, import the updated bindings file either BizTalk Admin Console or BTSTask and the filter conditions on the Send Port will be updated:

Subscriptions After Update

Enlist and start the Send Port!

Note that any configuration property on a Send Port can be updated in this way.

Clustering the ESSO Master Secret Server

I know I’m going to forget how to cluster the ESSO Master Secret Server, so I’m including a link to this technical article for Microsoft Host Integration Server 2004 which gives the most succinct version of the instructions to this non-trivial task I have found so far - see ‘5.4 Clustering the Master Secret Server’ in the document for the instructions.

Thanks to Tomas Restrepo for the pointer to the document.