Tuesday, April 21, 2009

New BizTalk HotRod: Issue 6 Q2 2009

The latest edition of the BizTalk HotRod can be downloaded here. In this edition you can find some good info on BRE, AS2, XSLT Mapping, Static code analysis using BizTalkCop and a preview into what looks to be an interesting Admin tool called "Terminator".

Sunday, April 19, 2009

BizTalk Server 2009 Hyper-V Guide

Microsoft has recently posted the BizTalk Server 2009 Hyper-V Guide. You can find it here.

Here is a short description of Guide:

"The purpose of this guide is to provide practical guidance for using Microsoft BizTalk Server 2009 with Microsoft Windows Server 2008 Hyper-V. The emphasis is on BizTalk Server, but the performance evaluation methods and performance testing scenarios are useful for analyzing the performance of virtualized server applications in general. This guidance will be of interest to both the IT Pro and Developer communities."

Saturday, April 18, 2009

Clustering BizTalk Hosts

I went through this configuration a few years ago before I started blogging. Since I had to build a parallel environment recently, I have decided to post this information.

So why would I want to Cluster a BizTalk Host?
If your BizTalk group needs to be Highly Available, but you want to limit a Host to only have 1 Host instance. The reason that you may want to do this is to prevent message duplication. Message duplication may occur when you have *some* adapters running in multiple Host Instances. Adapters such as POP3, FTP, MSMQ/MSMQT and database adapters in polling scenarios.

For example, if you have two BizTalk servers and they both have a Host Instance on them called "FTP", both Host Instances will trigger a connection to this FTP server. If a file exists on the FTP server that matches your Receive Location's file mask, both of these host instances will attempt to retrieve a copy of this file. The reason for this is that the FTP protocol does not support file locking.

The solution to this problem is to cluster the "FTP" Host so that only one Host instance is capable of running at one time. Since the Host is clustered, it is capable of running on the servers that are configured in your cluster administration configuration. In this "Active/Passive" scenario, the Host instance does exist on the "Passive" node, it is just stopped. The core Windows 2003 Cluster functionality takes care of determining whether the Host Instance is online and if it is not, it will try to start it on another node.

So there is a little background on why you need to do this, I will now go through the process of setting this up inside of BizTalk.

The first thing that you need to do is create a BizTalk Host. You do this the same way you would create a Non-Clustered Host.
You then need to create a Host Instance on every node in your cluster. Otherwise you will get presented with the following error:
Once you have created all of the host instances, go into the "Hosts" menu, find the Host that you want to cluster, right mouse click and select "Cluster".

You will then be prompted to provide the Clustered Resource Group that you want this Host to belong to. A resource group basically allows you to group services, or resources. You can then spread these Resource groups across multiple servers.

Once this is complete, you will see a new "Generic Service" added to the Clustered Resource group that was previously selected.

So what does this look like inside of the BizTalk Admin console? I have included a non-clustered host instance "ServiceProcess" just to illustrate that the icons are different. The next clue is that one "EnterpriseClusteredSQLReceive" Host instance has the caption of (Active) beside it. What this means is that this Host Instance is actively running on node "01A". It is not possible to try and start this host instance on multiple servers at the same time.

So in this post I have over simplified the Windows 2003/2008 clustering process. I have attacked it from the perspective that the OS level clustering has already been put into place. Don't under estimate the effort required to do this. To learn more about this process, check out the following link: Improving Fault Tolerance in BizTalk Server 2006 by Using a Windows Server Cluster.

Also note that BizTalk Host Instance clustering is only available in BizTalk 2006 onward.

Tuesday, April 7, 2009

Another BizTalk Resource: Microsoft BizTalk Server Developer Center

Just wanted to point out another good BizTalk resource: Microsoft BizTalk Server Developer Center. Here you will find an aggregation of popular BizTalk blogs, Web Casts, Quick Starts, Tutorials and much more. The product team is making a conscious effort to keep this site up to date with content, so you know that you will be able to find something of interest there.

Sunday, April 5, 2009

Azure Roadmap

I didn't have the opportunity to attend MIX, but have had a chance to catch some of the Azure Session re-broadcasts.

One session of particular interest was A Lap around Microsoft .NET Services by John Shewchuk. Part of his presentation included the updated Azure Road map. I felt that this bit of info was worth sharing.

As you can see the Microsoft team has come a long way in a short period of time. I find the next milestone to be very interesting: "Pricing & SLA Confirmation". Up until this time, every time that I have heard a question asked that involved either Pricing or SLA, it has been deflected. This is understandable as it is no doubt a complex situation.

Up until this point, it is very safe to say that people are impressed with the Cloud technology that has been presented. Pricing and SLA could very well make or break Azure. If the Pricing is too cost prohibitive then adoption will suffer, if the SLAs are not strong enough...adoption will suffer.

I am also interested in knowing whether the initial "Production" applications running on the platform will have to be "big" enough (read: Profitable) for Microsoft's initial adoption? Will smaller applications, that may not be as profitable for Microsoft, be included in the initial Production release of Azure? I guess time will tell.

Private Azure Clouds?

Lately there has been a lot of discussion on Microsoft's recent announcement to not provide the ability to host your own cloud in your data centre. For some additional background, please check out the following links:

During the PDC time frame(Fall 2008), I started to pay attention to the Azure platform and its offerings. Initially, I thought that this stuff was pretty cool and that it would be something that I would want to host in my enterprise. It wasn't until I started to better understand just what is involved in running a platform like this that my mind has since changed. At PDC, I attended a session called ".NET Services: Messaging Services - Protocols, Protection, and How We Scale" by Clemens Vasters. I believe that it was around this time that my opinion about hosting an on premise cloud started to change.

So I have put together a few reasons why I think it is a good idea to leave it to Microsoft to host the Azure platform.

Complexity - Part of the reason why I would be interested in a cloud offering to begin with is to let someone else take care of the hard part. Windows patching, upgrades and up time are all challenges of operating a highly available solution. If someone can provide me that, then I can focus on solving my core business problem.

Scale and Elasticity - The "pay as you go" model has many benefits, especially during the initial launch of your Cloud applications and services. If you were to build this on your own, how big, or small, do you make your cloud and how quickly can you allocate more resources to an application? Adding new processing capabilities on the Azure platform is as simple as "turning a dial". I suspect that this would be very problematic for many organizations to implement.

Cost - Perhaps if you had a stock pile of cash to build a larger than required data centre, you could. However, in this climate there are not a whole lot of companies that can do this. One company, with the capital to do so would be Microsoft. Generally, environments are planned based on expected requirements + x% for growth. How many companies would have the capital to invest in a platform that gives them the ability to scale out in the fashion that Azure allows you do.

Microsoft also has a Geo-Scale initiative where your applications/data may be stored in several different data centres around the world. The benefit of this is to take advantage of lower latency where you have customers accessing your application from all over the world. Also, avoiding natural disasters and widespread power outages are additional reasons to look for Geo-scale. It was only a few years ago where we had most of Eastern Canada and Eastern United States shut down do to a widespread power outages. Yes, UPS and generators will help, but many cannot withstand multi-day outages. Having Geo-Scale ensures of availability since regional events can be offset by data centres outside the affected areas.

Infancy - The Azure platform is still relatively immature. If Microsoft was about to "productize" this offering, I believe that it would slow down innovation. Microsoft would then have to worry about what other versions of the cloud a customer is running to ensure of backwards compatibility and interoperability. Note, I am looking at this from a platform perspective. I am not letting Microsoft off the hook for ensuring that their APIs/services still function for people who have written applications on top of them.

To look at the other side of the coin, I do feel that there are some valid use cases where someone would want to be able to host an Azure cloud platform:

ISV/ASP - Microsoft has generally worked well with ISV and ASPs in the past. I can see some ASP (Application Service Providers) looking to get on board the next wave of Microsoft Technology and start hosting these applications. For many ASPs, they have been hosting Web Applications for years. Evolving to the Azure platform is a natural progression. While I am sure there are many top notch providers out there, at the present time I am just not sure how many of them would be able to host a platform as big and complex as Azure.

Government - Many government departments, have privacy regulations, or laws, that prevent them from allowing their data to exist in 3rd party data centres. Other constraints may include hosting data in foreign countries. For instance data stored in the United States may be subject to the Patriot act. If your company is outside the United States, you may not want your data subject to the Patriot act. These types of constraints, do make hosting the Azure cloud on premise to be very appealing. You get to leverage the "building blocks" that Microsoft has provided in Azure, yet have total control within your environment.

Conclusion - For me, in my current situation, the Microsoft hosted Azure Platform is more advantageous. If I have requirements to expose, or exchange, data with people outside of my organization, I would prefer to let Microsoft handle the infrastructure related challenges that allow me to focus on solving my business requirements.

BizTalk 2009 - Failed to configure EDI/AS2 Status Reporting functionalities.

In a previous post, I mentioned that BizTalk 2009 has gone RTM. On one of my dev boxes, I have been running the 2009 Beta. I wanted to run the new bits on this same machine. Trying to do an in place upgrade on Beta versions is often discouraged as it can yield unpredicatable results. With this in mind, I decided to un-install the Beta. The un-installation went well and then I knew that I would have to blow away the related BizTalk Database MDF and LDF files. I went ahead and did this prior to configuring the new RTM bits.

Everything went smoothly with configuration except for the configuration of the EDI/AS2 runtime. I ran into this error:

Failed to configure EDI/AS2 Status Reporting functionalities.

Failed to deploy BAM activity definitions. Please make sure that all BAM related Data Transformation Services (DTS) packages are removed along with the BAM databases.

Having not had a lot of exposure to the EDI/AS2 world this error message was rather foreign to me.

Like many solutions, I found what I was looking for with a google search. This seems to be a problem that many people have encountered with BizTalk 2006 R2 as there is a KB article.

I decided to take the "Method 2" route(from MSDN):

Method 2: Use the Bm.exe utility to remove the DTS packages

To resolve this problem, use the Bm.exe utility to remove the DTS packages. To do this, follow these steps:

1. Click Start, click Run, type cmd, and then click OK.

2. Use the CD command to locate the folder where the Bm.exe file is located.Note By default, the Bm.exe file is located in the following folder:
Microsoft BizTalk Server 2006\Tracking

3. At the command prompt, type the following command, and then press ENTER:
Bm.exe remove-all -DefinitionFile:folder\AS2ReportingActivityDefs.xmlNote The folder placeholder is the folder where BizTalk Server 2006 R2 is installed.If you receive an error message that an activity could not be removed, go to step 4.

4. At the command prompt, type the following command, and then press ENTER:
Bm.exe remove-all -DefinitionFile:folder\EdiReportingActivityDefs.xmlNote The folder placeholder represents the folder where BizTalk Server 2006 R2 is installed.If you receive an error message that an activity could not be removed, go to step 5.

5. At the command prompt, type the following command, and then press ENTER:
Bm.exe remove-all -DefinitionFile:folder\EdiReportingActivityIndexes.xmlNote The folder placeholder represents the folder where BizTalk Server 2006 R2 is installed.If you receive an error message that an activity could not be removed, go to step 6.

6. Try to configure the BizTalk Server EDI/AS2 Runtime feature again.

Once I had completed these steps, I was able to finish the EDI/AS2 configuration.

Saturday, April 4, 2009

BizTalk 2009 RTM!

While browsing the Microsoft Volume Licensing catalogue I noticed the following:

The links work and I was able to download software for my organization. So how does a person access the links? Well if you have purchased BizTalk licenses in the past and have also bought Software Assurance (SA) then you should be entitled to download and use this software. I would check with your Microsoft Sales rep if you are unsure.

I also decided to check MSDN and it looks like the RTM bits have been posted there as well.