BizTalk Server 2010 R2 Announced

Posted: December 10, 2011 in BizTalk

The next version of BizTalk Server was announced few days ago and being called as BizTalk Server 2010 R2. Just as what Microsoft promised, they will continue to support BizTalk and will introduce incremental changes where most of the innovation will be in the Cloud Computing capabilities of the platform.

One of the focus of BizTalk Server 2010 R2 is platform alignment with the upcoming Windows Server 8, SQL Server 2010, and Visual Studio 11.

In addition, there will be new adapter support for IBM Informix V11 and IBM IMS/DB V11, Improve Performance and Scalability, and Improved Integration to Windows Azure Service Bus.

Given the list of features / changes mentioned in this release now, I found it not very impressive, But the idea that they’re focusing on adding support and improved integration to Cloud Computing Platform like Windows Azure is quite enticing and will offer new brand of opportunities to BizTalk Developer like me.

You can find the complete post from BizTalk Server Team blog here.



Every BizTalk Developer knows that one of the tedious tasks during BizTalk Development is Deployment, as a Developer you will find yourself spending most of your time deploying / redeploying your applications.
One strategy I used to save some time from this tasks is just to Rebuild non BizTalk artifacts such as Dataaccess, Helper and Pipeline Component, then just use gacutil.exe to install the latest build to GAC.

Over the years I have collected several ways on how to automate the boring task of installing to GAC. I listed some of them below for reference.

The great gacutil.exe that everyone knows.

Using Windows Folder Context Menu.

My favorite of them all, Powershell!

And Below is my modified version of the same powershell script that allows pipeline input and selection of framework version.

        [parameter(Mandatory=$true, Position=0, ValueFromPipeline=$true, ValueFromPipelineByPropertyName=$True)]
		[Parameter(Position=1)] [String] $CLRVersion = ""
	Write-Host "Using ToolVersion: $CLRVersion"

FUNCTION Invoke-CLR4PowerShellCommand {
    PARAM (


    if ($PSVersionTable.CLRVersion.Major -eq 4) {
        Invoke-Command -ScriptBlock $ScriptBlock -ArgumentList $ArgumentList

    $RunActivationConfigPath = $Env:TEMP | Join-Path -ChildPath ([Guid]::NewGuid())
    New-Item -Path $RunActivationConfigPath -ItemType Container | Out-Null
<!--?xml version="1.0" encoding="utf-8" ?-->

"@ | Set-Content -Path $RunActivationConfigPath\powershell.exe.activation_config -Encoding UTF8

    $EnvVarName = 'COMPLUS_ApplicationMigrationRuntimeActivationConfigPath'
    $EnvVarOld = [Environment]::GetEnvironmentVariable($EnvVarName)
    [Environment]::SetEnvironmentVariable($EnvVarName, $RunActivationConfigPath)

    try {
        & powershell.exe -inputformat text -command $ScriptBlock -args $ArgumentList
	Catch { write-host "An Error was encountered" }
	finally {
        [Environment]::SetEnvironmentVariable($EnvVarName, $EnvVarOld)
        $RunActivationConfigPath | Remove-Item -Recurse


		[String] $NetFxVersion


	    $ErrorActionPreference = "Stop"

	    if ( $null -eq ([AppDomain]::CurrentDomain.GetAssemblies() |? { $_.FullName -eq "System.EnterpriseServices, Version=$NetFxVersion, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" }) ) {
	        [System.Reflection.Assembly]::Load("System.EnterpriseServices, Version=$NetFxVersion, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a") | Out-Null

	    $publish = New-Object System.EnterpriseServices.Internal.Publish


	    foreach( $file in $files ) {
	        $assembly = $file
	        if ((!$assembly) -or (-not (Test-Path $assembly -type Leaf)) ) {
	            throw "The assembly '$assembly' does not exist."

	        if ( [System.Reflection.Assembly]::LoadFile( $assembly ).GetName().GetPublicKey().Length -eq 0 ) {
	          throw "The assembly '$assembly' must be strongly signed."

	        Write-Output "Copying to GAC: $assembly"

	        $publish.GacInstall( $assembly )

If ($CLRVersion -ne "")
	$sBlock = $Function:CopyToGAC
	Invoke-CLR4PowerShellCommand -ScriptBlock $sBlock -ArgumentList $AssemblyFullNames, $CLRVersion, $AssemblyPattern
	CopyToGAC $AssemblyFullNames $CLRVersion $AssemblyPattern

Did I missed some other ways? please let me know and I will be very much willing to update here.


I’ve passed the Exam 70-595: TS: Developing Business Process and Integration Solutions by Using Microsoft BizTalk Server 2010!

Judging from the experience, I think 1-2 years of significant experience in BizTalk Development combine with lots of reading of books, blogs and documentation will help a lot to pass the exam.

Some of the resources I’ve used to prepare for this examination are below.

BizTalk Development Center

BizTalk Server 2010 Documentation

BizTalk Server 2010 Training Kit

In addition below are books that is a must before you take the exam.

BizTalk 2010 Recipes – The recipes in the book save you the effort of developing your own solutions to common problems that have been solved many times over. The solutions demonstrate sound practice, the result of hard-earned wisdom by those who have gone before.

Pro BizTalk 2009 – This is an old book but you’ll be surprise with the amount of vital information you will learn once you finish reading this book.

SOA Patterns with BizTalk Server 2009 – This will cover a lot of WCF, BizTalk Adapter pack and a lot more BizTalk Hot stuffs.

You will complete the requirements for the following certification once you pass the exam.

So that’s it! For all those preparing for the exam I wish you all success!


Hello world!

Posted: June 3, 2010 in Others

Hello World!!!

Today I welcome myself to the blogosphere!

Expect more to come.  In the next few days I will be start blogging more on the installation of Windows Server 2008 R2 using Native boot from VHD.

See you…