Upgraded BizTalk Server 2006 and MSMQT adapters…

When you upgrade from BizTalk 2004 to BizTalk 2006, MSMQ adapter is installed by default. If you had MSMQ/T adapter enabled in 2004, it will also be enabled after you upgrade to 2006. You’ll see the MSMQ adapter, but it won’t be doing anything. The adapters don’t conflict with each other and you can have both installed without any problems. The conflict would be between BizTalk with MSMQT and the Windows MSMQ service. As long as the MSMQ service is not running, you will not have problems.


Though MSMQ/T is fully supported in BizTalk 2006, if you want to migrate to MSMQ somtime in future follow the steps mentioned in Migration considerations for moving from MSMQ/T to MSMQ adapter in BizTalk 2006

New blog from the BizTalk Server product team

Kris Horrocks, Mike Woods, Mark Berman and Steve Sloan of the BizTalk product group at Microsoft will be contributing regularly to a new blog that you can find at http://blogs.msdn.com/BizTalk_Server_Team_Blog/.


They’ve got a great “beginner training roadmap” post that will be very helpful for people new to BizTalk Server 2006.


OK guys… let’s see some great content on a REGULAR basis!

Events update: Mashups, Cool stuff, TechEd, Code Camps

Looks like the events side of my life is heating up.


Most prominent is that June 11-16 (date/times to be confirmed), I’ll be speaking at TechEd (again) Boston on… you guessed it: Building a Next Generation ESB with Microsoft Technologies. I will be co-presenting this with two of my esteemed colleagues from this project: Lukas Cudrigh (Technical Strategist, Microsoft), and the Chief Architect from the large company where we’re actually building this. Early indications are that this will be a very popular session.


Before that, on May 6th, I will be speaking in Phoenix at the Desert Code Camp, and I’ll be doing 2 sessions:


• Intro to BizTalk Server 2006 (because I love to evangelize and help others see the light!)
• Building a Next Generation ESB using Microsoft technologies


Then the weekend of June 29th I’ll be speaking at the San Diego Code Camp, repeating the Phoenix sessions. Keep an eye on SoCalNetEvents.com for details on this.


In terms of events I’m organizing, if you’re in San Diego (as I am so rarely nowadays, but I will be in town this week, which is the only week I’ll be in town the whole week in the first half of 2006!!), I have put together two really interesting sessions:


March 28th, my friend Bill Evjen, Technical Architect at Lipper (div of Reuters) will be in town speaking at the San Diego .NET User Group. He will be presenting “Managing Membership and Role Management” and “Looking at some Cool New Features of ASP.NET 2.0”. Bill’s a great speaker, ironman extraordinaire author (working on multiple books at any point in time), and really knows his stuff, so this should be a great presentation. Bill told me that his “cool new features” includes some super-cool little-known gems, so… be there!


March 29th, through the San Diego Software Industry Council, we’re honored to have Dave Nielsen (StrikeIron, ex-PayPal/eBay Web services evangelist) presenting on “The Commercial Mashup Ecosystem” and commercializing mashups. Among his other impressive achievements, Dave also runs a Web services special interest group in Silicon Valley, and really knows his stuff, so this should be a most informative meeting.


Pretty busy, never a dull moment….



 

BizTalk Server product management team has a new blog

Let’s say welcome to the BizTalk Server product management team that has a new blog, with Mike Woods, Kris Horrocks, Steve Sloan, and Mark Berman contributing content every week. They’re ready to carry the momentum leading up to and after the ’06 release with great posts, so keep an eye on their blog.


If you are new to BizTalk then take a look at ‘BizTalk Beginner Training Roadmap’

BizTalk install uninstall bat file generator

I wrote this little utility almost 2 years ago to speed up deployment and binding, enlisting, enabling and starting BizTalk components in a development environment and then to perform the uninstall. It works well on simple BizTalk projects. With more complex BizTalk projects I would recommend using Nant. My colleges and I now never use msi’s for installs\uninstalls as they are harder to debug when a deployment fails and less configurable than Nant which is also open source. I know my posting of this is a little late as it’s now easier to perform these functions in BizTalk 2006, sorry been busy.


The utility generates install and uninstall bat files for a BizTalk assembly applying a config file. The bat files call the btsdeploy utility and the vb scripts located in the BizTalk sdk directory (C:\Program Files\Microsoft BizTalk Server 2004\SDK\Samples\Admin\WMI\) to deploy, bind, enlist, enable and start up BizTalk orchestrations and the uninstall will do the reverse. Below is the usage message for this command line utility.


Generates an install bat file and an uninstall bat file for BizTalk Assemblies.
Syntax: BizBatInstall {Commands}
Commands:
        /b    Binding config file must be used with /a /i or /a /u
        /a    BizTalk assembly file must be used with /b /i or /b /u
        /i    Install bat file to generate must be used with /b /a
        /u    Uninstall bat file to generate must be used with /b /a
        /? or /help     Display this usage message


To create the utility:


1) In Visual Studio create a C# Console app call it BizBatInstall


2) Replace all the generated code in the class file with the following…


using System;
using System.IO;
using System.Configuration;
using System.Xml;


namespace Synergy.Samples
{
 ///


 /// Summary description for Class1.
 ///

 class BizBatInstall
 {
  ///
  ///The main entry point for the application.
  ///Gets the name of the assemblies and bat files
  ///Generates an install bat file and an uninstall bat file
  ///Install bat file contents:
  /// Rebuilds assembly
  /// Deploys assembly
  /// Imports the binding file
  /// Starts the send ports
  /// Enlists the orchestration
  /// Enables the recieve locations
  ///
  ///Uninstall bat file contents:
  /// Stops the orchestration
  /// Undeploys the biztalk assembly
  /// Removes the recieve ports
  /// Removes the send ports
  ///

  [STAThread]
  static void Main(string[] args)
  {
   try
   {
    //Check for help
    if (args.Length == 0)
    {
     ShowUsageMessage();
    }
    
    else if((args[0] == “/?”) || (args[0] == “/help”))
    {
     ShowUsageMessage();
    }


    else
    {
     //Parse out command line arguements
     string bindingFileName = GetCommand(“/b”, args);
     string assembly = GetCommand(“/a”, args);
     string uninstallBatFileName = GetCommand(“/u”, args);
     string installBatFileName = GetCommand(“/i”, args);


     if (bindingFileName != string.Empty && assembly != string.Empty)
     {
      //Load the binding config file into an xml doc
      XmlDocument bindingDoc = new XmlDocument();
      bindingDoc.Load(bindingFileName);


      //Generate the bat files
      GenerateInstallBat(installBatFileName, bindingFileName, assembly, bindingDoc);
      GenerateUninstallBat(uninstallBatFileName,bindingFileName, assembly, bindingDoc);
     }


     else
     {
      Console.WriteLine(“The binding file and or assembly file command line arguements were not set, no install or uninstall bat files generated!”);
     }
    }
   }
   catch (System.Exception ex)
   {
    Console.Write(ex.ToString());
   }
  }


  private static string GetCommand(string commandToken, string[] args)
  {
   string commandValue = string.Empty;


   for (int i = 0; i < args.Length; i++)
   {
    if (args[i] == commandToken)
    {
     commandValue = args[i + 1];
     break;
    }
   }
   return commandValue;
  }


  private static void ShowUsageMessage()
  {
   Console.WriteLine(“Generates an install bat file and an uninstall bat file for BizTalk Assemblies.”);
   Console.WriteLine(“Syntax: BizBatInstall “);
   Console.WriteLine(“Commands:”);
   Console.WriteLine(“\t/b \tBinding config file must be used with /a /i or /a /u”);
   Console.WriteLine(“\t/a \tBizTalk assembly file must be used with /b /i or /b /u”);
   Console.WriteLine(“\t/i \tInstall bat file to generate must be used with /b /a”);
   Console.WriteLine(“\t/u \tUninstall bat file to generate must be used with /b /a”);
   Console.WriteLine(“\t/? or /help \tDisplay this usage message”);
  }


  private static void GenerateUninstallBat(string uninstallBatFileName, string bindingFileName,
   string biztalkAssemblyFileName, XmlDocument bindingDoc)
  {
   if (uninstallBatFileName != string.Empty)
   {
    try
  &nb