December 9, 2009 at 12:33 PM
Something that might not be known for a lot of people, is the existance and usage of the following BizTalk system property: BTS.SuppressRoutineFailureDebugInfo.
The usage is described in detail on the following KB article: http://support.microsoft.com/kb/935960.
It comes down to the fact that the 'non-resumable Routing Failure Report' messages that exist for debugging purposes can now be suppressed, when this is desired.
I built a 5-minute demo that tests this functionality.
After generating a new BizTalk project, I created a very simple XSD schema with two fields:
I also created a new property schema with one MessageBased context property: Country. This property was used for content based routing in my demo:
In my schema, i promoted the two existing fields to the following corresponding properties:
- LaxRouting (boolean) -> BTS.SuppressRoutineFailureDebugInfo (in referenced GlobalPropertySchemas.dll)
- Country -> CODit.BizTalk.DisableRoutingFailureReport.Country
After deploying this project to my BizTalk Server, I created a receive port with a receive location that uses the standard XMLReceive pipeline:
I also created a send port with the following filter: CODit.BizTalk.DisableRoutingFailureReport.Country == France.
Submitting a message with 'France' as content of the Country field resulted in an output message, as expected and as default behavior.
Submitting a message with 'Greece' (which has no subscriber) and the LaxRouting set to 'false', resulted in the default exception with two suspended messages in the Admin console:
Submitting a message with 'Greece' (which has no subscriber) and the LaxRouting set to 'true', shows the SuppressRoutineFailureDebugInfo property at work. The result is only one suspended (resumable) message, without the Routing Failure Report.
Suppressing the Routing Failure Reports, makes it difficult to debug routing failures. The context of the message at the time of publication is not available for review. Also, the extra message is not being added to the Windows event log.
Promoting the property
In this demo, I configured the property, based on a message field value. In real life scenario's, this will typically be done, by promoting the value in a pipeline component that is doing property promotion, like the CODit Matrix.
Sam Vanhoutte, CODit