Only three properties in a Correlation Type – or what is the deal?

by eliasen 4. juli 2010 13:29

Hi all

If you read the documentation for Correlation Sets (here), you will see that it clearly states that:

“Each correlation set supports a maximum of three parameters.”

Now, the documentation for BizTalk 2010 is still subject to change, but you will find the same text in the documentation for previous versions.

The funny part is, that inside the Orchestration View, you are allowed to add as many properties to your Correlation Type as you please:

image

You will get no compiler error, as I would have expected, and no compiler warning, either.

I implemented a small orchestration that uses the Correlation Type seen above and it looks like this:

image

Basically, a message in, a transformation, an output and then a response back in. The “msg_FirstOut” initializes the correlation set and the “msg_SecondIn” follows it.

As mentioned, the compiler will not complain at all and I can deploy the solution. Once I send a message through, an instance subscription is created once the send shape has finished, and this surprisingly looks like this:

image

As you can see, ALL five properties are used in the instance subscription, which in effect means that the documentation is wrong.

So this brings me to the point; The documentation states, that you can only have three parameters (not sure why they call them parameters) in a Correlation Set, but this actually ONLY applies to Correlation Sets used in Convoys.

If I change my solution to utilize a parallel convoy like this:

image

or to be a sequential convoy like this:

image

then I still get no compiler warning or error no matter how many properties I have in my Correlation Type, but if I deploy the solution and try to start the orchestration, I get this error message:

image

“The maximum number of convoy set properties has been exceeded. A convoy set can only contain up to 3 properties.”

Now, you may very well ask, what is a convoy set? And yes, it is a bit confusing that the error message uses a term that is actually internal to BizTalk and not something your average BizTalk developer cares about. But a convoy set is simply a correlation set that is used in a convoy.

So this means, that for correlation sets that are used for convoys you can only have three properties, which actually comes from the fact that the table “ConvoySets” in the MessageBox database has three columns called “uidPropertyID1”, “uidPropertyID2”, and “uidPropertyID3” which contain GUIDs that are the GUIDs of the properties in the correlation set. So since only three fields exist in the database, only three properties can be in a convoy set.

So to me, it would nice if:

  1. The documentation was clear about the fact that the limitation only applies to correlation sets used in convoys
  2. The compiler would provide an error if you use more than three properties in a correlation set used in a convoy so you don’t ahve to wait until starting the orchestration to find that out.

Happy correlating and convoying out there!

You can find my sample code here: ThreePropertiesInCorrelationSet.zip

--
eliasen

Tags:

Add comment

  Country flag

biuquote
  • Comment
  • Preview
Loading

About the author

Jan Eliasen is 37 years old, divorced and has 2 sons, Andreas (July 2004) and Emil (July 2006).

Jan has a masters degree in computer science and is currently employed at Logica Denmark as an IT architect.

Jan is a 6 times Microsoft MVP in BizTalk Server (not currently an MVP) and proud co-author of the BizTalk 2010 Unleashed book.

BizTalk Server 2010 Unleashed


Buy from Amazon

Microsoft MVP


6 times: July 2004, July 2008, July 2009, July 2010, July 2011, and July 2012. Not currently an MVP.

MCTS

Image to show

Month List

Page List