CU2 for BizTalk Adapter Pack 2.0

MS have released the CU2 for BizTalk Adapter Pack 2.0 and is available for download. This update contains fixes to the WCF-SQL and SAP adapters. So if you are integrating with any of these servers, you probably want to update your pack!

Download it from here.

BizTalk Custom Pipeline for Excel 2007 (xlsx)

Hi there,

I have just released a custom pipeline to process and debatch xlsx (Excel 2007) files in BizTalk Server 2009 and up. The purpose of this custom pipeline is to decode the xlsx files and convert it to xml. This component also adds a namespace and debatches the xml files into individual records.

The following properties are available to the developer at design time:
NamespaceBase: – The new namespace to be inserted.
NamespacePrefix: – The namespace prefix to use.
RootNodeName: – Name of the root node after debatching the records.
IsFirstRowHeader: – Flag to indicate if the first row represents column names.

You can download it from codeplex:

http://excel2007pipeline.codeplex.com/

Cheers!

Where are the Microsoft.BizTalk.Streaming and Microsoft.BizTalk.XPathReader dlls?

If you are creating a custom pipeline component, you probably will use the Microsoft.BizTalk.Streaming and Microsoft.BizTalk.XPathReader dlls. But where is it? And how can you add a reference to these in your project?

The trick is simple. Instead of you going to the dll, let the dll come to you! All you have to do is below. I am assuming you are using BizTalk Server 2009 here.

1) In windows explorer, right click on your project and open with a text editor.
2) Add the following lines highlighted in blue in the references section of the file as shown under. 

  <ItemGroup>
    <Reference Include=”Microsoft.BizTalk.Messaging, Version=3.0.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL”>
      <SpecificVersion>False</SpecificVersion>
      <HintPath>..\..\..\..\..\Program Files (x86)\Microsoft BizTalk Server 2009\Microsoft.BizTalk.Messaging.dll</HintPath>
    </Reference>
.

.

     <Reference Include=”Microsoft.BizTalk.Streaming, Version=3.0.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL”>
          <SpecificVersion>False</SpecificVersion>
          <HintPath>
    Z:\GAC_MSIL\Microsoft.BizTalk.Streaming\3.0.1.0__31bf3856ad364e35\Microsoft.BizTalk.Streaming.dll</HintPath>
        </Reference>
        <Reference Include=”Microsoft.BizTalk.XPathReader, Version=3.0.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35,processorArchitecture=MSIL”>
          <SpecificVersion>False</SpecificVersion>
          <HintPath>
    Z:\GAC_MSIL\Microsoft.BizTalk.XPathReader\3.0.1.0__31bf3856ad364e35\Microsoft.BizTalk.XPathReader.dll</HintPath>
    </Reference>
.

.

  </ItemGroup>

3) Save and close the file.

4) Open the project in VS.

5) You will see your references added.

Cheers,

D

Dynamic Itinerary Resolution (ESB toolkit 2.0/2.1)

If you ever had a situation where you needed to attach an itinerary to your message dynamically, ESB toolkit just allows you to do that.

I recently worked on a project that involved various stages (which each stage having >1 orchestrations) and depending on the content of the message, it would get thrown out to a sharepoint portal for business exceptions. The support staff could then view the message, fix the contents of the message via infopath and resubmit the message into BizTalk. However, since there was a common entry point for all the messages into BizTalk, I needed a mechanism to dynamically attach the correct itinerary to the message depending on the progression made by that message just before it was thrown to Sharepoint. This is where the ESB toolkit comes in.

The ESB toolkit installs some receive and send pipelines which are designed for itineraries. One such receive pipeline is called ‘ItinerarySelectReceiveXml’ pipeline. This pipeline allows you to specify a BRI (not BRE) policy to determine which itinerary to use.

I created a file receive port and defined a new file location as under:

You can view the properties of this pipeline by clicking the button next the pipeline. Here you can set the fact key and the resolver connection string to point to your BRI policy.

The two important properties to set are:
ItineraryFactKey: The key in the dictionary returned by the resolver that contains the actual XML of the Itinerary selected. In most cases, it should be set to ‘Resolver.Itinerary’, unless a custom resolver is used.

ResolverConnectionString: Connection string to the itinerary that should be attached to the incoming message. This is a resolver connection string that contains name-value pairs that a resolver can use to select and/or look-up an itinerary. This in turn executes either the Static or Business Rules resolver, which provides an itinerary name (and version number). The ESB Itinerary Selector component then uses this name and version information to load the requested itinerary from the itinerary database.

Example ResolverConnectionString:
ITINERARY:\\name=MyItineraryName;
BRI:\\policy=MyPolicy;version=1.0;useMsg=True;

Name: The name of the itinerary to use.
Policy: In case the business rules engine is used to set the itinerary, the policy name is set here.
Version: Version of your policy to use. if this is left blank, the BRI engine uses the latest policy deployed.
useMsg: Set this to true if you need to pass the context of the message to the business rules engine (for content based routing).

Once these properties are set, you need to create and deploy a policy in the business rules composer. One of the rules in my policy is shown under:

My message stages would be something like:
Stage1
Stage2
Stage3
Stage4

Once this policy is deployed, it will be called by the pipeline and the message passed through.

Basically what I have done is first checked the target namespace and ensured that it matched the namespace of the message I was expecting. The second condition was to check if the message was thrown out to Sharepoint from one of the stages in this itinerary. I wanted that itinerary to be attached to this message only if the message dint go through all the stages in that itinerary. Once the message goes through the last stage in this itinerary, the messagestage it set to something like “PhaseAProcessed” thus not meeting the above conditions for this itinerary.

You can create similar rules in your policy to match certain stages and attach the relevant itineraries.

Thats about it. You can now throw a message in your receive location and the correct itinerary will be attached to your message based on the content.

BizTalk 360 CTP available for download!

BizTalk 360 is a web based (RIA) BizTalk monitoring/support tool for Microsoft BizTalk Server. It addresses some of the common problems customers face today like governance/auditing, fine grained authentication, remote access etc. It also makes life easy for people who support production BizTalk systems by providing various dashboard and greater visibility.

BizTalk environment dashboard provides the centralized view of the health of the entire BizTalk environment. It allows the support person to visualize the health of the environment from a single location, which includes:

• Highlights the suspended service instances count and last suspended time
• Artifacts count (ex:number of host instances, message boxes etc)
• Artifacts are colour coded based on their state (red/green)
• Ability to drill down into details from the dashboard.

It supports 2006, 2006 R2, 2009, 2010 and the BizTalk team are still working on the pricing model.

Check it out here!

BizTalk 2010 MsBuild Generator

The guys at codeplex are working on yet another interesting tool to create builds for your BizTalk projects. You can create MsBuild scripts to implement a build process in your development environment for your BizTalk projects. Its a good tool to experiment with (its still beta).

This tool has been recently updated to use .net 4 and VS 2010. You can get it here.