So BizTalk 2009 CTP was released, and yet another version of BizTalk without the Solution Designer. NOT saying that this tool is anything like it, -but it's addressing the same issue of getting a graphical overview of port- and orchestration subscriptions of your BizTalk implementation.
It's important to understand (and maybe needless to say) that it's impossible to get a totally accurate view of all subscriptions. This doesn't necessarily mean that the tool isn't useful, but you need to be aware of it's limitations.
This tool only identifies subscriptions of the following types:
BTS.ReceivePortName
If you've set up the send port filter to subscribe to messages from a specific port, the tool will evaluate the BTS.ReceivePortName property and find its correlating port.
BTS.MessageType
This one is a bit more tricky, since the Message Type can be hidden in many places. The tool will try to retrieve the Message Type from the receive port in the following order:
- Mappings – If the receive port has a mapping, its Destination Schemas will be added to the list of Message Types of that port
- Runtime configured pipelines – If you have configured a pipeline at runtime (BizTalk Admin Console), its configuration is stored in the management database. Any Message Type in this configuration will be added to the list of Message Types of the port.
- Design time configured pipelines – If the pipeline has not been configured at runtime, it's configuration is only stored in the assembly, and it's retrieved through .Net Reflection.
- If the Message Type is not found in any of the above, the tool will query the tracking database (DTA) for any Message Types that has been used for that receive port.
Promoted Properties (Content based routing)
If the send port filter is neither the BTS.ReceivePortName or the BTS.MessageType, the tool will treat it as a promoted property, and evaluate the filter expression as if the filter was set to any of schemas associated with that promoted property.
For example, imagine there is a property schema with a CUSTOMERTYPE property, and there is an Order schema with a field promoted to the CUSTOMERTYPE property. Now, if there is send port with a filter that states CUSTOMERTYPE == "VIP", the tool will search for any schema associated the property schema, and in this case find the Order schema. The tool will then treat this filter as if it said BTS.MessageType == [namespace].Order#[Root] (the Order schema).
Orchestration Bindings
If a selected receive port is bound to an orchestration, the tool will present all send ports associated with the same orchestration. The tool will not evaluate the timeline within the orchestration. For example: Say we have an orchestration with four logical ports; ReceiveOrder, SendOrderForValidation, ReceiveOrderFromValidation and SendOrderToSAP. Selecting any of the receive ports will give you the same result (SendOrderForValidation and SendOrderToSAP). The same goes for selecting a send port, where both receive ports would be shown.
All Blogical tools that has been published on this site and CodePlex, has originally been developed for some customer. However, this one has not. It's just a pet project I've been working on to get a feeling for Entity Framework and WPF. It is not in finished state by any means. You are free to download it and try it. If you do, – Please give me feedback.
Download (I'll post the source code in a couple of weeks…)
Microsoft .NET Framework 3.5 Service Pack 1 (if you haven't got it installed)
Enjoy…