Published on Tuesday, 5th August 2008 .
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….
Published on Wednesday, 30th July 2008 .
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.
Published on Tuesday, 1st July 2008 .
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):
The 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.
Published on Friday, 27th June 2008 .
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’:

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):

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:

Enlist and start the Send Port!
Note that any configuration property on a Send Port can be updated in this way.
Published on Tuesday, 10th June 2008 .
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.