Biztalk Server 2006 introduces many exciting new features like Recoverable Message Processing and Suspended Message Routing. With great new features like these, sometimes the map and schema editor improvements can get overlooked.

Anyone that has worked with Biztalk 2004 maps has probably seen this message pop up: “The map contains invalid links. Please validate the contents of your map. Saving the map file will delete all references to the invalid links.” This is caused when the map references a schema that has changed and the changed fields are used inside the map.

Since I have never been on a project that has successfully locked down the schemas after they were created, this message is something I have seen quite frequently. In case you are lucky and haven’t seen this message before it looks like this:

Biztalk Server 2004 Map Error

In the past, these types of errors could be hard to track down. If another developer made changes to the schema, the person working on the map may have to review the map field by field to track down the exact problem. In the worse case scenario, a link could be broken and never fixed.

In Biztalk Server 2006, we now get this message:

Biztalk Server 2006 Map Error

This messages shows in great detail what links have been broken by the schema changes.

Since I have done my fair share of mapping in the past, I differently consider this one of the greatest enhancements to developer productivity in Biztalk 2006. Now, if they could only make those property picker windows bigger…

While I’m on the developer productivity kick, another great enhancement is to right click on a host instance and select “Restart”. Sure bests having to Stop, Wait, and Start again…

We also have a few new functoids available. These include IsNil (Logical), Nil Value (Advanced) and Assert (Advanced).

The IsNil functoid takes in one parameter and returns true if the input is set to Nil.

The Nil Value functoid sets the destination node to Nil.

The Assert functoid takes in 3 parameters. 1: expression to evaluate or result from logical functoid, 2: text to throw in the exception if 1 is false, 3: text to pass forward if 1 is true. As expected, this only works for assemblies built in Development mode.