First impression of Windows Azure Service Bus EAI & EDI Mapper, December 2011 CTP


First of all, I’m a BizTalk developer so I will review Azure Service Bus EAI & EDI Mapper from a BizTalk developer’s perspective. As a start it is important to mention that Azure Service Bus EAI & EDI came out in December 2011 for the first time. It is still in its early phase and it offers some EAI-possibilities by offering an orchestration-like designer and endpoint integration through WCF LOB Adapters. For those who have never heard of WCF LOB adapters, it is an adapter pack that ships with BizTalk Server 2010 installation media offering adapters for SAP, Siebel, etc. Now let’s go back to the new Mapper and take a peak on what it looks like.


In order to create a new map you have to create an EAI-project. If you haven’t downloaded the CTP you may do it from here. A map can be found under the ServiceBus-template.

create map

Create map (Click to enlarge)

Pay attention to the map extension, its .trfm which is an acronym for “transform”. In BizTalk a map has an extension .btm which is short for “BizTalk map”. When a Service Bus map is created the following picture appears to us.

empty map

Empty map (Click to enlarge)

By now any BizTalk 2010 developer will recognize the Mapper-design. It looks exactly like the one found in the latest BizTalk release but without tabs. This is a positive surprise for us BizTalkers since this design resembles the well-known and improved version of the BizTalk Mapper but the lack of tabs will make maps less user-friendly when dealing with complex transformations, for instance huge EDI messages.


This is where the “total” similarity ends. If we take a closer look at the toolbox we will see that the icons for functoids are different, some functoids are new and some even got new names.

SB toolbox on the left, BT toolbox on the right

SB-toolbox(left) vs. BT-toolbox (Click to enlarge)

To make it straight, a functoid in a Service Bus Mapper is called an operation. Operations have similar functionality as functoids in BizTalk and are easily removed or added in the toolbox, just as the functoids. The one operation I tried to find when the toolbox opened for the first time is the one resembling the Scripting-functoid, from which you can call methods stored in external dlls or type in C#/VB/JS/XSL expressions. Unfortunately, this one is absent in this release but I’m convinced that it will show up in the upcoming releases since a more complex mapping is practically impossible without it.
The one particular feature I thought was slick is the way sub-looping operations are presented on the Mapper. “MapEach Loop” and ”ForEach Loop” are two new looping operations presented as “containers” (see pic bellow) and when adding new loops inside each one of them they will be hosted in the parent loop’s container. This is much more intuitive than it is in the BizTalk Mapper because you may visually distinguish between parent/children-loops.


Sub-looping (Click to enlarge)


The most critical difference between a Service Bus map and its BizTalk counterpart is their map formats. If you open both maps in a XML editor you will see that they are completely different, making them totally incompatible with each other. In other words it is pretty much impossible to migrate a BizTalk map to Service Bus map. Since they are both stored as XML maybe we could create a one-to-one mapping in BizTalk in order to convert them (a map to convert a map to another map):D

Service Bus map(left) vs BizTalk map

Service Bus map(left) vs BizTalk map (Click to enlarge)


As in BizTalk project, we can right-click on a map and choose “Test Map” in the context menu. However, no XSL-file path is displayed in the Output-window and I could not find any XSL-file in the temp folder. I was also unable to locate any article on the Internet which confirms that XSL is used as the underlying mapping technology. In addition, there is no way to specify a custom XSL-file which is pretty lousy. Why is it lousy? I prefer custom XSL over Designer and functoids anytime I work with complex transformations but I have to admit that I didn’t give BizTalk 2010 Mapper much chance.
The other thing I could not find is the way operations are created but I imagine it should be similar to functoids but with new class(es).


To summarize my first impression of the Service Bus Mapper CTP, there are three positive and three negative characteristics.


  • Intuitive sub-looping
  • Mapper resembles BizTalk 2010 Mapper (design, “Test Map”-functionality)
  • Nice looking operation icons


  • Lacking “Scripting”-operation
  • Tab-less Map designer
  • Cannot use custom XSL mapping (unknown underlying transformation technology)

I realize Microsoft promised to deliver Azure AppFabric integration tools in 2011 and they did, just before the year ended. It was maybe a bit rushed but the Mapper looks promising even though it is missing some cruitial features. However, this is not production ready release and there is still a hope they will add those missing features later on.