Monish Nagisetty's Space

Building connectivity on-premise, in the cloud and beyond

My webcast on AppFabric Connect

I recently presented a webcast on BizTalk and AppFabric. Check it out!

Extending the Reach of BizTalk 2010
Cloud computing is here to stay. Organizations can realize reduced cost and management by moving their applications to the cloud; however, this approach requires the ability to maintain a bridge between existing on-premise assets and those in the cloud. BizTalk Server 2010 introduces a new feature called “AppFabric Connect”, which enables organizations to leverage existing legacy investments on-premise while integrating with their next generation of applications in the cloud. BizTalk 2010 brings these capabilities to Windows Server AppFabric and Windows Azure AppFabric. In Windows Server AppFabric, this capability enables developers to leverage the power of the BizTalk LOB Adapters and the BizTalk Mapper from inside Windows Workflow applications. In Windows Azure AppFabric, it enables you to expose your BizTalk artifacts as service endpoints in the cloud. In this presentation, you will see how you can leverage your existing .NET investments to extend the reach of BizTalk 2010 both on-premise and in the cloud.


April 5, 2011 Posted by | Uncategorized | , | Leave a comment

Business Integration Roadshow in Columbus

I had another great opportunity to speak at the Business Integration Roadshow in Columbus, Ohio. This session highlighted some great new capabilities in the MSFT platform such as AppFabric Connect, Server AppFabric and BizTalk 2010. Check out the presentation below.

March 29, 2011 Posted by | Uncategorized | , | Leave a comment

BizTalk Integration Roadshow in Philadelphia

I recently presented at the Microsoft Business Integration Roadshow 2011 in Philadelphia on Monday 3/7/2011.  This presentation covered AppFabric, BizTalk 2010, and AppFabric Connect for BizTalk. Check it out.

March 8, 2011 Posted by | Uncategorized | , , | Leave a comment

Article Published on ASPAlliance: Using BTSTask to Create MSI Deployment Packages

I recently wrote an article for ASPAlliance on Using BTSTask to Create MSI Deployment Packages.  Check it out!

April 8, 2008 Posted by | BizTalk | | Leave a comment

DBMessageLogger – A Streaming Message Logger Pipeline component

Update (4/7/2008):

Please note that this pipeline component is not a substitute for the Message Tracking feature in BizTalk which can track messages at the port and orchestration level.   Message Tracking is a built-in feature within BizTalk and has all of these advantages:

It is important to note however that the Message Tracking feature is a system level tracking which tracks messages at an artifact level (Orchestrations and Ports).  If you need message tracking that has more context within a business process then you should consider using BAM with message body tracking.  My PC below is an alternative to the BAM solution since I provide hooks for tying the tracked message to other business level tracking data.

Thanks to Michael Stephenson for his valueable feedback regarding this topic.

Original Post (4/6/2008):

If you ever had any requirements to archive or log a BizTalk message then you have probably looked into handling this within a pipeline component (PC).  I had a similar requirement but I wanted to be able to log the message into a database table.  There is a pretty decent example of a PC that can log messages to file on Gille’s WebLog.  The sample code may be a little outdated though.

So I set out to build a PC that can log BizTalk message parts on receive or send sides and also be able to abort gracefully in the event of a failure.  Since logging is a non-critical operation, I do not want a failure during this operation to disrupt the entire process.  My primary goal for this PC was to read the message data in a streaming fashion and then save it to the database in chunks.  This design allows the PC to be scalable when dealing with large messages.

Let’s start by looking at the database tables necessary for storing the messages.

The first table is named IntegrationMessages and it has only one column named PayloadMessageId.  This table has one record for every interchange that arrives into BizTalk via receive pipelines or leaves BizTalk via send pipelines.

The second table is named IntegrationMessageParts and it is used to store the actual message parts in binary format.  Note that we are storing all message parts and not just the body part of a message.

Now let’s take a look at the design time properties available within this pipeline component.
Design time properties:

Enabled:  This property enables or disables the logging capability of this pipeline component.  If Enabled is false, then the pipeline component simply passes on the message down the pipeline without any processing.

LogContext:  This property specifies whether this pipeline component is being used in a receive pipeline or a send pipeline.

MsgReadChunkSizeInBytes:  This property is used to specify the size of the buffer used to temporarily store the message contents while reading from the stream.

ReceiveContextPropName:  This property is only applicable when the LogContext is set to Receive.  It is used to specify the property name when writing the PayloadMessageId (from the IntegrationMessages table) to the context. 

ReceiveContextPropNamespace:  This property is only applicable when the LogContext is set to Receive.  It is used to specify the property namespace when writing the PayloadMessageId (from the IntegrationMessages table) to the context. 

SendContextPropName:  This property is only applicable when the LogContext is set to Send.  It is used to specify the name of the property that allows

SendContextPropNamespace:  This property is only applicable when the LogContext is set to Send.

Download BTSMessageLogger Solution.  It includes the pipeline component project, a sample BizTalk project that uses the component and a Windows application to view the logged messages in the DB.


1) Extract the contents of the to C:\
2) Deploy the CustomerProcess project from within Visual Studio
3) Run the .\SQL\BTSMessageLogging_CREATE.sql on the local SQL instance to create the logger database
4) Import the bindings from the binding folder
5) Start the application
6) Drop the .\Sample Data\Customer3Rows.txt into C:\BTSMessageLogger\File Drops\In
7) Three (3) xml files should appear in C:\BTSMessageLogger\File Drops\Out
8) Use the MessageViewer application to view the logged messages

April 6, 2008 Posted by | BizTalk | | 3 Comments

Multi-server BizTalk Configuration under a NT4 Domain

I ran into the error below when configuring BizTalk in a multi-server environment (1 SQL Server + 1 BizTalk Server).  It turns out that both servers were members of a NT4 domain.  I discovered that BizTalk does not support NT4 domains.  As stated in the installation document, only Active Directory (AD) domains are supported.

TITLE: Microsoft BizTalk Server 2006 Configuration Wizard


CORP\QABTSServerAdmins is not an valid domain group. (ConfigHelper)




The specified domain either does not exist or could not be contacted. (ConfigHelper)

February 18, 2008 Posted by | Uncategorized | | Leave a comment

The system cannot find the file specified. (Exception from HRESULT: 0x80070002)

Have you ever seen the error below? The error tells you that it cannot find a file but it does not mention the name of the file! In my case, I had a map with a script functoid that referenced an external assembly. It turns out that I copied this map from another project and the assembly reference was no longer valid. I should have encountered build errors but instead I had to deal with this issue at runtime.

Event Type: Error

Event Source: BizTalk Server 2006

Event Category: BizTalk Server 2006

Event ID: 5753

Date: 2/8/2008

Time: 2:24:53 PM

User: N/A

Computer: QSI-BTS06R201


A message received by adapter “FILE” on receive location “RCV.CUST.DATA.FROM.SYSTEM.A” with URI “C:\BTSMessageLogger\File Drops\In\copy*.txt” is suspended.

Error details: The system cannot find the file specified. (Exception from HRESULT: 0x80070002)

MessageId: {A916E973-85FB-42B0-83CB-84670D0DDAFF}

InstanceID: {62D1A2A0-9D45-447C-ACD0-17F273E21762}

February 9, 2008 Posted by | BizTalk | | Leave a comment

Visual Studio 2005 Freezes when building BizTalk projects

Have you ever seen VS2005 freeze when building BizTalk projects? I have and it was not a pleasant experience.  In search for a solution back in October last year, I meticulously collected info about my environment and posted it on MSDN Forums.   I just ran into this problem again today and I saw that someone responded to my post with a solution that actually works! Even though the solution is ridiculous it worked for me.  Thank you Hema!

February 8, 2008 Posted by | Uncategorized | , | 1 Comment

BizTalk Assembly Checker Tool

Check out the BizTalk Assembly Checker tool out on codeplex.  I wish I had known about this tool before because it would have saved me some time when doing production deployments with multiple servers.  This tool allows you to verify that your BizTalk assemblies are present on all of your BizTalk servers.  Once you run the verification, you can also copy the assemblies from one BizTalk server to the GAC of all the other BizTalk servers.  This means you only need to login to one of the BizTalk servers when deploying.


February 7, 2008 Posted by | Uncategorized | | 1 Comment

BizTalk MSI Fails on Install (Exception from HRESULT: 0x80131047)

BizTalk MSI Error 

Event Type: Error
Event Source: BizTalk Server Deployment
Event Category: None
Event ID: 769
Date:  9/11/2007
Time:  5:56:57 PM
User:  N/A
Computer: MN-BTS06R2CTP1
An error occurred while attempting to install the BizTalk application: A file load exception occurred while attempting to install the assembly into the Global Assembly Cache. This error may occur if the assembly is delay signed, or if assembly was renamed after creating/signing.
The given assembly name or codebase was invalid. (Exception from HRESULT: 0x80131047)

Solution (Update 9/19/2007 3:49PM):

It turns out the culprit was in the script that generated the MSI.  I had the following two BTSTask Commands in my script.

BTSTask AddResource /Source:AssemblyA.dll”   /Destination:”%%BTAD_InstallDir%%\AssemblyA.dll” -ApplicationName:%AppName%  -Type:Assembly   -Options:GacOnInstall
BTSTask AddResource /Source:AssemblyB.dll”   /Destination:”%%BTAD_InstallDir%%\AssemblyA.dll” -ApplicationName:%AppName%  -Type:Assembly   -Options:GacOnInstall

Notice how the /Destination switch for the second command specifies AssemblyA.dll? This should instead be AssemblyB.dll.

September 11, 2007 Posted by | Uncategorized | | Leave a comment