Thoughts on Integrating Systems & IoT

Few Thoughts on the ESB Toolkit and an Error – “The ‘ServiceType’ property value should not be empty or null”

I have recently been experimenting with the ESB Toolkit (version 2.2 that ships with BizTalk 2013) and I think it is a good way to expedite loosely coupled BizTalk solutions, dynamically configurable at runtime using the Business Rules Engine (BRE).

At a high level, the ESB Toolkit itinerary model is an implementation of the routing slip pattern.

My immediate impression is that development using the Itinerary Designer is tightly coupled to the runtime environment, more so than “standard” BizTalk development.  By “runtime environment”, I mean artefacts/configuration viewable via the BizTalk admin console (e.g. applications, send port filters etc.) and also policies created via the BRE Composer.  Basically the target application needs to be setup before starting work building the solution using Visual Studio.  Any changes to the solution setup (changing a send port name, for example) would likely require firing up Visual Studio and propagating these changes to the itinerary, then importing into the itinerary database.

It’s also occurred to me that the itinerary pattern is in my mind an easier way to implement a message type agnostic solution, compared to using the standard BizTalk toolset.  I have recently been wrestling with a series of orchestrations processing messages in a non typed fashion, routing to/from the MessageBox purely using context properties: this is a powerful enabler of achieving a “service first” approach (instead of a “message first” approach) permitting heavy reuse of processing logic without caring about the underlying message type.  Yes, I’m thinking about SOA principles here.  However it’s been quite a mission to implement this routing using non typed messages in orchestration.

To illustrate this tight coupling of the development and runtime environments mentioned previously (and to demonstrate my noob status regarding the ESB Tookit :-)), whilst trying to export a model via Visual Studio, I was stumped with these errors:

Itinerary Property Value Errors

Itinerary Designer Property Value Errors

It was obvious clicking on my off ramp that these three properties were not configured but they looked to be read only – so how could I add values?!:

Missing Properties in the Itinerary Design

Missing Properties in the Itinerary Designer – Not Possible to Configure Here

After a bit of head scratching and a web search it soon became clear that these properties referred to filter properties on my send port – it would have been useful if the property name made it obvious what these properties referred to.

So in my BizTalk application, I created the following filters on my dynamic send port:

ESB Tookit Send Port Filters Required

ESB Toolkit Send Port Filters Required

I then re-selected the send port in the off ramp and the required properties were then populated from the BizTalk databases:

Properties Visible in Itinerary Designer

Properties Visible in Itinerary Designer After Adding Filters to Send Port

I hope this post helps out other ESB Toolkit “greenhorns”.


2 responses

  1. This isn’t quite true. Changing a send port name doesn’t require an update to the itinerary. The send port name is only used at design time to get the filter properties. As long as there is a send port subscribing to those filter properties messages will flow even if you change the send port name.

    In fact, once the itinerary is created you can delete the dynamic send port entirely and replace it with a static send port if needed. In that respect ESB applications function just like standard BizTalk applications.

    March 27, 2014 at 8:19 am

    • Hi Scott – thanks a lot for taking the time to comment. Very useful to know. I’m very much an ESB Toolkit newbie, as you can tell!

      March 27, 2014 at 9:26 am

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )


Connecting to %s