Showing posts with label biztalk. Show all posts
Showing posts with label biztalk. Show all posts

Tuesday, June 29, 2010

AX .NET Business Connector – How to Open Multiple Company Connections Simultaneously

As part of a recent project we needed to access the .NET Business Connector in Dynamics AX through a component (in this case for data lookup in BizTalk’s Business Rule Engine).  Because we were going to have many messages flowing through in a short period of time all requiring evaluation of business rules based on AX data, we intended to create some helper classes to enable the reuse of AX connections and to cache data used in the rules.  Our challenge was that messages were destined for different companies in AX.  If you have two orchestrations simultaneously evaluating these rules which in turn simultaneously open connections to AX you run into a bit of trouble.

Suppose you have two Microsoft.Dynamics.BusinessConnectorNet.Axapta objects (DAX1, DAX2), one each for different companies:

System.Net.NetworkCredential credential = new System.Net.NetworkCredential("<BC_USER>", "<BC_PASSWORD>", "<BC_DOMAIN>");
DAX1.LogonAs("<AX_USER>”, "<BC_DOMAIN>", credential, "<COMPANY_1>", "", "<COMPANY_1>@<AOS>:<PORT>", "");
DAX2.LogonAs("<AX_USER>”, "<BC_DOMAIN>", credential, "<COMPANY_2>", "", "<COMPANY_2>@<AOS>:<PORT>", "");

When you reach the second LogonAs statement, the logon fails with an exception of type LogonSystemChangedException.  ("The logon failed because the logon parameters do not match those currently being used in Business Connector").

The following blog post gives a good description of the Business Connector’s intended use, which is essentially to act as a client:

http://blogs.msdn.com/floditt/archive/2008/07/24/the-net-business-connector-bc-net-and-the-iis.aspx

At first it seemed there was no way to do this.  We opened a ticket with Microsoft and as a short term solution, installed the AX Client on the BizTalk server so that we could use the overload of LogonAs that takes a path to an .axc file with connection details.  It turns out this works, however you have the overhead of installing the AX client on the BizTalk server and creating .axc files for BizTalk.  We didn’t like this idea also because of issues with maintaining the .axc files and the slower performance of the Business Connector using the Client to read the .axc file.

Ultimately Microsoft came back with a resolution.  It turns out that the parameter for the object server (second last parameter) was incorrect.  Unfortunately in many code samples and on MSDN, this parameter is defined as "Company1@AosInstance:PortNumber”.  The first part of this should actually be the Instance Name (by default “DynamicsAx”) and the part after the @ sign is the Server name.  A better example might be “DynamicsAx@AOSSERVER01:2712”.

Changing the above code to use Instance names works:

System.Net.NetworkCredential credential = new System.Net.NetworkCredential("<BC_USER>", "<BC_PASSWORD>", "<BC_DOMAIN>");
DAX1.LogonAs("<AX_USER>”, "<BC_DOMAIN>", credential, "<COMPANY_1>", "", "<INSTANCE_NAME>@<AOS>:<PORT>", "");
DAX2.LogonAs("<AX_USER>”, "<BC_DOMAIN>", credential, "<COMPANY_2>", "", "<INSTANCE_NAME>@<AOS>:<PORT>", "");

So now we can open two connections to AX simultaneously with different companies in the same object instance.

Thursday, August 27, 2009

Relative .snk file paths in Visual Studio 2008

I’m sure someone has already blogged on this, but as a reminder to myself and others, in Visual Studio 2008 it is not as straightforward to provide a relative path for a shared .snk file (for instance when signing multiple BizTalk projects with the same key file).

In the past, you could simply type in the path to the snk file in the project properties. Now this field is a dropdown and selecting browse will only let you find and copy the file to the root of the project.

image

To get around this, you can edit the project file (in the case of BizTalk, the .btproj). The following is an example where the .snk is both included as a shortcut in the project (not a copy) and uses the .snk for signing:

(Note: this project is the updated project schema for BizTalk 2009, so don't try to use this approach for BTS2006+VS2005)

<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="3.5" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProductVersion>9.0.30729</ProductVersion>
<SchemaVersion>2.0</SchemaVersion>
<ProjectGuid>{6092B853-D9B4-4C5E-B480-746703C74E80}</ProjectGuid>
<ProjectTypeGuids>{EF7E3281-CD33-11D4-8326-00C04FA0CE8D};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
<OutputType>library</OutputType>
<GenericProcessing>true</GenericProcessing>
<RootNamespace>Test.Orchestrations</RootNamespace>
<AssemblyName>Test.Orchestrations</AssemblyName>
<TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
<BpelCompliance>True</BpelCompliance>
<SignAssembly>true</SignAssembly>
<AssemblyOriginatorKeyFile>..\Test.snk</AssemblyOriginatorKeyFile>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\Release\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<ItemGroup>
<Reference Include="System">
<Name>System</Name>
</Reference>
<Reference Include="System.Xml">
<Name>System.XML</Name>
</Reference>
<Reference Include="System.Configuration">
<Name>System.Configuration</Name>
</Reference>
<Reference Include="Microsoft.BizTalk.Pipeline">
<SpecificVersion>False</SpecificVersion>
</Reference>
<Reference Include="Microsoft.BizTalk.DefaultPipelines">
<Name>Microsoft.BizTalk.DefaultPipelines</Name>
</Reference>
<Reference Include="Microsoft.BizTalk.GlobalPropertySchemas">
<Name>Microsoft.BizTalk.GlobalPropertySchemas</Name>
</Reference>
<Reference Include="Microsoft.BizTalk.TestTools">
<Name>Microsoft.BizTalk.TestTools</Name>
</Reference>
<Reference Include="Microsoft.XLANGs.BaseTypes">
<Name>Microsoft.XLANGs.BaseTypes</Name>
</Reference>
</ItemGroup>
<ItemGroup>
<Compile Include="Properties\AssemblyInfo.cs" />
</ItemGroup>
<ItemGroup>
<None Include="..\Test.snk" />
</ItemGroup>
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
<Import Project="$(MSBuildExtensionsPath)\Microsoft\BizTalk\BizTalkC.targets" />
</Project>

Just save the file and VS will reload the project showing “..\Test.snk” as the location of the strong name key file.

Friday, August 21, 2009

SysPreping a BizTalk development machine

Great info from MSDN on how to set up a development VM that can be shared with other developers in team scenarios. The scripts are included in the BizTalk SDK.

http://msdn.microsoft.com/en-us/library/dd792685%28BTS.10%29.aspx

Note that it mentions that WSS installations will likely need to be reconfigured to get working again following the sysprep. If WSS is required, considering either leaving WSS unconfigured or not installing until after sysprepping.

BizTalk and Dynamics AX 2009 AIF Integration

I'm taking the first steps down the road of integrating BizTalk and DAX. By many accounts, it's not the straightest road, but I'm up for the challenge :) I'll include any learnings on this as I go. In the mean time, here is where I have started on this road:

Microsoft Dynamics AX 2009 AIF BizTalk Adapter Configuration White Paper
http://www.microsoft.com/downloads/details.aspx?familyid=EDC62433-5B21-4F74-B065-B075BA6DC86D&displaylang=en

Latest BizTalk HotRod issue
http://biztalkhotrod.com/Documents/Issue7_Q3_2009.pdf

Monday, July 06, 2009

BizTalk BAM Data Archiving

Being a bit late to the finer points of managing a BAM installation, I'm just discovering some useful and important things to know about BAM, particularly managing its archive and understanding its data age policy.

http://seroter.wordpress.com/2007/06/22/biztalk-bam-data-archiving-explained/

As always, thanks Richard for making such in-depth-yet-easy-to-understand posts.  Makes my job a lot easier :)

Thursday, July 02, 2009

BAM Activity and Real-time Aggregations Windows

You can modify the duration data is kept in the BAMPrimaryImport database using the bam_Metadata_Activities table:

http://technet.microsoft.com/en-us/library/ms962341.aspx

In addition, if you are using Real-time Aggregations for BAM data, you can set the window of data kept using the bm utility and the set-rtawindow command:

http://msdn.microsoft.com/en-us/library/aa559458.aspx

Wednesday, October 01, 2008

Changing Default BAM Alerts From Email

By default, the BAM alerts installed out of the box are set up to be mailed with a from address of BAM@microsoft.com This is a security concern for clients, not to mention kind of silly.

I kept looking for a while for the steps to change this, so I'm posting this so I can remember for next time.

General info on the script used is documented in MSDN:
http://msdn.microsoft.com/en-us/library/aa560641.aspx

These steps came from a user named Kent Weare on a BizTalk R2 General forum, but I am reposting his response in case it becomes unavailable in the future. The steps look to be copy-pasted from documentation somewhere, which I have yet to find an original source for. Note: there is no step 1.


Step 2: Retrieve the current BAMAlerts Application Definition File
(ADF)

1. On the Start menu, point to All Programs, point to Microsoft SQL Server 2005, point to Notification Services, and then click Notification Services Command Prompt to open a Notification Services Command Prompt window.
2. C:\Program Files\Microsoft BizTalk Server 2006\Tracking>cscript ProcessBamNSFiles.vbs -Get config.xml adf.xml BAMPrimaryImport

Step 3: Modify Application Definition File (ADF)

1. Copy adf.xml to ClusterAdf.xml
2. Change SMTP from info: from ‘BAM@Microsoft.com’ to ‘’.
4. Save ClusterAdf.xml

Step 4: Update the current BAMAlert Application Definition File (ADF)

1. C:\Program Files\Microsoft BizTalk Server 2006\Tracking>cscript ProcessBamNSFiles.vbs -Update config.xml ClusterAdf.xml
BAMPrimaryImport

Don't worry about the "ClusterAdf.xml" naming convention. We clustered the Bam alerts service hence us calling the file that.

Friday, September 26, 2008

Event Log error on BTSHTTPReceive.dll

This posting also helped me figure out why I got event log errors indicating IIS could not find a file in the C:\Windows\Temp directory. 
 
Always make sure the application pool worker service account has Read access to the windows Temp directory!
 
 

Successful Configuration of the BAM Portal

This post helped me work out a HTTP 401 error I was receiving on the BAM Portal.  I only had to do the first step he recommended (setting authentication to use NTLM) which can be missed, especially if (as I have) created a whole new website to host BAM.
 
 

Monday, August 11, 2008

BizTalk Deployment Framework: Add Reference to Application

I wish I had found this before - I had not previously found a way to script the adding of a reference to another application, and thus used workarounds (like including assemblies from other projects).

http://blogs.sqlxml.org/bryantlikes/archive/2007/07/18/creating-biztalk-application-references-with-nant.aspx

This is particularly useful if you have a separate application defined for a common Exception Handling framework (for instance using the ESB Guidance package: http://www.codeplex.com/esb).

Thanks Bryant!

Friday, January 04, 2008

So You Want to Learn BizTalk... (Part II)

With the fundamental concepts of BizTalk server under your belt, you are ready to get your hands dirty.

Labs

While especially easy to use if you do not have a development machine setup, these labs provide a relatively superficial demonstration of the core BizTalk features. Can be useful for a quick demo to a non-developer though.

Microsoft Virtual Labs
http://msdn2.microsoft.com/en-us/virtuallabs/aa740373.aspx

Tutorials

What's better are the tutorials that are part of the documentation and SDK. This is where a developer really goes 'aha!' for the first time and starts to see he or she can begin to use BizTalk Server. These are not optional ;)

BizTalk Tutorials:
http://msdn2.microsoft.com/en-us/library/aa560270.aspx

Training

If you or your employer are part of the Microsoft Partner program, you have access to perhaps the most valuable and comprehensive self-training package out there - the Classroom-in-a-Box. It includes training videos and slides, whitepapers, more hands-on labs and a VPC with every possible BizTalk core feature installed and configured. It can be accessed under the Partner Resources in the BizTalk product area:
https://partner.microsoft.com/US/40012176

Books

I don't claim to have read many of the books out there on the product. From experience however I can safely say that this book has proved valuable numerous times both as a first read a reference on projects:
http://www.chapters.indigo.ca/books/item/books-978159059699/0/Pro+Biztalk+2006

You can read my review of it here:
http://asonofmartha.blogspot.com/2006/11/pro-biztalk-2006.html

Additional titles can be found here:
http://btob.barnesandnoble.com/index.asp?sourceID=0041631635&btob=Y

Blogs

With prior versions of BizTalk Server, the best place to get answers to real-world problems was always through blogs. Now, MSDN is typically the authority on the "How-To" and plenty of books exist for the product, however there continue to be scores of bloggers discussing their challenges and successes implementing BizTalk solutions. Too many to list in fact, and so here are some links to discover those blogs:

http://www.squidoo.com/bts06

http://www.biztalkgurus.com/

http://www.biztalkgurus.com/blogs/

My del.icio.us BizTalk links:

http://del.icio.us/zutroyquixote/BizTalk


Newsletters and Publications

BizTalk Gurus offers a periodic newsletter called The BizTalker with useful "news from the front":
http://www.biztalkgurus.com/newsletter/index.aspx

There is also a quarterly publication now on its third release called BizTalk HotRod

Where to next...

At this point, you should be well-armed to assist in new or existing BizTalk projects. However, if you are expected to start or lead a project on your own you will do well to fill out your training with additional reading and possibly formal training (including certification).

Coming Up Next:

Part III: Beyond the basics

Previously:

Part I:

Friday, December 21, 2007

So You Want to Learn BizTalk... (Part I)

Learning a new technology can often be a challenge especially if it is one that requires a different different set of lenses on the world. No better can this thought be applied than to the undertaking of learning BizTalk development. It is not for the faint of heart. Let me make it clear that BizTalk is a very powerful and agile tool - but this in combination with the complexities of the problems it solves gives the tool a steep learning curve.

Experience Prerequisites

  • Strong knowledge of the .NET Framework (2.0 or higher)
  • Strong familiarity with XML and related tools (XPath, XSLT)
  • Understanding of SOAP web services and when to use them
  • Use of Visual Studio 2005
I wrote this list then realized an almost identical list comes from the horse's mouth:
http://msdn2.microsoft.com/en-us/library/aa577674.aspx

Experience Nice-To-Haves
  • Experience with Integration projects
  • Understanding of Message-Oriented development
  • Understanding of Service-Oriented Architecture (incl the Tenets of SOA)
  • Understanding of Enterprise Services Buses
Where to Begin

As with development of any server product, I strongly recommend using a virtual PC on which you can install everything (SQL Server + BIzTalk Server + Visual Studio). Development can be done on a separate machine from the DEV server, but if you are using a VPC having everything on the same box will save time.

Part of the initiation to BizTalk development should most certainly include performing the full BizTalk installation. This will serve to appreciate what is actually under-the-hood. Even if infrastructure and server installation is not your forte, this experience will serve you well in your trials and tribulations ... er, travels.

To start, as with most Microsoft products, the best place is the Microsoft Learning:

Clinic 2954: First Look: Microsoft BizTalk Server 2006 for Developers
https://www.microsoftelearning.com/eLearning/courseDetail.aspx?courseId=51883

With that, you can flesh out the details with this article from the documentation:

Product Documentation: Understanding BizTalk
http://msdn2.microsoft.com/en-us/library/aa546748.aspx


Coming Up Next:

Part II: Tutorials, Labs and Books, Oh My!

Part III: Beyond the basics

Thursday, September 13, 2007

Migrating BizTalk 2004 (VS 2003) Solution to BizTalk 2006 (VS 2005)

While the BizTalk Server product team has done a commendable job of being able to migrate an already deployed BizTalk 2004 solution to BizTalk 2006 in-situ, there is definitely some effort in upgrading the Visual Studio solution itself such that subsequent deploys actually work.

The situation is complicated by two things: the change in project definitions between VS 2003 and VS 2005, and of course the migration from .NET 1.1 to .NET 2.0 (there should be no complication by .NET 3.0 with BizTalk 2006 R2 as .NET 2.0 exists as-is in 3.0).

Depending on the solution, some of the following items may not apply, and there may be other items not mentioned you will need to take care of (ie referencing deprecated classes, method overloads etc).


  1. Migrate the solution to VS 2005 by simply opening the VS 2003 .sln file.  Complete the steps of the solution migration wizard.  This will generate a report of the items you may need to fix (esp deprecated classes)
  2. Once in the solution, at the BizTalk Project level you will need to do the following:
    1. If you have web references in your project, you will need to rebuild them.
      1. Delete each web reference and re-add them with the same name
      2. If you use Dynamic web references, ensure that property is selected
      3. Add a reference to System.Configuration if it is not there already (the compiler will fail otherwise)
    2. Open the project's properties
      1. Assign a default BizTalk Configuration Database
      2. Assign an Application Name
  3. For each schema in your solution that uses promoted properties
    1. Open the 'Show Promotions' dialog.  This will rebuild the xsd's code-behind (.cs)
  4. For each orchestration with a web-port
    1. Delete the configured web port (since you regenerated the web reference)
    2. Re-add the web port with the same name, ensuring it is a Dynamic web port if necessary
    3. Re-assign message types for messages defined in Orchestration Explorer
    4. Re-connect send/receive shapes if necessary
You may find after your first build there are new warnings.  Some warnings have been added to assist in improving the performance/stability of your BizTalk solution.  The one most notable to my solution was the following:

Performance Warning: marking service 'OrchestrationName' as a longrunning transaction is not necessary and incurs the performance penalty of an extra commit

For orchestrations where long-running was not necessary (ie do not contain send/receive pattern or other long-running transactions), I have since changed them to use Transaction Type of None.  Hopefully we will see a reduction of database chatter for these orchestrations when we benchmark the changes.

Clearly the migration is not trivial, though hopefully yours is smooth and relatively quick.

Thursday, September 06, 2007

XLANG/s error 10034 FileLoadException at _GetTypeByName, Issue and Resolution

(For those who want the abstract, see `The Solution` below.)

After performing a migration of a BizTalk 2004 project to BizTalk 2006 and running some unit tests, I ran into a very frustrating and at first misleading error in the application event log.

Source: XLANG/s
Event ID: 10034
Type: Error
Category: None

Uncaught exception (see the 'inner exception' below) has suspended an instance of service ' Bulloch.ProcessTrs(5146e3cd-3d88-4845-0795-4ccd1196bbe3)'.
The service instance will remain suspended until administratively resumed or terminated.
If resumed the instance will continue from its last persisted state and may re-throw the same unexpected exception.
InstanceId: 29059449-1b02-4e27-9b09-520ec69520a7
Shape name: Receive Trs File
ShapeId: f8763ddd-f0a3-41a9-9aee-4d13bc541cfa
Exception thrown from: segment 1, progress 3
Inner exception: The given assembly name or codebase was invalid. (Exception from HRESULT: 0x80131047)
       
Exception type: FileLoadException
Source: mscorlib
Target Site: Void* _GetTypeByName(System.String, Boolean, Boolean, Boolean, System.Threading.StackCrawlMark ByRef, Boolean)
The following is a stack trace that identifies the location where the exception occured

   at System.RuntimeTypeHandle._GetTypeByName(String name, Boolean throwOnError, Boolean ignoreCase, Boolean reflectionOnly, StackCrawlMark& stackMark, Boolean loadTypeFromPartialName)
   at System.RuntimeTypeHandle.GetTypeByName (String name, Boolean throwOnError, Boolean ignoreCase, Boolean reflectionOnly, StackCrawlMark& stackMark)
   at System.RuntimeType.PrivateGetType(String typeName, Boolean throwOnError, Boolean ignoreCase, Boolean reflectionOnly, StackCrawlMark& stackMark)
   at System.Type.GetType(String typeName)
   at Microsoft.XLANGs.Core.XMessage._verifyPublisherSchema()
   at Microsoft.XLANGs.Core.XMessage.FetchProperties()
   at Microsoft.BizTalk.XLANGs.BTXEngine.BTXPortBase.ReceiveMessage (Int32 iOperation, Envelope env, XLANGMessage msg, Correlation[] initCorrelations, Context cxt, Segment s)
   at Bulloch.ProcessTrx.segment1(StopConditions stopOn)
   at Microsoft.XLANGs.Core.SegmentScheduler.RunASegment (Segment s, StopConditions stopCond, Exception& exp)

My first thought was (due to the FileLoadException) was that an assembly couldn't be found and gave myself a crash course in debugging .NET assembly loading (the Fusion Log viewer is very useful. See a good explanation here).  Sadly, this did not help. 

After fearing a breaking change in the BizTalk engine (I was using the R2 Beta), I started again from first principles, first trying to trace the exception stack using Lutz Roeder's .NET Reflector.  This triggered the first critical link: the orchestration is failing on the Receive shape, confirmed by the stack trace referring to the method ReceiveMessage() in the XLANG/s engine.  I knew the subscription was fine, as it triggered the orchestration, but it seemed to have difficulty loading the message instance itself.  The message body looked fine and so I started to look at the message context.  Looking at the property SchemaStrongName, I looked at the description:

"SchemaStrongName" is not a promoted property.  Such Properties can be used for message tracking and can be referenced by components (e.g. from Orchestration), but they are not used for routing.

Working on this lead, I looked at the strong name of the schema that was deployed in the Schema node of the BizTalk application.  Sure enough, it didn't match.  Consequently, the orchestration subscription kicked off a new orchestration instance, but when the engine tried to load the message instance by type name (ie its strong name) it failed.

First of all, I had been using a custom file disassembler to build the original message and in hindsight, this should have been one of the first places I looked.  In the custom pipeline component, I was manually setting the value of SchemaStrongName.  The assembly's strong name changed when I built the new project because I started to use a new strong name key, thus changing the PublicKeyToken part of the strong name.

Second of all, and perhaps rather mysterious, is that the original code (which had been functioning in BizTalk 2004) used a different format for the SchemaStrongName string.  Strong names for schemas should be in this format:
Fully.Qualified.SchemaName, Fully.Qualified.AssemblyName, Version=x.x.x.x, Culture=neutral, PublicKeyToken=XXXXXXXXXXXXXXXXXX
whereas the original code simply used the format
Fully.Qualified.AssemblyName, Version= x.x.x.x, Culture=neutral, PublicKeyToken=XXXXXXXXXXXXXXXXXX

Beats me as to why it worked in BTS 2004, but the good news is I found the solution.

The Solution

If using custom file disassemblers where you manually assign the SchemaStrongName property, ensure it always matches the complete schema strong name of the deployed schema as shown in the BizTalk Administration Console, otherwise you will get an XLANGs error indicating a FileLoadException.

Wednesday, November 22, 2006

Pro BizTalk 2006

Having recently finished George Dunphy's book Pro BizTalk 2006 I thought it was worth writing a review for it on the Chapters/Indigo site, especially since no one has yet reviewed it! As of this writing, the review has not been posted, so here is the body of it below.

[Edit Nov 23 5:50pm] The review has now been posted! Except they stripped all formatting for some reason...

Link to book on Chapters/Indigo Website:
http://www.chapters.indigo.ca/books/item/books-978159059699/0/Pro+Biztalk+2006

***** (Five Stars)


This book is a great resource for the intermediate to advanced BizTalk user. While the Microsoft team has done a commendable job of refining the documentation for BizTalk Server (compared to 2004), there continues to be many voids with respect to best practices and practical guidance around the tool in large enterprise-class deployments.

While the primary audience of this book is certainly the BizTalk developer, there is much to be gained for the solution architect and technology director. In particular, there is a good breakdown of when to use each of the features included in BizTalk Server 2006 – often decisions about what feature to use and when are misinformed or happen late in the game. There is also a great discussion on what it takes to realistically implement a BizTalk solution (time and resources required) as well as how to setup a robust development environment. The core of the book does however demand a familiarity with the documentation shipped with the product. A new developer would be lost quite quickly, though I would encourage him or her to read this book after gaining some general knowledge and experience.

Included in the authors' thorough descriptions of how to implement advanced integration concepts are many detailed examples and real-world code samples. The authors provide a frank analysis of the toolset, highlighting both its strengths and weaknesses with a view to pragmatism; if something cannot be done or is unsupported in BizTalk, the authors provide guidance as to how best to solve the problem. Further, if there are multiple ways of achieving the same thing, the costs and benefits of differing approaches are provided ( i.e. pipelines versus orchestration).

In many of the discussions in Pro BizTalk 2006, for better or worse, the authors point out the differences between versions 2004 and 2006. While this is very useful for the developer with considerable experience in BizTalk 2004, it may be meaningless or confusing to those who are being initiated with version 2006. Though the book was written for readers with experience (read experience with BizTalk 2004) this point is not moot as developers without that context will still (and should) undoubtedly buy this book. For those like myself that are upgrading their skills from 2004, this book will no doubt give the reader many moments of "If only I had that feature!" and may even spur thoughts on how to re-architect their existing 2004 solutions!

Some of the most valuable sections for myself included the following: a thorough description of the new performance characteristics and configuration variables; complete sample code for creating several reusable pipeline components ( i.e. zip compression, PGP encryption); many examples of implementing messaging patterns in BizTalk; and solid details on monitoring the application using WMI events and tools like Microsoft Operations Manager.

While the book does go into detail on the new install/deploy features of BTS2006 (such as MSI files, btstask.exe) I would like to have seen some discussion on new tools like MSBuild, how to implement continuous integration scenarios, or the automation of deployment to one or more environments. There is also little discussion on the advanced aspects of Business Activity Monitoring, a feature which I believe is greatly underused and not accounted for in the design process early enough.

No matter what the reader's role in integration projects, whether he or she is simply migrating from 2004 or building a new integration practice around BizTalk Server 2006, this book is a must-have. Every BizTalk developer will learn something from this book and should read it, especially in light of the scarcity of good literature on this now mature, yet occasionally overwhelming, product.

Wednesday, October 04, 2006

Cool things in Visio 2007

Visio 2007 will obviously host many new features including new stencils, shapes, an improved "auto-connect" system. What is most intriguing is the focus on connecting a diagram (particularly Business Process Diagram)

By defining a data connection to a diagram and respective shapes, you can pull visual information about the analysis for a business process. So if you model a BP in visio, and then collect information about that BP in, say, Excel or Access, you can connect the two. Say for each BP step you have collected metrics on cost, average duration, total resources required etc, once connected you can have visual representations of each of those metrics tied to each process shape and thus have a bird's eye view of the BP, quickly identifying the targets of improvement.

They introduce the notion of a Pivot Diagram too which looks like it could be a replacement of Pivot Tables (for some applications). Taking your data-linked business process shapes, you can drill down into those same metrics using the familiar concepts of dimensions and data items. Very appealing to a potential customer.

Finally, using a partner tool, they demonstrated how you can tie Visio into BizTalk in both directions. The analyst develops the BP model in visio, exports it to a BizTalk orchestration (using XLANGs) at which point both developer and analyst can collaborate on essentially the same artifact. Changes to the process diagram, once exported, are reflected in the BTS Orchestration. Though they did not have time to demonstrate this piece, once deployed and BAM is in place, those metrics defined in BAM are then brought back into the BP model to update the metrics displayed there. Very slick. I wouldn't be surprised if this partner tool is purchased by Microsoft or otherwise bundled into post 2007 releases.

Wednesday, September 27, 2006

Microsoft SOA And Business Process Conference

I will be attending a conference on SOA and BP hosted by the BizTalk Server group at Microsoft. My first conference! My first visit to Seattle! It will be great fun and very interesting. I will try to post a few times while I'm there.

Microsoft SOA & Business Process Conference

Tuesday, October 3-6, 2006

www.impactevents.com/biztalkconference

Thursday, October 06, 2005

My Favourites

First things first. Here's a list of resources I have used in the past that would likely be of use to anyone working with BizTalk Server 2004. I will add to this at times and make it sticky.

Blogs

Scott Woodgate's Business Process, Integrtion and Workflow OutBursts *
BizTalk 101 - Back to Basics (Alan Smith)
BizTalk ChalkTalk (Luke Nyswonger)
BizTalkers (Tareq Muhammad)
Jan Tielens' Bloggings [MVP]
Kevin B Smith's WebLog *
Trace of Thought (Scott Colestock) *
BizTalk 2004 Woes (Shane James)
BizTalk Server Performance *
BPID Customer Response Team's Blog
Ben Cops
Hugo Rodger-Brown

Tools

Deployment Framework (Scott Colestock) *
BizTalk 2004 Management Tool
Test Framework for Rapid Test Case Development
BizTalk 2D Viewer (GotDotNet)
BizTalkAutoDeploy (GotDotNet)
BizTalk Assembly Replication and Viewer
UK SDC BizTalk 2004 Documenter

Concepts

The Quickstart Guide to Learning BizTalk Server 2004 *
Troubleshooting Common Problems in a BizTalk Server 2004 Platform Installation
A Basic Introduction to Messaging with Microsoft BizTalk Server 2004
Operational Requirements - the less exciting stuff...
BizTalk Server - Modular Deployment


Particulars

The Bloggers Guide to BizTalk
Building A Custom Disassembling Pipeline Component
How to debug a BizTalk 2004 pipeline: tips and tricks
Large messages in BizTalk 2004
Debatching Options and Performance Considerations in BizTalk 2004

Community

BTUG.biz - BizTalk User Group

* Highly recommended