BizTalk 360

7 June 2011

I assume anybody in the BizTalk space would have known BizTalk 360 by this time. I though I’ll just give my view of the product here.

BizTalk 360 tries to address some of the real challenges we face on a BizTalk environment, especially controlled environments like Production and Test environments. There are 3 core features I personally like about BizTalk 360

Governance/Auditing: This is such an invaluable addition to the tool, on a controlled environment it’s very important to know “who did what”. There were so many instances in the past, where we struggle to identify who stopped the host instance or who Unenlisted a send port etc. With BizTalk 360 we’ll know exactly who did that activity.

Fine Grained Authorization: This allows controlling the user’s access to the environment in a fine grained manner. It helps us reuse the environment by multiple departments/projects, without the fear of one interfering with other resources. We also don’t need to provide direct access for users to access the physical machines.

Topology: We got multiple environments with multiple configurations. In the past when we need to understand the network topology we either need to login to the server and work out BizTalk/SQL server configurations. But with BizTalk 360, it just dynamically plots the network diagram.

The great thing about it, there is a free version as well. The free developer version got pretty much all the essential things that will be useful for development purpose. The only downside I can see is, BizTalk 360 reached the market bit late. If this product was available 3 years ago, I’m pretty sure by this time every reasonable sized company would have got one. But late is better than never.

The commercial editions are also priced reasonably given the amount of functionality it got. I personally know Saravana Kumar, the fellow Microsoft BizTalk Server MVP who is one of the founders of BizTalk 360. I will hugely recommend anyone using Microsoft BizTalk Serer to take a look at BizTalk 360.


Replacing functoids in BizTalk 2009

19 October 2010

A BizTalk developer recently learned me a great trick to replace funtoids in a map. It looks like a lot of BizTalkers, like me, are unaware of this handy feature.

When you accidentally used the wrong functoid in a map you can replace it by just dragging another functoid on top of it. The old functoid is replaced with the new one. The great part is that all the input and output parameters of the functoid are preserved.

The following video shows how to do this in BizTalk 2009:

BizTalk 2009 Mapper replacing functoids

I haven’t tried but this should also work in BizTalk 2006 (R2). I don’t know about BizTalk 2004.

When trying in BizTalk 2010 I was a little bit surprised to find out that this does not work. See video below:

BizTalk 2010 Mapper replacing functoids does not work

Fortunately there are many other productivity enhancements in the BizTalk 2010 mapper so I think I can live without this replace feature Smile.


Retrieve the BTSNTSvc.exe PID with PowerShell

5 January 2010

Again another post in the series of more advanced things you can do with the PowerShell provider for BizTalk.

When debugging BizTalk solutions you find yourself many times in a situation where you need to attach the Visual Studio debugger to the running BizTalk host instance. This is very easy to do. In Visual Studio you simply select ‘Debug’ then ‘Attach to Process’. From the dialog you select the ‘BTSNTSvc.exe’ process and finally click the ‘Attach’ button.

image

It gets a little more tricky when you have multiple host instances running on your development box. The dialog now shows all host instances and you need to pick the one running the artifact (pipeline component, orchestration, etc.) that you want to debug. The bad thing is that there is no readable name displayed and the only property that distinguishes between the instances is the PID (column: ID). So how do you know how to pick the correct one and go on debugging?

There are basically two approaches:

- You select all the ‘BTSNTSvc.exe’ process in order to attach the debugger to all of them.

- You use some tooling to find out the PID.

Although the first option works, it is not the best solution. Attaching to all processes takes more time and resources so it is better to just pick the right one.

Now this is nothing new and there have been a number of smart people that blogged about methods to find out the PID for a host instance. Samples are here and here.

In this post I want to show the PowerShell way of doing this.

When I use the ‘Get-ChildItems’ cmdlet on the host instances container PowerShell shows a list of ‘BTSHostInstance’ objects in the console:

image

Since the process id is not a property of the ‘BTSHostInstance’ object it is not shown in the list.

Fortunately the nice thing about PowerShell is that you can extend properties with extra members using the Add-Member cmdlet. In the script below I create a function that adds a a property containing the process id to every non isolated host.

function GetHostPID
{
    Get-ChildItem -Path 'Biztalk:\Platform Settings\Host Instances' | ForEach-Object {

        if ($_.HostType -ne 'Isolated')
        {
            [string]$a = (Get-WmiObject Win32_Process -filter "CommandLine Like '%$($_.HostName)%'").ProcessId
       
            $_ | Add-Member -MemberType NoteProperty -Name PID -Value $a
       
            Write-Output $_
              
        }
    } | Format-Table PID, Name, HostName, NTGroupName, RunningServer, HostType, ServiceState
}

When I execute the function I get a nice list similar to the list above but with the PID added to every row:

image

I can add this function to my function library so it loads automatically on startup and is always available in my PowerShell console.

Of course you can do this without the PowerShell provider for BizTalk and use WMI only. In that case it would be hard and require far more lines of code to get a nice formatted list like show above.


BizTalk Management Classes Sample

18 October 2009

In my previous post I wrote about the beta of the BizTalk management classes.

Every now and then you need to do some BizTalk management things in code. This is where the classes come in very handy.

Last week I wrote a small sample to show and explain the use of the classes to a co-BizTalker. He was excited about this but told me it would be a good thing if we provide some more sample code. I’m sure we (me and the great people I work with on this project) will come up with a lot more information when we release the final version. For now I will only post this small sample.

It shows that a lot of “BizTalk management work” can be done using only a couple lines of code. Also this is done in a uniform way (using a single API).

This is what the sample does:

  • connect to a BizTalk group (management database).
  • create an application.
  • add a BizTalk assembly (resource) to the application.
  • import a binding file.
  • creates and exports an MSI file from the new application.
  • Starts the application.
  • Resets the BizTalk Host.

Here is the code:

BTSMgmtClasses_sample

As you can see below I only need 8 lines of code to accomplish it. I don’t know how much code this would take when it was done using the “regular” API’s but I’m very sure many more lines are needed.

If you like this please download the beta from codeplex and start using the classes.


BizTalk development on Server 2008 R2

30 September 2009

Microsoft recently RTM-ed a new release of their server operation system ‘Windows Server 2008 R2’. Although debatable I think they did the right thing when they decided to only release a 64 bit version.

From a developer perspective however there is a nasty side effect that you should be aware of. This is caused by the fact that there is no MS virtualization tool running on a client OS that supports 64 bit guests.

Most developers follow the best practice to do development in a virtual environment and use their host for e-mail, word processing, etc.

In my case the host was Windows 7. I used my server running hyper-v to initially build the a new virtual BizTalk 2009 development box running on Windows Server 2008 R2. After that was done I wanted to transfer the .vhd to my laptop and run it from there.

As far as I know the MS options for running the VM are:

  • Microsoft Virtual PC 2007
  • Microsoft Virtual Server 2005 R2
  • Microsoft Windows Virtual PC (currently RC)

As none of these options support 64 bit guest meaning I can’t use a Microsoft Virtualization tool to run my new Windows Server 2008 R2 development environment. Hyper-V supports 64 bit guest OS but doesn’t run on Windows 7.

The “not so nice” solutions left for me were:

  • Use a non MS virtualization tool (like sun virtual box or VMware) that support 64 bit guests.
  • Replace Windows 7 on my host with windows server 2008 hyper-V.
  • Rebuild the virtual machine and use another 32 bit OS.

Follow

Get every new post delivered to your Inbox.