Complimentary Infosys BizTalk, VSTS and .NET 2.0 Resources

Infosys have just published a number of books and whitepapers which cover the key features in BizTalk 2006, VSTS and .NET 2.0 on their website. Complimentary copies of the books are available, the whitepapers are free downloads (PDF).

Of particular interest are:

  • BizTalk Server 2006 (book), which ‘provides a critical evaluation of the new features of BizTalk Server 2006, its new capabilities and the processing engine improvements made in it’; and
  • BizTalk Server 2006 with Sql Server 2005 Takes Performance to a New High (whitepaper), which ‘presents the results of tests conducted to compare the performance levels of BizTalk Server 2006 on a non-enterprise hardware configuration and a modest load with those of its predecessor – BizTalk Server 2004.

Both can be found in the Technology Showcase section of the Infosys Resource Centre.

Windows 2003 SP2 & XmlLite

Update (19/03/2007): The April 2007 edition of the MSDN Magazine has an excellent article on XmlLite – XmlLite: A Small And Fast XML Parser For Native C++

Windows 2003 SP2

As reported on Slashdot and elsewhere, Microsoft has just released Windows 2003 SP2 – further details and the necessary download can be found here (for x86 systems) and a list of ‘whats new’ is available here. They’ve also released something I’ve not seen before with the ‘Hotfix Scan Tool‘ which will ‘scan for hotfixes that will potentially regress after you install Microsoft Windows Server 2003 Service Pack 2 (SP2)‘ – do MS expect there to be problems*?

A New Xml Parser: XmlLite

Included in this service pack is a new Xml parser, XmlLite. XmlLite is a new, native (read C++), lightweight parser, designed for speed rather than complexity. It lives in its own DLL and doesn’t use or link to MSXML; as a result it’s extremely small (~150Kb) with no dependencies.

XmlLite is a non-caching, forward-only, pull parser. It’s meant to be a small, simple, secure, standards-compliant and fast library to read and write Xml. It’s a “lite” version, so: no validation, very limited DTD processing (entity expansion and defaults for attributes only), no ActiveX, no scripting languages, not thread-safe etc. Further details can be found here.

From what I can gather reading the various docs, it was produced to fill the gap between MSXML and the managed System.Xml – architects and developers had requested a deployment scenario that did not require the .NET Framework and did not want to be burdened with the overhead of MSXML.

Full details of the new parser can be found on MSDN.

* The Hotfix Scan Tool also has KB article 931940 attached to it which provides instructions on how to find updated packages for the hotfixes that are identified by the Hotfix Scan Tool; at the time of writing, the KB article cannot be found on the MS website.

Custom Disassembler Component – Remember the Context Properties!

This is really a post to remind myself not to be quite so stupid in future….

I’ve been developing a custom pipeline disassembling component over the last few days to take a single purchase order from a customer and split into multiple orders based on (potentially) multiple delivery addresses. The component worked well through the Pipeline.exe tool but on testing using messaging (Send Port subscribing to messages from a Receive Port configured with the new component) I kept receiving:

The "FILE" adapter is suspending a message coming from Source URL:"D:BizTalk MessagesInboundSales OrdersBAA Sales OrdersOrder Splitter Test Input*.xml". Details:"Could not find a matching subscription for the message. ".

In my wisdom, I’d managed to forget that BizTalk is based on a pub/sub model – if I don’t copy the input message properties onto the resultant output messages and promote the message type, the Send Port might struggle to subscribe…..

So, note to self – copy context properties:

// Iterate through inbound message context properties and add to the new outbound message
for (int i = 0; i < pInMsg.Context.CountProperties; i++)
{
string Name, Namespace;
object PropertyValue = pInMsg.Context.ReadAt(i, out Name, out Namespace);


// If the property has been promoted, respect the settings
if (pInMsg.Context.IsPromoted(Name, Namespace))
outMsg.Context.Promote(Name, Namespace, PropertyValue);
else
outMsg.Context.Write(Name, Namespace, PropertyValue);
}

and promote the message type:

// Promote the MessageType property to ensure subscription by orchestrations
string systemPropertiesNamespace = "http://schemas.microsoft.com/BizTalk/2003/system-properties";
string messageType = "http://www.covast.com/schemas/EDI/Accelerator2004#EDIFACT_ORDERS_D_98A_DEFAULT_UN";
outMsg.Context.Promote("MessageType", systemPropertiesNamespace, messageType);

Doh!

Covast EDI Accelerator – No Authorization for Document Type

Earlier this morning, we received the following error from our production Covast EDI Accelerator implementation:

Error encountered: ERROR (13), interchangenr 61059 :
No authorization exists for this document type. Check the port properties.
sender: [Senders Trading Partner Name][DEFAULT], recipient: [Recipients Trading Partner Name][DEFAULT], source format: [3 2 1 ], source document: [Purchase order message]

We were thrown by the fact that the trading partner in question successfully sends several batches of orders per day (for the last several months) without issue – why were we encountering this problem today?

It turns out that the interchange batch in question was sent with an incorrect syntax identifier and version of UNOA2:

UNB+UNOA:2+5013546126405::P2P+5019632000011+070308:0905+00078400++ORDERS'

we were expecting an identifier of UNOA1.

Syntax identifier settings can be found in the receive port configuration dialog for the EDI Accelerator under the ‘Supported Document Types for EDIFACT/X12’ as shown below:

Covast EDI Accelerator Receive Location Configuration
Only messages with an syntax identifier that is the same as that defined in the receive location settings can be accepted [by that receive location] – you will need to advise your trading partner of the error and ask them to resubmit, modify the file yourself and resubmit or add another receive location with the alternative identifier.

At the Coalface – A Theme Update

I think I must be having a WordPress day…

Following on from the upgrade to 2.1.2 earlier this morning (and a successful technical interview for a BizTalk job in London!) I’ve also upgraded the my theme to better use the post column for images.

This new theme is based on ‘Origami’ developed by Leevi Graham and Tim Heuer with a few of the bells and whistles removed that I didn’t want.

There are a few teething troubles (like random links that don’t want to obey the styling – as you can see above), but I’m pleased about the overall result.

WordPress Upgrade to 2.1.2

As reported on Slashdot and on the WordPress.org blog, the 2.1.1 release of the WordPress blogging system was hacked sometime towards the end of February/beginning of March.

The hacker gained user-level access to one of the servers that powers wordpress.org, and modified two files to include code that would allow for remote PHP execution. Although details are sketchy, the WordPress blog details problems with the wp-includes folder, especially the theme.php and feed.php files and any query string with “ix=” or “iz=” in it.

WordPress recommend upgrading to 2.1.2 immediately. The latest .zip and tarballs can be found here.

This issue comes at the same time as the PHP Security blog attempts to raise awareness of general PHP vulnerabilities. Not a great time for the PHP folks.