BizTalk ImportBindings

Dec 17, 2008 at 1:03 PM
I'm having sometrouble getting ImportBindings to work. When I import the bindings file via BizTalk Administration Console it works fine. But when I use BizTalk2006.Assembly.ImportBindings Task for the same bindings file it runs but does nothing. I've also tryed using BizTalk2004.Assembly.ImportBindings instead and this shows different behavior: it breaks throwing an exception stating that a send port with the same name already exists; This should be expected since I've previsoully deployed the assembly containning the orchestrations.

Help, anyone? Thanks.
Feb 7, 2009 at 3:09 AM
Hi there,

  I had the same problem, the importbinding just didn't do anything at all. By adding a LogPath, i was able to see what's going on during the importing.

  <Target Name="ImportBinding" >
     <BizTalk2006.Assembly.ImportBindings
      BindingPath="C:\Projects\Portbindings.xml"
      LogPath="C:\Projects\Log.htm"
      Server="$(BTServerName)"
      Database="$(BTServerDatabase)"/>
     <Message text="Deployed: %(BTStuff.Identity)" />
    </Target>

   Then I found out in the log.htm, the Application Name is set to "Microsoft.BizTalk.Deployment" as below instead of the actual application.

   Updating binding information. ConnectionString="Data Source=dev;Initial Catalog=BizTalkMgmtDb;Integrated Security=True;Application Name=Microsoft.BizTalk.Deployment"

    Then, I loaded the source code in "BuildTool\Solutions\Main\Tasks.BizTalk\2006\Assembly\ImportBindings.cs", found this is no application assigned to deployer object.

    protected override void InternalExecute()
        {
            Microsoft.Sdc.Tasks.BizTalk2004.Configuration.BizTalkInstallation installation = this.GetInstallation();

            Deployer deployer = new Deployer();
            deployer.SetConnection(installation.Server, installation.Database);
            deployer.ApplicationName = Application; //this line is missing from original source code.
            deployer.ImportBinding(installation.Server, installation.Database, this.BindingPath, null);
        }


    In order to pass in the Application value, you will need to add a public property: "Application" in the class, then specify the value in the <Target> setting.

   <Target Name="ImportBinding" >
     <BizTalk2006.Assembly.ImportBindings
      BindingPath="\Portbindings.xml"
         AssemblyPath="Orchestrations.dll"
         LogPath="\Log.htm"
      Application="$(BTApplicationName)"
      Server="$(BTServerName)"
      Database="$(BTServerDatabase)"/>
     <Message text="Deployed: %(BTStuff.Identity)" />
    </Target>


   

Coordinator
Mar 22, 2009 at 10:48 PM
Hi,
As you have seen, there is a bug in the ImportBindings task. We will be updating the library soon and this will be fixed.

Rgds
Benjy