Announcing  – June 2007 Community Release of ESB Guidance  –

By Marty Wasznicky
Field Program Manager, Connected Systems Division

In October of 2006, we announced the preview of the Microsoft ESB Guidance at Microsoft SOA Conference in Redmond. This consisted of the following which enabled Microsoft partners and customers to build large and small-scale ESB solutions:


       Sample code built on BizTalk Server 2006

       Architectural guidance, patterns and practices

       Reusable BizTalk Server ESB and .NET components:

       Dynamic Transformation Service

       Dynamic End Point/Configuration Service

       Itinerary based Routing & Service Invocation

       ESB Portal

       Exception Management framework

       Namespace Resolution Service

       JMS (Java Message Service) pipeline component (IBM JMS over WMQ) 


Since that time we’ve achieved significant momentum:


       Several hundred requests for the ESB Guidance

       Several dozen customers incorporating the guidance into their projects

       Dedicated Microsoft ESB web site:

       Dedicated Partner site for delivering the ESB Guidance:

       Press on the ESB Guidance from the SOA conference (German) (Italian)


Due to the overwhelming demand and popularity of the ESB Guidance, we (the Connected Systems Division) and the Patterns and Practices group have agreed to jointly develop the ESB Guidance moving forward. 


As a result of the iteration of this partnership, we’ve released a new June Community Release build of the ESB Guidance on the new ESB Guidance community site, where all future iterations will be released here until our final release in October later this year. 


Although this June Community Release focused on bug fixes and refactoring the ESB Guidance for BizTalk 2006 R2, future releases will incorporate many new and augmented features such as:


       UDDI publishing and richer resolution options


       Enhanced ESB Portal and Exception Mediation

       Request-Response support for on and off ramps

       WCF Adapter integration

       New Samples and Guidance

       Third party SOA Management and Governance integration:

       Amberpoint Integration

       SOA Software Integration


Through our partnership with Patterns and Practices, we hope to raise the bar of quality and build an extended community to support our customers as they move forward with the ESB Guidance.


With the Patterns and Practices partnership, we incur the benefit of having Don Smith (Product Manager for Patterns & Practices – ) take an active role in owning the ESB Guidance Community.  I will be coordinating feature development and community release schedules with Don, ensuring community feedback is incorporated into the ESB Guidance.


Please download the latest Community Release and provide us feedback.  We will be monitoring the discussion forums on the site. 


A more thorough description of the June Community Release can be found below.





About the June 2007 Community Release

This release focuses on refactoring the CTP build to accommodate the augmentation of existing features, as well as the addition of new features to be included within the final release targeted for October 2007.

Some of the changes for this release are:

%u00b7         The project namespace changes from Microsoft.BizTalk.ESB to Microsoft.Practices.ESB

%u00b7         All schemas follow W3C schema conventions for namespace, such as

%u00b7         Installation scripts and instructions for manual installation are provided

%u00b7         All samples now install into the GlobalBank.ESB BizTalk application instead of their own individual applications

%u00b7         The following components have been rebuilt to work with the BizTalk Server 2006 R2 Beta 2 and Release Candidate builds:

%u25e6       JMS Pipeline Component

%u25e6       Namespace Pipeline Component

%u25e6       Exception Management API, InfoPath form and Pipeline component

%u25e6       Transformation Service, Helper and Agent

%u25e6       JMS Samples

%u25e6       Exception Management Samples

%u25e6       Namespace Samples

%u00b7         This release contains several updates to integrate with .NET version 3.0:

%u25e6       The Transformation Service is exposed as both an ASMX and a WCF service

%u25e6       The Exception Management Fault Service is exposed as both an ASMX and a WCF service

%u25e6       The UDDI helper class now uses native WCF calls and the features of .NET version 3.0. There is no longer a dependency on the Microsoft UDDI service (Microsoft.Uddi.dll)

%u00b7         There are a number of fixes for components and services included in this release. For more details, see:

%u25e6       Fixes for the Exception Management API

%u25e6       Fixes for the Transformation Service

%u25e6       Fixes for the JMS Component

%u25e6       Fixes for the Namespace Component

%u25e6       Fixes for the SetContext Component


Note: Although all other components in this release will compile and work with BizTalk Server R2, they still require some re-work. In addition, the ESB Exception Portal does not change in this release, and therefore the Exception Management Framework has not been tested with the older portal. The next community release will contain a prototype of the new portal.

Fixes for the Exception Management API

%u00b7         The Exception Management API now supports exceptions that occur in child orchestrations executed using the CALL shape. For example:

%u25e6       Orchestration A calls Orchestration B

%u25e6       Orchestration B contains exception handling code that invokes the CreateFaultMessage method and assigns a fault message

%u25e6       An exception occurs in Orchestration B and the ESB Exception Framework should publish the message

%u25e6       The execution path no longer fails and causes an error within the CreateFaultMessage method

%u00b7         InfoPath form rendering exceptions from the ESB Fault Processor pipeline no longer cause an error when scrolling through context properties

%u00b7         The ESB processor pipeline now includes whitespace support in the reader

%u00b7         The properties for the fault schema change in this release. There is no promotion of FaultDescription, and the description now accepts more than 255 characters

%u00b7         Extension of the existing property schema supports additional internal error information

%u00b7         The schema namespace changes, and the InfoPath template has been renamed

%u00b7         Class references replace the string references for the context property name and namespace used when accessing context properties

%u00b7         This release supports MIME-type detection for the body of a message

%u00b7         Failed Message Routing scenarios now support flat files and binaries

%u00b7         Streaming is implemented for large files

%u00b7         Correct identification of the send port now occurs in one way messaging scenarios

%u00b7         There is support for two-way messaging scenarios, such as the typical SOAP request-response cycle

%u00b7         All project versions are now

%u00b7         The native BTS stream libraries replace all custom streaming classes

%u00b7         A new ContextProperties class allows pipeline components to access property information

%u00b7         The orchestration time stamp in now expressed in UTC

%u00b7         A new WCF-based Web Service exposes fault information

%u00b7         All references to and the “bootcamp” namespaces in InfoPath schemas are removed

%u00b7         New scripts update the Resources folder in the BizTalk Server application, and generate an MSI based on the resource artifact files

%u00b7         Minor modifications to the code catch more exceptions, in particular by checking for null references

%u00b7         The component detects non-HTML and non-text content, and encodes these as base-64 strings

%u00b7         The reporting schema and InfoPath template now contain a MIME-type property

%u00b7         There is support for rendering the content of XML CDATA sections

%u00b7         The schema type for the content block within the reporting template changes from Any to CDATA


Fixes for the Transformation Service

%u00b7         The Transformation Service now throws a null exception if the mapName parameter is null.

%u00b7         The Transformation Service now has no dependency on the Microsoft UDDI service (Microsoft.Uddi.dll).


Fixes for the JMS Component

%u00b7         The strong name key file binding now occurs during the linking phase so that the Manifest phase does not invalidate the signature of the assemblies.

%u00b7         The component now uses the Microsoft.Practices.ESB.snk key file included with the source.

%u00b7         The JMS Sample uses a new Queue Manager name, and only four queues.


Fixes for the Namespace Component

%u00b7         The NamespaceException now inherits from ApplicationException, which corrects the issue where exceptions appear in the Event Log as “Reason: Unknown”

%u00b7         Corrections to processing of the ExtractionXPath property solve previous extraction issues

%u00b7         A new validation routine introduced prior to pipeline processing ensures that required properties are set at runtime

%u00b7         Regular expressions now check that separator property value is valid (or is empty), that namespaces are not in the reserved range (ns0 to ns6), and that the specified namespace prefix is alphanumeric

%u00b7         The component now checks that either the XPath or NamespaceBase property is set

%u00b7         The component now compares the existing and the new namespaces, and just returns the original message to the pipeline if they are the same

%u00b7         The component no longer raises an exception if the XPaths property is null, which allow the use of a static namespace if required

%u00b7         Various string comparisons carried out within the component have been corrected


Fixes for the SetContext Component

%u00b7         The component uses an updated namespaces for property schemas

%u00b7         The component now exposes EndpointUddiServer and MapUddiServer properties

%u00b7         The component now contains logic that ensures the value of a SOAP header is not overwritten by a property value provided in the pipeline instance rather than in the SOAP header

%u00b7         There are several new trace statements that output the resolved endpoint



Marty Wasznicky
Regional Program Manager – BizTalk Server
Connected Systems Division
Microsoft Corporation

MCSE, MCSD, MCDBA, CNE, MCTS in BizTalk 2004

333 S. Grand Ave., Suite 3300, Los Angeles, CA 90071


BizTalk Server Webcasts:

BizTalk Server 2006 Virtual Labs:

BizTalk Server 2006 Trial Download:

BizTalk Server 2006 Home Page: