This post is for those of you who are administrators rather then developers, and don’t keep track of the latest downloads around BizTalk. Microsoft has, at the same time that they released a revised version of the developer centric tutorials, released BizTalk Server 2006 Adminstration Tutorials. The administration tutorials are planned to become two, although at the moment only one is available. The first part is setting up the environment, in this case a slightly altered version of what is available in the multi-server scenario of the installation guides adding on an ISA Server to be able to create the environment separate from your corporate network. The tutorials also describes how to setup this environment using Virtual Server 2005 R2 (although physical hardware is also mentioned) and goes much more in depth to make it a compelling learning experience, as opposed to the install guide that can sometimes be hard to follow for a first timer. The first tutorial weighs in at 138 pages (double the size of the install guide), not counting the supporting documents. The second part is supposed to feature common administrative exercises based on the environment setup in part 1. If your are to familiarize youself with BizTalk Server 2006 as an administrator, from what I’ve seen, I’d recommend these tutorials.
Category: Configuration
WCF issue after installing updates
After installing updates this past night our webservers began exhibiting odd behaviour. All our Windows Communication Foundation (WCF) services began returning 405 Method Not Allowed. I’m not sure which patch was responsible for causing this, but I strongly dislike it when applying updates change my configuration. When I tried to access the svc file directly from a browser I got a 404. This led me to check the .svc mapping. Don’t ask me why, but as it turns out this mapping had been removed. Adding it back solved the problem. I haven’t tracked it down, and I don’t think I will, but the culprit is most likely part of either Microsoft .NET Framework 2.0 Service Pack 1 (KB110806) or Microsoft .NET Framework 3.0 Service Pack 1 (KB929300). The other updates installed can almost certainly be disregarded.
Linklist: BizTalk 64-bit
I’ve read a few links lately that has to do with issues or gotchas around BizTalk and 64-bit computing. I decided to publish the list to make it more easily available for myself, and others.
BizTalk Server 64-bit Support – Frequently asked questions about 64-bit support in BizTalk. Like which plattforms are supported, that the cost is the same for 64-bit as 32-bit and how parts of BizTalk, like adapters but also the client tools, handles themselves under 64-bit.
Summary of operating systems and SQL Server versions supported by different versions of BizTalk Server – a title that says it all.
Using the Explorer Object Model from Managed Code – Contains a note that the object explorer model (Microsoft.BizTalk.ExplorerOM.dll) should not be used in a 64-bit process.
Customizing the BAM Portal Configuration – Although not the main purpost of the article this talks about how you need to configure IIS to be able to run the BAM Portal, by setting IIS to 32-bit mode.
BizTalk Server 2006 Redistributable CAB files – links to the different types of pre-requisite CAB files, different 64-bit versions and Vista included. English version of Windows 2003 Server 64-bit is here.
BizTalk 64-bit high cpu utilization issue – a blogpost that discusses a potential problem with BizTalk and 64-bit computing, it also links to the KB for fixing the issue. Apparently this bug can cause other types of issues as well.
BizTalk 32-bit with SQL 64-bit – a MSDN forums post discussing a hybrid installation, on separate boxes.
Running 32-bit processes on a 64-bit BizTalk machine – blog post that elaborates a bit about how you go about running BizTalk host instances as 32-bit even if you are running a 64-bit install.
How to configure the MIME/SMIME Decoder Pipeline Component – tells us that the MIME/SMIME and with it the POP3 Adapter cannot run in native 64-bit.
BizTalk Adapter for Enterprise Applications, the Oracle Adapter – Blogpost on how to get the Oracle adapter working in a 64-bit environment. The post adds a bit of sugar over the KB which is here.
How to Deploy a custom adapter – The article mentions the fact that there are different registry hives for 32-bit as opposed to 64-bit processes in a 64-bit plattform. This is something you have to take into account when deploying your own adapters, and other registry settings for that matter.
How to add 64-bit artifacts to an Application – this short article mentions some problems you might encounter with added 64-bit artifacts.
Installing the client-based WebSphere MQ adapter on 64-bit – discusses the support for WebSphere MQ on 64-bit BizTalk plattforms.
I’ll settle for these links for now, but I’ll probably keep adding as I find more 64-bit links relating to BizTalk that interests me.
Delivery Notifications outside Orchestrations – a pure Messaging approach
Scenario
You have a pure messaging solution (no orchestrations) and you wan’t to be able to keep track of messages delivered to their destination by send ports and adapters for internal logging purposes. That is, you want delivery notifications, or acknowledgements, that a message has been successfully delivered to it’s configured location by your send port adapter.
Background
Kevin B Smith (old Microsoft blog here) explains the concepts and functionality of Acknowledgements (ACK) and Negative Acknowledgements (NACK) in this post and Stephen W Thomas has a sample based on that explanation for download here. But both of those deals mainly with doing this from an orchestration. But how do you enable delivery notifications with messaging only and how do you handle the acknowledgement (or for that matter negative acknowledgements) returned?
Solution
It’s really quite simple. Kevin talks about how the system context property AckRequired is set to true. That’s what need to happen, for example in a custom pipeline component.
// Abbreviated version of a Custom Pipeline Components Excute method
public IBaseMessage Execute(IPipelineContext pContext, IBaseMessage pInMsg)
{
pInMsg.Context.Promote(“AckRequired”,
“http://schemas.microsoft.com/BizTalk/2003/system-properties”
true);
}
This will cause BizTalk to generate ACK and NACK messages when the adapter reports a message as succesfully delivered (or in the case of a NACK, when the adapter has failed and a message will be suspended). These messages are special and will only be published to the MsgBox if there is someone subscribing to them.
So you need a port, in the screenshot below a direct bound receive port in an orchestration, that filter on acknowledgement messages (in this case on BTS.AckType == “ACK”)
and something that you can use to correlate back to the message that was sent message. Me, in my internal logging solution, use a combination of BTS.InterchangeID and BTS.AckSendPortID. It might not work in all scenarios, but it does where I am using it. There are other properties you can use like BTS.AckID (that maps back to the original messages MessageID) or BTS.ReceivePortName (that maps back to the original receive port). To see a complete list of Message Context Properties available for ACK and NACK messages follow this link.
Limitations and possibilties
In this scenario receive ports are One-Way, and the goal is to keep track of the delivery of messages received by BizTalk to their subscribers internally within the BizTalk solution. There is however nothing that stops you from having a send port that filters on, for example, BTS.AckReceivePortName to route acknowledgements back to the original sender, in a pure messaging way, instead of an orchestration. And since BizTalk is publish-subscribe based, you can do this at the same time that you take the orchestration approach, if you so wish.
If there is a demand, I’ll package a sample, but the meat of the solution is above – the rest is just plumbing.
I’ve got 4GB, or do I?
When installing Windows Vista SP1 for your 32-bit operating system you may be fooled into believing that you do in fact have more than 3GB of memory and that the operating system is taking advantage of that. In pre SP1 installs only 3GB will be detected and reported. After installing SP1, since I have a compatible BIOS, Vista recognizes the fact that I have 4GB of memory installed on my motherboard. However, as far as I understand, it won’t actually use it. Here’s a quote from the Notable Changes in Vista SP1 document:
With SP1, Windows Vista will report the amount of system memory installed rather than report the amount of system memory available to the OS. Therefore 32-bit systems equipped with 4GB of RAM will report all 4GB in many places throughout the OS, such as the System Control Panel. However, this behavior is dependent on having a compatible BIOS, so not all users may notice this change.
And here is a more detailed explanation as to why there is a 3GB limit in 32-bit operating systems, regardless of it being Vista SP1 or anything else.
Although my computer is what passes for a high performance model it came pre-installed with a 32-bit operating system. Since the processor it features is an Intel Core 2 Duo processor, that’s 64-bit capable, I’m considering re-installing. I just have to read up on the impact of having a 64-bit operating system, how it impacts my applications, battery lifetime etc. Anyone want to share their experiences running 64-bit compared to 32-bit or have a link to some good up to date resource that talks about it?