Category name:Uncategorized

ESB Guidance 2.0 CTP2(January) Released

The Patterns & Practices team released CTP2 of the ESB Guidance 2.0.

You can get it here.

What’s New in the January Release?

This is the second CTP release of the Microsoft ESB Guidance 2.0 for Microsoft BizTalk Server 2009. It incorporates several modifications and additions compared to the October 2008 CTP release. The following list summarizes these changes.

New Features and Components

  • New core features. This version includes the following new core features:
  • UDDI 3.0 Resolver
  • UDDI 3.0 categorization schemas
  • LDAP Resolver
  • WCF-Custom Adapter Provider
  • SMTP Adapter Provider
  • New and Updated Samples
  • SSO Configuration Provider Sample
  • SQL LOB Adapter Sample

Changes to Existing Features and Components Modifications.

  • Itinerary Designer
  • UDDI 3.0 resolver extender
  • File itinerary exporter
  • Itinerary database exporter
  • Resolvers can be executed from design surface to verify resolver configuration via resolver service.
  • SMTP adapter design support
  • WCF-Custom adapter design support
  • LDAP resolver extender
  • Additional itinerary model validation rules
  • Management Portal
  • Chart controls migrated to use Microsoft Chart Controls for Microsoft .NET Framework 3.5
  • UDDI Publisher Utility
  • General bug fixes.

Retired features.

  • JMS integration

Future Plans

Updated documentation for ESB Guidance 2.0 CTP2 will be released at the later date as separate download. The upcoming releases will contain additional improvements including JMS intergation as well as and general bug fixes.

The good and bad news about the ESB Guidance 2.0 CTP announcement

Let me start with the good news, the Microsoft announced the long expected version 2.0 of the ESB guidance. The present version is about a year old (November 2007) so it was time the lessons of the 1.0 version would result into a 2.0 version. Also some people doubted that Microsoft would invest into a second version of the guidance because it was quiet for some time. However on CodePlex the team announced a follow up already in July.

How about the bad news? Well, the bad news is that it is only available for Micrsoft BizTalk Server TAP customers, at least for now. This CTP is targeted for BizTalk Server 2009 so I guess that it will take some time before we can play with it since BizTalk Server 2009 is scheduled for first half of next year. Although I expect the first public CTP of BizTalk Server 2009 to be available soon.

So, what is actually new and changed in this version?

New Features and Components:

  • New samples. This version includes the following new samples:
    • SSO Configuration provider for Enterprise Library 4.0
    • Multiple Web Service Execution Sample
    • Exception Handling Service Sample
  • New ESB Web services. This version includes the following new ESB Web services:
    • Generic Itinerary Services ( no itinerary header required)
  • New core features. This version includes the following new core features:
    • Alignment with Microsoft BizTalk Server 2009 ( Beta )
    • ESB Configuration tool
    • Centralized itinerary store
    • Itinerary resolver components
    • Itinerary forwarder pipeline component
    • Itinerary selector pipeline component
    • Itinerary designer
    • Centralized configuration uses Enterprise Library 4.0 Configuration Block
    • Centralized caching uses Enterprise Library 4.0 Caching Block
    • Multiple service invocation using both messaging and orchestrations
    • Itinerary BAM tracking
    • Improved ESB Core engine and itinerary execution

Changes to Existing Features and Components:

  • Modifications. This version includes modifications to the following features:
    • Resolver and Adapter Provider Framework. This version consolidates the Dispatch and Transform classes to support batch routing of messages within the Dispatch pipeline component using document specification type, and support for itineraries.
    • Itinerary caching pipeline component. This version uses Enterprise Library 4.0 configurable cache management.
    • UDDI Publisher Utility This version supports UDDI3 only with publishing endpoints using publisher-defined key.
    • General bug fixes.
  • Retired features. This version retired the following features:
    • None.

You can read more about it on the Architects Rule blog and here. Also Charles Young mentioned it a while ago but didn’t go into feature details.

[WCF] How reliable is one way with MSMQ?

At the moment I’m working with Gerben van Loon on a WCF project at a large insurance company in the Netherlands. One of the requirements of the project is to log all incoming and outgoing messages. Because we want to customize the way these messages are logged, we cannot use the standard tracing and message logging functionality.

To also be able to use the message logging functionality from within other applications, we decided to build a WCF behavior (message inspector) and a WCF service to log the messages to a database. Message logging is very important in this case so we came up with a very reliable, scalable and good performing solution: using MSMQ as a transport.

Our idea was that messages could be written into the queue very fast using a reliable one way operation call and the service could read from the queue and log the message. Messages would not be lost in case the service was overloaded and the consumer wouldn’t have to wait, the ideal situation!

However, while testing the behavior and service, Gerben found out messages were lost somehow. He called the service twice and one operation was registered and the other was not. What was going on? After turning on the WCF trace and messagelog it was clear what went wrong. The log showed this message:

There was an error deserializing the object of type Service.Operation. The maximum string content length quota (8192) has been exceeded while reading XML data. This quota may be increased by changing the MaxStringContentLength property on the XmlDictionaryReaderQuotas object used when creating the XML reader.

The second operation contained a body of 10k and therefore couldn’t be processed. Ok, so far our understanding of why this happened.

But the thing that worries us is that if the trace and messagelog are switched off, you never know the error occurs because there is obviously no report to the consumer of the service (there never is with one way) and there is also no message in the eventlog. Of course the solution in this case is to increase the content length quota, but maybe there are other errors like this that can occur without knowing. And because we don’t know what the size of the messages will be, should we use Int32.MaxValue as value for MaxStringContentLength?

Please let me know if we overlook something of if you know a way to solve this.

BizTalk Software Factory v1.5 released

Finally the next major release of the BizTalk Software Factory is on CodePlex, version 1.5.

This version supports, besides the current functionality, the following:

  • Solution folders for the BRE artifacts Rules and Policies
  • Support for creating Pipeline Components
  • Support for generating Unit Tests

Adding solution folders to the guidance was a piece of cake, but it took quite some time to figure out how to integrate Martijn Hoogendoorn’s Pipeline Component Wizard. The classes he used to derive his dialog classes from aren’t supported in the guidance so I actually had to understand what he was doing there instead of just copying. But that is also a good thing.

You can now add a Pipeline Component to your project like any other artifact and the wizard is basically the same as Martijn used. The only thing I skipped was the image that you can set on the component. Thanks for borrowing your code Martijn! I was also able to solve one issue in the Pipeline Component Wizard regarding SchemaList design-time properties. Thanks to Kader Yildirim (http://www.techheadbrothers.com/Articles.aspx/decouverte-biztalk-server-2006-1-3-page-4). The page is in French, but babefish does a great job if your French is as good as mine.

Another need to have was the ability to generate unit tests for artifacts. I wanted to add all kinds of generated tests like for BRE Rules, Policies and Pipelines. I know Martijn also has written something to unit test BRE Rules and I know there is a nice Pipeline test framework. Unfortunately lack of time made me skip these things. Feel free to add it to the code J

So, what was I able to add?

  • Support to generate unit tests for Schemas
  • Support to generate unit tests for Maps
  • Support to generate unit tests for Orchestrations

What you can do now is select the unit test project and select ‘Add’ from the context menu. You’ll see options to add these artifacts. For Schemas, I used the class Michael Stephenson wrote (http://geekswithblogs.net/michaelstephenson/archive/2008/03/30/120850.aspx). This class does and XSD validation of the supplied XML test message. You can also use BizUnit for this. For testing a map I also (tried to) used a class from Michael Stehpenson. This was not as easy as it looked and at the end I decided to leave the code in there but it doesn’t work as I would like it to. Besides the custom transform there is another issue because the output of the transform is character by character compared to the ‘expected’ output. Because of this way of comparing it marks an output of <Body/> not the same as <Body></Body> so the test would fail.

In a next version of BizUnit it is possible to test a map, but maybe someone has built a custom step for this and is willing to share it with me so I can put it in now. J

For orchestrations the regular unit test is generated, together with a test-case and test-data file.

The one big thing missing is setup and deployment. There were plans of also putting it into this release, but at the moment it would just take too much time. Maybe next release.

If you’re working with BizTalk, go get it here!!

(and don’t forget to share your opinion on the BSF with me, I’m very interested in improving it)

Visual Studio ‘Orcas’ Sept CTP download getting confused

I’ve seen other reports of IE getting confused on the download of the VS ‘Orcas’ September CTP. I had a simular experience with it. It first counts up to 100% within a minute and then counts down to about -1000% (??).


This is the first time I see such behaviour, but since other people also experience it must be something with the download. Probably the size?


New blogger in town

Last month I received an invitation from LogicaCMG to start a weblog at BloggingAbout.NET. This invitation was based on my visit to the LogicaCMG booth on the Microsoft DevDays 2005 earlier this year. I left my business card there to be able to win something which I didn’t of course. 😉 


The invitation was sent the moment I was looking for another hosting party for my blog which is currently hosted by XS4ALL, so I decided to accept the offer. I would like to thank Dennis and Petra from LogicaCMG for this opportunity.


I work at a company called Macaw. Macaw is a Microsoft Gold Partner in Intranets and e-commerce. I work on a variety of projects with of course .NET and Mircosoft server products like Sharepoint 2003 and Biztalk 2004.


You’ll find postings here in one of these areas most of the time.


Happy reading and please leave your comments if I write something completely stupid 😉