BizTalk Community Series: Introducing Tomasso Groenendijk

BizTalk forums are an important platform for people to ask and/or answer questions, to start discussion and find solutions to their problems. The BizTalk forums are a part of the BizTalk Server Category in the MSDN forums. This category has a BizTalk Server General, BizTalk Server Adapters and Adapter Pack, BizTalk Server EDI and AS2, BizTalk Server RFID, and BizTalk ESB Toolkit.

I myself have been quite active in the BizTalk Server General and BizTalk Server Adapters and Adapter Pack. However, I am not the only one that is active. There are many others answering questions, which other people ask on these forums. My colleague from motion10 Tomasso Groenendijk is quite active in the ESB Toolkit forum. So today’s story is on him.

Tomasso Groenendijk is a BizTalk consultant at motion10. He is 40 years old and lives in Rotterdam in the Netherlands. Tomasso specialized in the realization of applications based on the Microsoft technologies like BizTalk, C# and Web Services.

Tomasso has around 8 years’ experience in the field of BizTalk development. He really likes to design a solution and to develop it. He feels his administrative skills are a bit less.

“I like the ESB Toolkit a lot although it’s not quite finished. I’m very curious how it will soon be integrated into BizTalk 2010 R2!”

Tomasso likes movies. Almost every genre from Science fiction to Westerns and also a little drama. In addition, he likes to cycle. Recently he started his own blog about BizTalk with the emphasis on the ESB toolkit and also on Windows Azure. Tomasso tries to stay up to date in BizTalk and Azure by reading other blogs and experiment with the new features.

A word on my blog and his own contributions:

“I really enjoy reading Steef-Jan’s blog, because he is always trying out the new functionality in BizTalk and Windows Azure. When I have time I like to develop small tools around BizTalk like the sample tool to Test ESB Toolkit Business Rules which is available on Code Gallery.”

In the summer Tomasso tries to cycle in weekends when it is not raining. Just recently he has joined the gym because the fall has begun and he wants to stay in shape. In the winter whenever there is an opportunity he tries to ski (Indoors or somewhere in Europe like Switzerland or France).  

Thanks Tomasso for your time and contributions.

Cheers, Steef-Jan

How to handle Zombie

How to handle Zombie

I’m glad to present the first release of BizTalk Zombie Management. You can find it athttp://btszombiemanagement.codeplex.com/ What is BizTalk Zombie Management ? This is a codeplex project. It proposes a solution to process zombie message after their zombified state.It’s a windows service that need to be install on each BizTalk machine. When a zombie is […]
Blog Post by: Jeremy Ronk

Build 2012 Recap

The Adventure of Build 2012
This has been and exciting year for technology especially around Windows8. Shortly after Build 2011, last year, I began my work with Windows8 and completed my first book ever Getting Started with Windows 8 Apps. A large part of this year has been spent really understanding all the pieces […]
Blog Post by: Ben Dewey

Creating a Custom Itinerary Messaging Service for ETW Tracing

ETW Tracing from the BizTalk Customer Advisory Team (CAT) is now increasingly used by developers for tracing in BizTalk applications. In the ESB toolkit it’s not implement so I wanted to see if it’s difficult to create a custom Messaging Service that uses ETW Tracing.

Steps

On MSDN on the Creating a Custom Itinerary Messaging Service page is explained how to create a custom Messaging Service. The following methods and properties are required:

  • The Name property is the name of the service as it will appear in an itinerary. It must match the configured name in the itinerary services configuration in the Esb.config file.
  • The SupportsDisassemble property indicates whether the custom messaging service you are creating supports disassemble and the execution of multiple resolvers.
  • The ShouldAdvanceStep method takes in the current itinerary step, and the current message, and returns a Boolean value that indicates whether the dispatcher should advance the itinerary after the service executes. In almost all cases, this method should return true.
  • The Execute method is of greatest importance for a messaging service and contains the logic that will be executed at run time. It takes in the pipeline context, the message, the resolver string, and the current itinerary step; and it returns the updated message.
In the code example on MSDN is only the ExecuteRoute method shown that is called by the Execute method. This method is not needed when you create your own Messaging Service. Therefore I used Reflector to disassemble the Routingservice to get also the other methods and properties.
 
On the Best Practices for Instrumenting High Performance BizTalk Solutions blog post from the CAT team you can get the source code for the ETW tracing.
 
In the example below is the “ExecuteTracing” method shown that is specific for the Tracing Service:
 
.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }
public IBaseMessage ExecuteTracing(IPipelineContext context, IBaseMessage msg, 
string resolverString) { // A call to the TraceIn method at the very beginning of an instrumented code. Guid g = TraceManager.PipelineComponent.TraceIn(); IBaseMessage message; if (context == null) { throw new ArgumentNullException("context"); } if (msg == null) { throw new ArgumentNullException("msg"); } try { // Get context properties from message string interchangeID = msg.Context.Read(BtsProperties.InterchangeID.Name,
BtsProperties.InterchangeID.Namespace) as string; string messageType = msg.Context.Read(BtsProperties.MessageType.Name,
BtsProperties.MessageType.Namespace) as string; string receivePortName = msg.Context.Read(BtsProperties.ReceivePortName.Name,
BtsProperties.ReceivePortName.Namespace) as string; string inboundTransportLocation = msg.Context.Read(BtsProperties.InboundTransportLocation
.Name, BtsProperties.InboundTransportLocation.Namespace) as string; // Writes an information message to the trace. TraceManager.PipelineComponent.TraceInfo("[InterchangeID: {0}]", interchangeID); TraceManager.PipelineComponent.TraceInfo("[MessageType: {0}]", messageType); TraceManager.PipelineComponent.TraceInfo("[ReceivePortName: {0}]", receivePortName); TraceManager.PipelineComponent.TraceInfo("[InboundTransportLocation: {0}]", inboundTransportLocation); message = msg; } catch (Exception exception) { EventLogger.Write(MethodBase.GetCurrentMethod(), exception); // Writes the exception details to the trace. TraceManager.PipelineComponent.TraceError(exception, true, g); throw; } // Writes an informational event into the trace log that a method is about to complete. TraceManager.PipelineComponent.TraceOut(g, "[Completed trace]"); return message; }

.csharpcode, .csharpcode pre
{
font-size: small;
color: black;
font-family: consolas, "Courier New", courier, monospace;
background-color: #ffffff;
/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt
{
background-color: #f4f4f4;
width: 100%;
margin: 0em;
}
.csharpcode .lnum { color: #606060; }

 
In the esb.config in “C:\Program Files\Microsoft BizTalk ESB Toolkit 2.1” you have to add your
custom Itinerary Service.
 
Now you can create an Itineray with the custom TracingService:
 
The created itinerary can be tested with the Itinerary Test Client that is located in the ESB Toolkit
sample applications
 
Trace output:
 

Conclusion

In principle, it’s not very difficult to create a custom Messaging Service. Still it took a lot of time to create the service and to got the itinerary running because it’s not so well-documented,.

You can download the sample Messaging Service with the source code here:

http://code.msdn.microsoft.com/Creating-a-Custom-44338c2e

Sweden Windows Azure Group Meeting in November & Fast with Windows Azure Competition

SWAG November Meeting

There will be a Sweden Windows Azure Group (SWAG) meeting in Stockholm on Monday 19th November. Chris Klug will be presenting a session on Windows Azure Mobile Services, and I will be presenting a session on Web Site Authentication with Social Identity Providers. Active Solution have been kid enough to host the event, and will be providing food and refreshments.

The registration link is here: http://swag14.eventbrite.com

If you would like to join SWAG the link is here: http://swagmembership.eventbrite.com

Fast with Windows Azure Competition

I’ve entered a 3 minute video of rendering a 3D animation using 256 Windows Azure worker roles in the “Fast with Windows Azure” competition. It’s the last week of voting this week, it would be great if you can check out the video and vote for it if you like it. I have not driven a car for about 15 years, so if I win you can expect a hilarious summery of the track day in Vegas. My preparation for the day would be to play Project Gotham Racing for a weekend, and watch a lot of Top Gear.

My video is “Rapid Massive On-Demand Scalability Makes Me Fast!”.

The link is here: http://www.meetwindowsazure.com/fast/

SSO Database as a config store / SSO config application drops non-default permissions on any changes

SSO Database as a config store / SSO config application drops non-default permissions on any changes

About a year ago I used to religiously use the SSO database as a config store for my BizTalk applications, regardless whether there was a requirement around security or not. Back then the site I was working on had the all the BizTalk host accounts in the SSO affiliate application users group so by default […]
Blog Post by: Johann

Processing Binary Documents as XLANGMessages Through BizTalk Via Web Services

Processing Binary Documents as XLANGMessages Through BizTalk Via Web Services

Seroter has previously written about this in Processing Binary Documents Through BizTalk Via Web Services. I had to send a binary document to a SharePoint web service but in my case my document payload was not an element inside an XML document. The orchestration payload that contained my document was a un-typed MIME encoded XLANGMessage […]
Blog Post by: mbrimble

Interview Series: Four Questions With  Jürgen Willis

Interview Series: Four Questions With Jürgen Willis

Greetings and welcome to the 44th interview in my series of talks with leaders in the “connected technology” space. This month, I reached out to J%u00fcrgen Willis who is Group Program Manager for the Windows Azure team at Microsoft with responsibility for Windows Workflow Foundation and the new Workflow Manager (on-prem and in Windows Azure). […]
Blog Post by: Richard Seroter