BizTalk, SOA, Webcast

Recent and upcoming BizTalk User Group Sweden events

Some time ago, back on the 20th of November, Richard Seroter visited BizTalk User Group Sweden and talked about BizTalk, SOA and leveraging the cloud. His talks are now live on channel9, part 1 and part 2. A short blogpost explaining the talk is here.

It was great fun to have Richard visit, although some (most) of the laughter and clapping that your hear on the videos is really due to me making a pantomime Richard imitation outside of the frame of the video and should not be credited to him 😉

Getting the videos published wasn’t lightning fast due to some unfortunate circumstances and personnel changes. Hopefully that will be all ironed out by November 26th when Charles Young swings by us again, this time to talk about the Business Rules Framework. I’m sure it’ll be a classic. Take the chance to say “I was there”. There are still slots left. Sign up here.

Should you happen to pass by Sweden and have an interesting Connected Systems topic that you would like to talk about feel free to drop us a line.

Or as Richard commented his visit on his blog through this sentence taken totally out of it’s context 😉 “If you get the chance to visit this user group as an attendee or speaker, don’t hesitate to do so.


.NET 3.5, BizTalk Server 2009, Development, SOA, WCF

Oh BizTalk, why dost thou mock me?

In any given integration project many different parties are involved. In some cases these parties have standard endpoints against which BizTalk operates and sometimes these endpoints are built as you go in the participating systems to meet a new demand. This is true for other types of projects as well – things get finished at different times – and you need to be able to work independent of each other during that time. What you often do determine very early in the project are the design of messages, schemas or APIs through which you exchange information. In many cases a BizTalk project can effectively use FILE send or receive ports that serve the same purpose as a One-Way send or receive port to say SAP would do at a later stage. But how about solicit-response send ports? What do you exchange these for?

In this post I’d like to introduce a way to handle solicit-response through the use of a catch all WCF Service. There any many ways in which to mock a service. The prime benefit with this approach is that you will be able to model your BizTalk solution the way you want it to be, without having to have access to the real service, and exchange the solicit-response port for it’s production or acceptance test counter parts at your convenience.

To achieve this we need something that let’s us send in any message, and based on some part of the message determine what message to send back, and the send it as a response.

WCF is a perfect candidate. It has functionality both to allow us to create methods that handles all incoming requests by specifying a wildcard (*) as the Action property, and accept any message and can send any message as a return. Using the Message base class it also allows us to easily create the response message, and populate the body of the message from the contents of a stream, such as a file (See the ‘Creating Messages from XmlReaders’ topic in the link).

So what I did was I created a WCF Service, and added a method to catch all messages:

[OperationContract(Action = “*“, ReplyAction=”*“)]
Message CatchAll(Message message);

In the implementation for this method I have include the following code:

FileStream stream = new FileStream(ResponseHelper.GetResponseFile(requestAction), FileMode.Open);
XmlDictionaryReader xdr = XmlDictionaryReader.CreateTextReader(stream, new XmlDictionaryReaderQuotas());
MessageVersion ver = OperationContext.Current.IncomingMessageVersion;
return Message.CreateMessage(ver, ResponseHelper.GetResponseAction(requestAction), xdr);

I have a small helper class that just helps me get data from the config, the config in turn looks like this:

  <section name=”requestResponseHandling
type=”ServiceHost.RequestResponseHandlingConfigSection, ServiceHost“/>
    <add requestAction=”
responseLocation=”GetData2Response.xml” />

This enables me to add new responses to incoming requests without needing to rebuild the service to incorporate a new response. You could go crazy here with code and undertakings to reply based on some context or what not. In the case presented here I’m just making it simple and returning the same static message for all request that matches a certain requestAction.

Finally, put this in the host of your choice. In my case I’ve got IIS so I’m hosting it there. That will also cause changes to the web.config to automatically get loaded, so that’s happy times.

Using this from a client is super easy. Just point the address of the client endpoint towards this service instead. The only thing that might not be super simple (though still fairly simple) is that you need to know what the meat of the response will look like when serialized as a response (the body of the response message). That is you need to Generate a sample response message from your wsdl.

Now let’s look at how we can utilize this to mock services in BizTalk Server. Oh, but wait, that sounds like it would be a bit of work to do, but… no, that isn’t the case. In fact, once you have configured the WCF service the only thing you need to do is to point your Send port at this service instead of the system that would otherwise be there in it’s place. Loop closed.

BizTalk Server 2009, Learning, SOA

Book Review: SOA Patterns with BizTalk Server 2009

Richard Seroter has a style of writing that’s… entertaining and easy to read. Some books or articles have a tendency to go on and on without really saying too much. Let me assure you, that’s not the case here. You can find that in his blog as well.

If after reading the book I would be asked to identify an audience for the book I would indicate that the people that would get the most value out of reading the book are the ones that are already familiar with BizTalk. You don’t have to be familiar with WCF, as I think it does a good job of explaining it down to a level where you can follow things being said thereafter. Again though, I would suggest that you will also get the most value out of the book if you are already familiar with the concepts of WCF. And it’s for developers, not administrators. From the BizTalk books I’ve read, there are really none dedicated to administrators, although most contain parts meant for administrators. This does not.

I understand why it contains introductory chapters of BizTalk – you don’t want to alienate a large segment of people. But… in my humble opinion, beginners will get more value out of reading Professional BizTalk Server 2006 first. This is not a beginners book.

I read it cover to cover, that’s how I read most books, but if you belong to what I would claim is the best target group to get this book, you will read the first three chapters quickly, or not at all. Don’t get me wrong, they are not poorly written in any way, on the contrary, but you probably know this stuff well enough anyway. The mother of all learning is repetition though so…

I would say that the next five chapters (4-8, pg 87-276) is the meat of the book. Even though you know BizTalk (and there really aren’t all that many people in my cultural part of the world that say they really know something), I believe everyone can pick up a thing or two, or at the very least be reminded of things you should do when building solutions in BizTalk Server. I would also claim that these things, although arguably more important in a SOA, are of interest to all BizTalk developers, regardless if you are using BizTalk to do EAI, SOA or ESB style development – although the focus of the book might be on SOA and WCF.

The following chapter on the WCF SQL Server Adapter is a really good read as well, and one of the few resources available explaining the new SQL Adapter in any depth. I mostly recommend reading the book from start to finish, but starting with chapter 9, the chapters 9-12 can be read independently from each other and the rest of the book. Although chapter 9 is called “New SOA Capabilities in BizTalk Server 2009: WCF SQL Server Adapter”, it is mostly applicable on BizTalk Server 2006 R2, as is most of the book. Some parts of the chapter covers SQL Server 2008 specific functionality though.

The next couple of chapters (10, 11) are BizTalk Server 2009 specific, but they are the only ones. You can get this book even if you do BizTalk Server 2006 R2 development today and in the foreseeable future. The last chapters (11-12) are about coming functionality. It’s always difficult to write stuff about the future (or pre-release software for that matter), since inevitably, it’s constantly changing based on actions in the present (kinda deep huh?), but it gives a good glimpse into how things stood at the writing of the book (and in the majority of cases still does).

Summing up my experiences I think that an alternative title that reflects my above thoughts could have been Advanced or Pro WCF in BizTalk Server 2006 R2 (following in line with Apress names of Pro Mapping/BAM/EDI/RFID/… – but SOA Patterns with BizTalk Server 2009 is so much cooler 😉 (and is just as appropriate)

To close, I highly recommend this book for anyone doing BizTalk development, specifically those matching the right crowd as described above.

Also BizTalk User Group Sweden looks forward to Richards visit in September when he will be speaking on some of these topics and beyond.

Additional links:

BizTalk, Design, SOA

BizTalk and Big Design Up Front

Some companies seem to think that doing a Big Design Up Front (BDUF) before starting out implementing a BizTalk solution is the way to go. However it isn’t a BDUF from the aspect that they first would like to go through all their requirements and then through a waterfall style design phase for all of the requirements they have in mind. Had it been BDUF it would have been bad. now it’s worse. They want to install an all purpose integrations plattform with full support for BPM, Human Workflow and Governance from day one.

Although I’m not an agile fanatic of any sort, I just don’t believe that should or can be done. You can’t just decide on all the pieces you wish you had in your infrastructure and go out and buy them and think you will get the benefit of those pieces included with the purchase. For that matter it’s not even certain the pieces you think you want are the pieces your business really needs. And what’s worse, doing so is a fast way to waste a huge amount of money. Although they are all great products, you just can’t put what you needed for that – SQL Server, BizTalk Server, MOSS, K2, SOA Software and a couple of other products – together from day one when starting out establishing a new integration plattform. You are smart if you start small. Integration is about being agile, BizTalk is about being agile. Being able to exchange one product for another whilst not impacting the rest of the systems within the company. You can’t just install an enterprise architecture because you want to “start doing SOA”. Sorry to those of you missing out on all that juicy license money 😉

Now with that said, you can do a BDUF if you wan’t to. I believe there are sitiations where that method works, although I think a slightly more agile approach is more likely to succeed. But even if you do, don’t translate that design directly over to products and a Big Bang install and think you’re there. It’s just not that easy.

I was thinking about this while building lego with my son recently, and I took this picture. You can draw your own conclusions as to its meaning.

.NET 3.5, BizTalk, News, SOA

BizTalk Server 2006 R3

Official news about the next release of BizTalk Server has been released on Steve Martins blog here with follow ups on the BizTalk Server Team Blog here and of course followed by other comments around the connected systems blogosphere. It’s been expected and anticipated. This is not an Oslo release, and it’s not a new product, and it’s not a service pack, but it’s an R3. I’m not quite sure what the difference is when compared to a service pack, but according to Steve 
Because this release build on existing bits, the name of this release will be BizTalk Server 2006 R3. Refreshing the bits (instead of applying a large Service Pack) provides for the best update experience.

What’s interesting around this release is not the fact that it will support the new wave of products and technologies being SQL 2008, Windows Server 2008, .NET 3,5 and Visual Studio 2008, although I’ve been told this in itself is not a small thing and I’m exhited about that as well, but the fact that they are choosing to bring in a couple of additional features. Among those are BizTalk RFID Mobile, an UDDI based Registry (no doubt inspired by the ESB Guidance) and additional LOB adapters and talk about service enabling and delivering SOA pattern and practices as part of the product. For me it’s a clear expression of the desire to make BizTalk a more attractive SOA plattform.

The official date for release is planned for Q1 2009, with a CTP expected later this year following the release of SQL Server 2008 in Q3 2008. There are however already TAP programs available for BizTalk Server as well as some of the other features by themselves. I wish I hade a customer ready to run with it today…