BizTalk 2010 Cookbook Released

I am very happy to announce that BizTalk 2010 Cookbook written by a great MVP Steef Jan is released.

He has done a marvelous job writing this book, the contents of the book can be viewed at Packt Website.

The book is mainly for Developers and Administrators who can gain their knowledge in Development, Maintaining, Monitoring & Deployment of BizTalk Solutions. The book has step by step implementations (recipe) of BizTalk Solutions which follows industry best practices & patterns.

I had the honor to be one of the official technical reviewer of the book along with Randal van Splunteren, Sandro Pereira & Rene Brauwers

I have enjoyed reviewing the book specially the recipes related to Monitoring and deployment, of which most of the developers and administrators are unaware.

Congratulations Steef, it has been an outstanding effort from you authoring the book so well.


Passed BizTalk 2010 Exam (70-595)

Yesterday I passed BizTalk 2010 Exam – 70-595 (TS: Developing Business Process and Integration Solutions by Using Microsoft BizTalk Server 2010) which was released on 30 March 2011. The questions were interesting and most of the questions were quite easy and I was able to answer them from my experience. Apart from my professional projects I have learnt a lot from participating in the MSDN forums that is why the exam questions were quite familiar.

Because I read the NDA I can’t tell the level of simplicity Smile Well I prepared a lot for EDI and RFID and I was a bit better than before. For the rest of the sections I didn’t had to prepare as I could answer them easily. In my opinion anyone working for 3+ years can pass the exam.

I have passed BizTalk 2006 and BizTalk 2006 R2 previously but they were retired on 30 June 2011.

MSDTC errors when BizTalk Cluster is destroyed

I was working on clustering BizTalk servers in UAT, the MSDTC service was clustered as resource, ENTSSO with BizTalk host instances. I had to later on to destroy the clusters and make a new cluster with different UAT machines. I had removed the resources (MSDTC, ENTSSO), deleted clustered host instances and then evicted the machines and then destroyed the cluster. I was sure everything is cleaned up. One more thing had to be done was to remove the DNS entry from the domain of the cluster.

After that I had to configure single server configuration on the destroyed cluster node. One of the Node had no issues and BizTalk was configured correctly on the other machine I was having MSDTC errors which are quite common and a lot of KB, blog posts and forum topics can be found.

First I tried to remove MSDTC by removing registry entries and then uninstalling and installing the MSDTC. By this I was able to see all the tabs instead of two in the Component Services console. Before I could see only two tabs but after deleting the keys and re-installing MSDTC I could see all the tabs (General, Options, Default Properties, Default protocols, COM Security, MSDTC). When component services management console is opened by the (dcomcnfg), I was getting the same errors by accessing the Default Protocols and MSDTC tab. Also noticed that My computer (icon was red). When I tried to open Default Properties tab I was getting the error below.

MSDTC Service
There are no more endpoints available from the endpoint mapper.

When I tried to open the MSDTC tab I got the error below and it was still showing MSDTC as a clustered resource.

Catalog Error
An error occurred while processing the last operation.

Error code 8004E00F – COM+ was unable to talk to the Microsoft Distributed Transaction Coordinator.

When I went to the server manager I wanted to remove the Failover Cluster Manager feature and I got the error below.

[Window Title]
Remove Features Wizard

[Main Instruction]
Cannot remove Failover Clustering

This server is an active node in a failover cluster.  Uninstalling the Failover Clustering feature on this node may impact the availability of clustered services and applications.  It is recommended that you first evict the server from cluster membership.  This can be done through the Failover Cluster Management snap-in by expanding the console tree under Nodes, selecting the node, clicking More Actions, and then clicking Evict.

It is evident that the eviction of the node, removal of the resources and destruction of the clustered was not done cleanly. I didn’t miss anything I guess as the other node was fine after removing the DNS entry from the domain. I found Symon Perriman’s post mentioning that all the nodes has to be online before evicting the nodes and destroying the cluster.

Well thanks to powershell we can force the node to be removed from the cluster. 

cluster.exe node –NodeName /force



MSDTC is healthy again and I am able to configure BizTalk on this node. Lesson learnt!


Orchestration not visible in BizTalk Application

I was working on the Dev-Lab02C in BTS2010Labs. I have been using WCF-SQL adapter since BTS 2006 R2, I don’t know the exact reason why I am doing this Lab but for the sake of completion and keep me self satisfied that I don’t miss anything in BTS 2010 before the exam. I want to go through all of the labs, tutorials, documentation and videos available (won’t do that practically) Smile.

Every BizTalk/.NET developer would be familiar with the Build Action property of each item in VS. With the BizTalk project the artifacts has two options BTSCompile and None (which are self explanatory). In order to use the WCF SQL adapter metadata has to be generated as I did for this lab.

I renamed the orchestration file and type as it was mentioned in the lab, I didn’t notice the Build Action property. I deployed the projects the orchestration was not appearing in the application. I deleted the application two times, verified the assembly was in the GAC, I checked the resources of the application it had the assembly as a resource so where was the orchestration?

I checked the type of the orchestration, Type modifier everything was fine. I saw the orchestration property it was set to Content. This is the first time I have seen this, I thought something new in BTS2010, I clicked the dropdown and there were only two “usual” options without Content. I tried to reproduce this again and again, now I regret that I would have taken a screenshot before changing it.

Well after changing it to BTSCompile I could see the orchestration in the application. Did anyone of you faced the same issue?

Using IIS Warm-Up module to Load SSO & Configuration data

When the host instances/IIS is restarted or the application pools are recycled all the pre-loading execution is done on the first hit due to which the first hit of the web service can be really slow. Already in the BizTalk environment if the Host Instances are restarted/IIS Reset the first service hit is very slow.

Now you can leverage with the capabilities of ISS Warm Up module to run a pre-loading script. You can put all the code which is required to run your services. The loading of the SSO & configuration data into Windows AppFabric Cache can be a good candidate to get the benefit from IIS Warm Up module.

Let’s see what it has to offer and how it works.


1- With the IIS Application Warm-Up module, initialization occurs before the IIS application pool informs the WAS that it is ready to receive requests from the network. This means that even when the first request comes in the Warm Up module would have started executing.

2- During application pool recycling, the worker process that is shutting down continues to process requests until the new worker process has finished the warm-up stage and reported to the WAS that it is ready to receive requests. The WAS then shuts down the old worker process.

Installing the IIS Warm Up module:

You can download the IIS Module from here. Download the package and run it. Open the IIS manager and in any of the site/applications feature tab you will be able to see the Application Warm-Up.



Create, deploy and configure the Warm Up application:

I had to call two functions that Load all the SSO data and the Configuration data from a Sharepoint List into WAF Cache. I created a new ASP.NET project (WarmUpApp) and add the reference to the assembly containing the preloading methods and called them in the Page_Load event.

Deployed the application to the site in which my other WCF/BizTalk Orchestrations exposes as WCF services are running. Since my site and all the applications running under it run under the same application pool I will have the application deployed in this site.

Next create the application in the IIS.


After deploying the application it should be configured to be called from the warm up module when the Application Pool recycles/IIS resets.

1- Go to the application and in the features tab double-click the Application Warm-Up module.

2- Right Click the page and click Add Request or in the actions tab click Add Request.

3- Add the application URL relative to the application root. The page is on the root of application “WarmUpApp” so I will give the page path “/WarmUp.aspx”. Leave the status codes and the Request context parameter as it is.


  • Status code(s). You can define status code(s) that you expect in the response. If the response is outside the defined range, the IIS Application Warm-Up module logs this in the Application Eventlog and continues with the next request.
  • Request context parameter. You can define a string that will be added to the request as server variable; this lets you check for this request variable in your application code, which in turn lets you distinguish requests that were sent from the Warm-Up module from regular requests.
  • Request send mode. You can send requests either synchronously or asynchronously. The Warm-Up module processes requests by first sending all asynchronous requests (using separate threads) and then sending synchronous requests. The Warm-Up module waits for the responses from each synchronous request before it sends the next request. The Warm-Up module then waits for responses from outstanding asynchronous requests before returning control to the server.

Next Right click the request and click settings or Click settings from the actions pane. Click on the checkboxes Enable Application Warm-Up and Start Application pool “X” when the service restarts options. You will be able to see the applications that are running under this application pool.


That’s what is needed to deploy & configure the module for IIS Warm-UP module. I have put some logging in the Event Log to see when I manually recycle the application pool or run the iisreset command the warm up module is executed successfully.


I restarted the cluster to empty the cache contents and after resetting run the Get-CacheStatistics command to see if the script populated the cache successfully.



How does it help in the BizTalk Middleware scenario?

The orchestrations in BizTalk which are exposed as a WCF Service and the WCF services will benefit from the IIS Warm-Up module. When the application pool recycles/ IIS Resets the IIS Warm-Up module will run my “Storing SSO & Configuration data into WAF Cache” module. As I have mentioned in my previous post that by using WAF Cache it has no effect of restarting the host instances or even resetting the IIS. When the Distributed cache service is restarted the cache is cleared during that the services will retrieve data from the sources and will be populating the cache. Thus, a performance hit. In that situation recycling the pool manually or if the recycling interval is about to elapse the warm-up module will re-populate the cache.

Restarting the cache cluster manually would be rare but the cache is based on TTL (Time To Live) and will be expired after some time. I would use the warm-up module to re-populate the cache after it is expired. Therefore I will keep the TTL value (in seconds) in the cache configuration equal to the Application pool recycling interval (in minutes).

I still have to test this on UAT and measure the statistics but theoretically and ideally when the first service request comes in my SSO and Configuration data will already be in the cache so with WAF Caching and this Warm-Up module my applications will find their keys from the cache.

In my required scenario the administrators were asking that if the credentials changed/added in SSO or Sharepoint configuration list they would stop IIS and receive locations update SSO/Sharepoint List and start IIS. In this situation the cache would be re-populated in the WAF Cache Cluster.

You can feel free to put in any pre-configuration data in the warm up module and avoid them being loaded when the first hit comes in.

Enhancements in FTP adapter in BizTalk Server 2010 (beta)

I was really anxious about the new features which would be added to BTS 2010. After seeing and experiencing the new visuals of the BizTalk Mapper tool and other visual enhancements I am satisfied to a certain level. When I was going through the documentation I saw the FTP adapter enhancements so I wanted to try out and test the enhancements in the beta version.

The enhancements are listed below.

1- Support for downloading file from locations marked as read only

As stated in this feature and whoever used the FTP adapter knows that the file would be deleted from the FTP after the download had completed. Now the FTP adapter in BTS 2010 is enabled to download the file without deleting the file from the location. For any reason if you want to keep the file on the FTP location now you can do so. And previously for reading the file we would need write permissions on the FTP as the file would get deleted. There is a new property in the FTP Transport propery “Delete After Download” which you can set to No. You can see this in the screenshot below.



Whoever wants to use the FTP adapter can configure the FTP Services on the server. I took help from here.

I created a receive location for the FTP and a Send port and applied the filter simply. Just to see that if the file gets deleted or not.



Well good I can see the file in the FTP location and its not deleted. There is another new property Enable Timestamp comparision. It works if the Delete after download property is set to No. If the Enable Timestamp comparision is set to Yes the file from the FTP will be re-downloaded if there is a change in the file. The adapter compares the modified timestamp of the file and re-downloads the file again if the timestamp changed. I tried it and when I modified and changed the file I could see the file re-downloaded in my File Location.




2- Support for atomic file transfer in ASCII Mode

As mentioned in the documentation the atomic file transfer was present only in Binary mode. Now the adapter can do the atomic file transfer from the FTP in ASCII mode as well. There is a Temporary Folder property in which the path of the temporary folder is given. This folder is used by the adapter for temporarily writing the data onto the file. When the download is complete then the file in the destination is written from this temporary location and the delete action is taken on the source FTP locaion by the adapter but now depending upon the Delete after download property value. But unfortunately when I gave the temporary locaion path and chanded the representation to ASCII I got the error that temporary location can only be defined when representation is Binary. Well BTS 2010 is in Beta I reported the bug. When its released I will test it later.




3- Support for Read/Write on Secure FTP

The third is the major enhancement in the FTP adapter. The old FTP adapter did not work on the secure FTP and we had to use the SFTP adapter on codeplex. Now it can read and write on the secure FTP locations and looks like we can stop using the codeplex adapter and use the native FTP adapter after the release of BTS 2010.

%d bloggers like this: