Archive for the ‘BizTalk Server’ Category.

Resolving the BizTalk Server 2006 warning that dependencies cannot be found

I just recently started a new BizTalk Server 2006 project in which I created a custom pipeline component to assist in the compression and decompression of messages.  The plan is to have a receive location monitor a folder via the File adapter, and when a zip file is uploaded via FTP from a 3rrd party process, the receive location will use the custom pipeline component , via a receive pipeline, to decompress the file and publish the message to the MessageBox.  Pretty slick!

See the WingtipToys solution in the SDK folder for a great heads-start to creating a compression / decompression pipeline component.  You can find this solution in the following folder: C:Program FilesMicrosoft BizTalk Server 2006SDKScenariosPM.

So, to get this rolling, I added a C# project to my BizTalk solution.  There are few things I configure on these C# library projects, as I need to utilize the output assembly in my Pipelines BizTalk project.

  1. Set the build output path to the following location (for the Debug configuration): C:Program FilesMicrosoft BizTalk Server 2006Pipeline Components.  This way, every time the project is built, the debug assembly is placed in the Pipeline Components folder.  From here, you can then reference the pipeline component appropriate through both Visual Studio 2005 (for your receive pipeline) and when you deploy it to BizTalk Server.
  2. Uncheck the “Build” checkbox, for the C# library project, in the Solution Configuration.  This way, when you rebuild or deploy the solution, the C# library project isn’t also rebuilt.  The reason is that you will most likely get errors or warnings indicating that the file is in use, and cannot be rebuilt.  This is fine – you can simply do this manually.

Having made these changes, you now have a pretty flexible setup for moving forward.

When you reference the custom pipeline component assembly, you’ll want to reference the assembly that has been built in the C:Program FilesMicrosoft BizTalk Server 2006Pipeline Components folder.  This way, when you deploy your receive or send pipelines, BizTalk will continue to reference the same assembly.

However, having referenced this assembly, you will see these warnings the next time you build your solution:

—— Build started: Project: BizTalkApp, Configuration: Development .NET ——
Updating references…
The dependency ‘Microsoft.BizTalk.Tracing’ could not be found.
The dependency ‘Microsoft.BizTalk.Bam.EventObservation’ could not be found.
The dependency ‘Microsoft.BizTalk.Streaming’ could not be found.
The dependency ‘Microsoft.BizTalk.XPathReader’ could not be found.
Performing main compilation…

While these warnings are harmless, they are annoying.  In order to “suppress” these warnings, select the referenced custom pipeline component assembly, and set Copy Local from True to False.  Once you do this, these warnings will disappear.

I hope this helps!

Commerce Server 2007: BizTalk 2006 Adapter White Papers

The Commerce Server team has released four white papers outlining how to use the Commerce Server adapters to export a product catalog, export an inventory catalog, export new orders, and export user profiles.  If you are attempting to use the adapters (or even thinking about it), I highly encourage you to take a look at these white papers.  If nothing else, they will give you a good overview of how you can make use of these adapter (I’ve been wanting to blog on them for awhile now, but haven’t found the time).

In this lab, you will use the Microsoft Commerce Server 2007 Catalog adapter with Microsoft BizTalk Server 2006 to export a catalog from the Commerce Server 2007 Starter Site to the CSharp Site.

In this lab, you will use the Microsoft Commerce Server 2007 Inventory adapter with Microsoft BizTalk Server 2006 to export an inventory catalog from the Commerce Server 2007 Starter Site to the same inventory catalog within the CSharp Site.

In this lab, you will use the Microsoft Commerce Server 2007 Orders adapter with Microsoft BizTalk Server 2006 to export new orders from the Commerce Server 2007 Starter Site to a specified file directory.

In this lab, you will use the Microsoft Commerce Server 2007 Profiles adapter with Microsoft BizTalk Server 2006 to export new user profiles from the Commerce Server 2007 Starter Site to the CSharp Site.

Good luck!

A new twist to the error: “Unable to enlist in the transaction.”

I learned a new twist to the following error message today:

The adapter “SQL” raised an error message. Details “Unable to enlist in the transaction. (Exception from HRESULT: 0x8004D00A)”.

This can occur in a scenario where your BizTalk server attempts to connect to a separate SQL Server database and execute a distributed transaction.  In order for this to work the BizTalk server must have the ability to “hand-off” the transaction to SQL Server.  Typically, when you receive this error, it’s because the Distributed Transaction Coordinator (DTC) service is disabled or network DTC access is disabled.  These are the default settings in Windows Server 2003.  Take a look at the following article:

http://support.microsoft.com/?kbid=816701

There’s an additional twist to this scenario.  I found myself in a situation where I was receiving this error but had DTC setup correctly on all the machines in my BizTalk group and SQL Server cluster.  Nevertheless, the distributed transactions failed.  Then I found the following article:

http://msdn2.microsoft.com/en-us/library/aa561924.aspx

Turns out that, in order for DTC to work, the SQL Server must be able to resolve the NetBios name of the client (the BizTalk servers, in this case).  If it cannot resolve the NetBios name the transaction will fail.  In my environment, a firewall prevented the ability to resolve the NetBios name to an IP address thereby preventing the distributed transaction from processing.

To resolve this, I updated the HOST files on the SQL Server cluster so that they were able to resolve the NetBios names to an IP address.  Literally, moments after saving the HOST file, all my records started getting written into the database.

As I said, a different twist to a common problem.

I hope this helps!