Posts Tagged ‘BizTalk Server 2013 R2’

Exciting news… Version 1.9.1.0 of BizTalk Mapper Extensions UtilityPack for BizTalk Server 2013 R2 and 2013 is now available!

Here’s the change-log for this release:

  • Updated Logical Functoids:
    • The project has sign strong name key solving an issue regarding to “Unable to add BizTalk.Logical.Functoids.dll to the GAC (version 1.9.0.0)” – However, this is a false problem or a BizTalk Deployment Framework that always put functoid assemblies in the GAC, because these functoids are doesn’t need to be place inside the GAC.
  • Updated CRM Functoids:
    • CRM Lookup Functoid: This functoid was updated. This functoid allows you to retrieve a value from CRM lookup field. But now this functoid is also able to performs lookup operation using two different approach: Accessing the CRM database (read-only), for local CRM integration or through the CRM web services if you want avoid giving access to the database or if you have to integrate CRM online.
The new CRM Lookup Functoid

One of the biggest changes in this new version was made by Salvatore Pellitteri that decided to change the previous CRM Lookup Functoid (also created by him) by adding additional features.

This functoid, has the previous one, allows you to retrieve a value from CRM lookup field. However, this new version of the functoid is able to performs lookup operation using two different approach:

  • Accessing the CRM database (read-only), for local CRM integration
  • Through the CRM web services if you want avoid giving access to the database or if you have to integrate CRM online.
Parameters

The functoid takes five mandatory input parameters:

  1. SSO Application Name: the connection parameters are stored inside SSO. Here you have to specify the application name where you decide to store the settings. This allow you to have multiple CRM environments that you can integrate;
  2. CRM Guid Field Name: key field name of which you want to get the value;
  3. CRM Entity Name: CRM entity name on which the resolution will be performed
  4. CRM Input Field Name: imagining having a “code” as input and you want to know the CRM physical key, in this attribute should specify the name of the “code” field.
  5. CRM Input Value: value from source system to resolve

The output of the functoid is a string, Example: 6erg5r-sdrf56-4dfgt5-6ty5r4-456trt 24

new-CRM-Lookup-Functoid-1910

Installation

Create a SSO application.

SQL Server Lookup

Create the following SSO configuration parameters:

  • CrmConnectionType: “sql”
  • CrmDatabaseConnectionString: specify the CRM database connection string

Open SQL Server management console, connect to CRM database and execute the script under CRMLookup.sql file in project folder.

Local CRM web services lookup

Create the following SSO configuration parameters:

CRM Online web services lookup

Create the following SSO configuration parameters:

You can found and download Source Code, Application Binaries and Documentation in CodePlex BizTalk Mapper Extensions UtilityPack home page:

BizTalk Mapper Extensions UtilityPack
CodePlex

 

or from MSDN Code Gallery:

BizTalk Mapper Extensions UtilityPack for BizTalk Server 2013 R2 (685.6 KB)
Microsoft | MSDN Code Gallery

We cannot rely on documentation, if they exist, to be accurate, special regarding to the status of the machines present in the environment – I never found this kind of document that tell me what is installed on the machine, what are the updates (or CU) or service pack installed and so on… and regarding to BizTalk Server I do not remember another simple task like this, get or check the list of all BizTalk Cumulative Updates installed in your machine/environment, being so painful to perform!

Of course, there are some ways to check that, for example:

  • you can do it manually by checking “Control Panel\Programs\Programs and Features” and then view the “Installed Updates”, however, this can be a very annoying task and sometimes time consuming just to try find them in that huge list because they are not organized in a category BizTalk

BizTalk-CU1-In-RosettaNet-Category

BizTalk-CU2-and-3-In-UDDI-Category

  • you can use BizTalk MsgBoxViewer but still if you only want to check what CU are installed, or you need to analyze your entire system with this tool, or you need to uncheck all the select default queries and check only for the cumulative updates – which can also be an annoying and time consuming task

Check-BizTalk-CU-with-MsgBoxViewer

Check-BizTalk-CU-with-MsgBoxViewer-result

Probably there are other ways, nevertheless, I just want a quick and very easy way, because this is a basic and very simple task, to know what are the BizTalk Cumulative Updates installed likeConfused smile

This is the list of BizTalk Cumulative Update installed in this machine: BTS2013R2LAB01
- Microsoft BizTalk Server 2013 R2 CU1
- Microsoft BizTalk Server 2013 R2 CU2
- Microsoft BizTalk Server 2013 R2 CU3

This way I know that I need to install the last CU available: “Microsoft BizTalk Server 2013 R2 CU4”. Yehhh!

PowerShell script overview

So how can we easily automate tasks? and reuse them whenever necessary and at the same time saving significant time for other tasks?

Using PowerShell is a good option. Windows PowerShell is a Windows command-line shell designed especially for system administrators and can be used by BizTalk administrators to help them in automating repetitive tasks or tasks that are time consuming to perform manually.

This is a simple script that allows you to configure the template name of the cumulative updates, that will change from version to version, and will give you the list of all cumulative updates installed in your machine:

$keyResults = Get-ChildItem -path HKLM:\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\ -Recurse -ErrorAction SilentlyContinue | where { $_.Name -match $CUNameTemplate}

foreach($keyItem in $keyResults)
{
    if ($keyItem.GetValue("DisplayName") -like "*$CUNameTemplate*")
    {
        write-host "-" $keyItem.GetValue("DisplayName").ToString().Substring(0,$keyItem.GetValue("DisplayName").ToString().IndexOf(" CU")+4)
    }
}

THIS SQL SCRIPT IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND.

After install the CU4 in my machine the result was what I was expecting:

This is the list of BizTalk Cumulative Update installed in this machine: BTS2013R2LAB01
- Microsoft BizTalk Server 2013 R2 CU1
- Microsoft BizTalk Server 2013 R2 CU2
- Microsoft BizTalk Server 2013 R2 CU3
- Microsoft BizTalk Server 2013 R2 CU4

You can download the PowerShell Script used here from:

Check all BizTalk Cumulative Updates installed in server with PowerShell (2 KB)
Microsoft | TechNet Gallery

In the previous post I provide a fix to the PowerShell script to that is able to configure the Deployment Properties of a BizTalk project, keeping my word, at least half of it, because I also found the same problems in the PowerShell script to fix or configure the Signing Properties of a BizTalk Project, i.e., it only worked if the signing properties already existed in the file(s) (.btproj). This means that:

  • if we obtain a copy of the project from the source control that have already have these properties defined, it will work otherwise the script was unable to properly set these properties.
  • if we were working on a new project then definitely the script didn’t set up the signing properties.

Again, I promised that I would fix it and now I’m keeping the rest of my word. Along with the previous, this is probably one of scripts that I use the most and the reason why is…

So, why this script is important?

Again, and this is nothing new, before deploying a BizTalk project we must first strongly sigh the assemblies involved in the project to give them a unique identification for allowing them to be installed into the GAC.

GAC (Global Assembly Cache) is a machine code cache that stores assemblies that can be shared by multiple applications on the computer. This assemblies needs to be strongly signed so that they can have a unique identification in the GAC.

A strong-named assembly provides several security benefits:

  • A strong name guarantees the uniqueness of the assembly by assigning a digital signature and a unique key pair.
  • A strong name protects the lineage of the assembly by ensuring that no one else can generate a subsequent version of the assembly.
  • A strong name provides a strong integrity check to guarantee that the contents of the assembly have not changed since the last build.

In the process of deploying a BizTalk solution, Visual Studio first builds the assemblies. The deployment process requires that each assembly is strongly signed. You can strongly sign your assemblies by associating each project in the solution with a strong name assembly key file. That is an easy and rapid task (non-time consuming task). However, if a solution in Visual Studio contains multiple projects, you must separately configure properties for each project.

This seems a slight and easy task but now imagine that you have almost 200 projects inside a unique Visual Studio Solution! It will be an insane operation and the most likely to happen is you to fall asleep in front of the pc… once again.

With this PowerShell you will be able to parameterize all projects inside a Visual Studio Solution running a single line of code and avoid spending numerous hours doing this task manually.

PowerShell script overview
    $allPropertyGroup = $xml.Project.PropertyGroup
    foreach($node in $allPropertyGroup)
    {
        if($node.AssemblyOriginatorKeyFile -ne $null)
        {
            $addNewKeyNodeFlag = $false;
            $node.AssemblyOriginatorKeyFile= $keyName;
        }

        if($node.SignAssembly -ne $null)
        {
            $addNewSignNodeFlag = $false;
            $node.SignAssembly= $true;
        }
    }

    if($addNewKeyNodeFlag -eq $true)
    {
        $childItemGroup = $xml.CreateElement("PropertyGroup",$xdNS)
        $childNone = $xml.CreateElement("AssemblyOriginatorKeyFile",$xdNS)
        $childNone.AppendChild($xml.CreateTextNode($keyName));
        $childItemGroup.AppendChild($childNone)
        $xml.Project.InsertBefore($childItemGroup, $xml.Project.ItemGroup[0])
    }

    if($addNewSignNodeFlag -eq $true)
    {
        $childItemGroup = $xml.CreateElement("PropertyGroup",$xdNS)
        $childNone = $xml.CreateElement("SignAssembly",$xdNS)
        $childNone.AppendChild($xml.CreateTextNode($true));
        $childItemGroup.AppendChild($childNone)
        $xml.Project.InsertBefore($childItemGroup, $xml.Project.ItemGroup[0])
    }

    $allItemGroup = $xml.Project.ItemGroup.None;
    foreach($node in $allItemGroup)
    {
        if($node.Include -eq $keyName)
        {
            $addKeyToSolutionFlag = $false;
        }
    }

    if($addKeyToSolutionFlag -eq $true)
    {
        $childItemGroup = $xml.CreateElement("ItemGroup",$xdNS)
        $childNone = $xml.CreateElement("None",$xdNS)
        $childNone.SetAttribute("Include", $keyName)
        $childItemGroup.AppendChild($childNone)
        $xml.Project.InsertBefore($childItemGroup, $xml.Project.Import[0])
    }
THIS SQL SCRIPT IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND.

You can download the PowerShell Script used here from:

BizTalk Server: Fixing BizTalk Project Signing Properties with PowerShell (2 KB)
Microsoft | TechNet Gallery

It is nothing new that before you can deploy a solution from Visual Studio into a BizTalk application, you must first set project properties, especially the Server and the Configuration Database. Otherwise two things may happen:

  • Deployment will fail when you try do to deploy it through Microsoft Visual Studio or will you are redeploying a previously deployed BizTalk project.
  • The assemblies and all their artifacts will be deployed to and unwanted BizTalk Application (normally BizTalk Application 1)

Previous I wrote a post regarding how to fix the Deployment Properties of a Visual Studio BizTalk Project with PowerShell, you can know more about it here. However, during my talks about tips and tricks I realize that the previous script was a little limited, it only worked if the deployment properties already exist in the file. This means that, if we were working on a new project or we obtaining a copy of the project from the source control, the script didn’t correctly setup or fix the deployment settings.

I promised that I would fix it and now I’m keeping my word. And I have to say that, this is probably one of scripts that I use the most and the reason why is…

So, why this script is important?

Well, if a solution in Visual Studio contains multiple projects, you need to manually configure the deployment properties for each project.

And you must keep in mind that these setting are under the Project user option file(s) (“*.btproj.user”) that are typically not under source control. The reason is that the Visual Studio deployment feature main focus is for development scenarios where one user settings might differ from another. And it will be up to you, or your client, to decide if you want these files to be checked in and available to all of the developers on your team. (you can read it more about this here)

So, this seems a slight and easy task but now imagine that you have almost 200 projects inside a unique Visual Studio Solution! It will be an insane and consuming task to do and most likely to happen is you to fall asleep in front of the pc.

With this PowerShell you will be able to parameterize all projects inside a Visual Studio Solution running a single line of code and avoid spending numerous hours doing this task manually.

PowerShell script overview
    $allPropertyGroup = $xml.Project.PropertyGroup
    foreach($node in $allPropertyGroup)
    {
        if($node.Server -ne $null)
        {
            #If the Deployment Setting already exists, then we just need to update them
            $addNewNodeFlag = $false
            $node.Server= $ServerName;
            $node.ConfigurationDatabase= $DatabaseName;
            $node.ApplicationName= $ApplicationName;
            $node.Redeploy= $RedeployFlag;
            $node.Register= $RegisterFlag;
            $node.RestartHostInstances= $RestartHostInstancesFlag;
        }
    }

    if($addNewNodeFlag -eq $true)
    {
        #Add a PropertyGroup node if the Deployment Setting doesn't exist
        $newXmlPropertyGroup = $xml.CreateElement("PropertyGroup", "http://schemas.microsoft.com/developer/msbuild/2003")
        $newXmlPropertyGroup.SetAttribute(“Condition”,”'`$(Configuration)|`$(Platform)' == 'Debug|AnyCPU'”);

        $newXmlElement = $newXmlPropertyGroup.AppendChild($xml.CreateElement("Server", "http://schemas.microsoft.com/developer/msbuild/2003"));
        $newXmlTextNode = $newXmlElement.AppendChild($xml.CreateTextNode($ServerName));
 
        $newXmlElement = $newXmlPropertyGroup.AppendChild($xml.CreateElement("ConfigurationDatabase", "http://schemas.microsoft.com/developer/msbuild/2003"));
        $newXmlTextNode = $newXmlElement.AppendChild($xml.CreateTextNode($DatabaseName));

        $newXmlElement = $newXmlPropertyGroup.AppendChild($xml.CreateElement("ApplicationName", "http://schemas.microsoft.com/developer/msbuild/2003"));
        $newXmlTextNode = $newXmlElement.AppendChild($xml.CreateTextNode($ApplicationName));

        $newXmlElement = $newXmlPropertyGroup.AppendChild($xml.CreateElement("Redeploy", "http://schemas.microsoft.com/developer/msbuild/2003"));
        $newXmlTextNode = $newXmlElement.AppendChild($xml.CreateTextNode($RedeployFlag));

        $newXmlElement = $newXmlPropertyGroup.AppendChild($xml.CreateElement("Register", "http://schemas.microsoft.com/developer/msbuild/2003"));
        $newXmlTextNode = $newXmlElement.AppendChild($xml.CreateTextNode($RegisterFlag));

        $newXmlElement = $newXmlPropertyGroup.AppendChild($xml.CreateElement("RestartHostInstances", "http://schemas.microsoft.com/developer/msbuild/2003"));
        $newXmlTextNode = $newXmlElement.AppendChild($xml.CreateTextNode($RestartHostInstancesFlag));

        $xml.Project.InsertAfter($newXmlPropertyGroup, $xml.Project.PropertyGroup[1])
    }

THIS SQL SCRIPT IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND.

You can download the PowerShell Script used here from:

BizTalk Server: Fixing BizTalk Project Deployment Properties with PowerShell (1 KB)
Microsoft | TechNet Gallery

Finally, something that many community members have been requesting me to publish is here! I already made this manual several months ago, however, for several reasons (speaking engagements, publishing other content and so on) I have been delaying its publication. But I have offered this same guide to all my customers.

There are many things to consider when planning this type of installation, often the network infrastructure already exists and BizTalk Server must coexist with other network applications.

Installing BizTalk Server 2013 R2 in a Basic Multi-Computer Environment (User Guide) is a 145 pages detailed installation document that explains how to install, configure and optimize Microsoft BizTalk Server 2013 R2 on a basic multi-computer running Windows Server 2012 R2. This information will help you to plan the installation and configuration of BizTalk Server 2013 R2, applications and components on which it depends.

Contents                                      
  1. BizTalk Server Installation scenario.
  2. The need for a Domain Controller – Windows Groups and Service Accounts.
    1. Create Domain Groups and Users.
    2. Planning the use of a new Organizational Unit.
    3. Windows Groups Used In BizTalk Server.
    4. IIS_WPG and IIS_IUSRS Group.
    5. User and Service Accounts Used In BizTalk Server.
    6. Summary of users and Groups Affiliation.
    7. SQL Server Service Accounts.
    8. References.
  3. Preparing Computers for Installation – Important considerations before set up the servers.
    1. Change the Machine name.
    2. Join the Local Administrators Group.
    3. The user running the BizTalk Server configuration must belong…
    4. Install Critical Windows Updates.
    5. Disable IPv6 (optional).
    6. Turn off Internet Explorer Enhanced Security Configuration (optional).
    7. Disable User Account Control (optional).
    8. Turn Windows Firewall off (optional).
    9. Configure Microsoft Distributed Transaction Coordinator (MS DTC).
    10. COM+ Network Access considerations.
  4. Preparing and Install SQL Server 2014 machine.
    1. Important considerations before set up the servers.
    2. Install SQL Server 2014.
    3. Configure SQL Server Database Mail feature.
    4. Install Service Pack 1 for Microsoft SQL Server 2014.
    5. Configure SQL Server for Remote Connections.
    6. Configured SQL Server protocols – Disable the Shared Memory Protocol, Enable TCP/IP and Named Pipes.
    7. Configure SQL Server Database Engine to listen on a specific TCP Port (optional).
    8. Configure SQL Analysis Server to listen on a specific TCP Port (optional).
    9. Configuring Microsoft Distributed Transaction Coordinator (DTC) to work through a firewall or network address translation firewalls (optional).
    10. List of ports between BizTalk Server and SQL Server (optional).
    11. Configure Firewall on SQL Server machine (optional).
      1. Inbound Rules.
      2. Outbound Rules.
  5. Preparing and install prerequisites on BizTalk Server 2013 R2 machine.
    1. Important considerations before set up the servers.
    2. Enable Internet Information Services.
    3. Running the BAM Portal in a 64-bit Environment.
    4. Install Windows Identity Foundation (WIF) (optional).
    5. Install Microsoft Office Excel 2013 (optional).
    6. Install Visual Studio 2013 (optional).
    7. Remove Microsoft SQL Server Express.
    8. SQL Server Considerations.
    9. Install SQL Server 2014 Client Tools.
    10. Create SQL Alias to communicate with remote SQL Server using Non-Standard Port (optional).
    11. List of ports between SQL Server and BizTalk Server (optional).
    12. Configure Firewall on BizTalk Server machine.
      1. Inbound Rules.
      2. Outbound Rules.
  6. Testing environment connectivity’s.
    1. TCPView.
    2. DTCPing.
    3. DTCTester.
    4. SQL Server 2014 Client Tools.
  7. Install and configure BizTalk Server 2013 R2 machine.
    1. Install BizTalk Server 2013 R2.
      1. Verify Your Installation.
    2. Configure BizTalk Server.
      1. Pin BizTalk Server Administration to taskbar.
    3. Validate Mail account used by BizTalk to send BAM Alerts.
    4. Install BizTalk Adapter Pack.
      1. Microsoft BizTalk Adapter Pack and Microsoft BizTalk Adapter Pack (x64).
      2. Steps to install BizTalk Adapter Pack.
      3. Add adapters to BizTalk Administration Console.
    5. Install Critical Windows Updates and BizTalk Server Cumulative Update Package.
    6. Configure BizTalk Server SQL Jobs.
      1. How to configure Backup BizTalk Server (BizTalkMgmtDb).
      2. How to configure DTA Purge and Archive (BizTalkDTADb).
      3. MessageBox_Message_Cleanup_BizTalkMsgBoxDb.
  8. Optimize the BizTalk Server 2013 R2 environment
    1. Deleting BizTalk backup files.
      1. Implementing a custom sp_DeleteBackupHistory.
      2. Implementing a Maintenance Plan to clean BizTalk Database backup’s files.
    2. Pre-allocate space and define auto-growth settings for BizTalk Server databases. 112
    3. Configure BizTalk Server Windows Services.
    4. Install and configure BizTalk Health Monitor.
      1. How to register BizTalk Health Monitor Snap-In.
      2. How to integrate BHM Snap-In into BizTalk Admin Console
    5. Install SSO Configuration Application MMC Snap-In
    6. Configure BizTalk Jobs History (Microsoft SQL Server Agent job history log).
      1. To resize the job history log based on raw size.
    7. Force Full Backup BizTalk Server (BizTalkMgmtDb) job.
    8. Managing and cleaning BizTalk Server MarkLog database tables.
    9. Configure host and Host instances.
      1. What’s is Host, Host Instances and Adapter Handlers?.
      2. Best practices to Configuring Hosts and Host Instances.
      3. How can I automate this task?.
    10. Power Mode.
    11. Consider setting the ‘text in row’ table option to boost BizTalk Server Performance.
      1. How to exploit the Text in Row table option in BizTalk Server.
    12. General network TCP settings that can impact BizTalk Server
      1. How to Disable the Scalable Networking Pack (SNP) features
      2. How to Disable Privilege Attribute Certificate (PAC)
      3. How to Check and if necessary increase the ephemeral ports and reduce the TCP re-use timeout setting

download-whitepaper

If you are interest to see other version check the following posts:

In the previous post it was provide a PowerShell script to fix or configure the Deployment Properties of a BizTalk project. However, and this is also nothing new, before deploying a BizTalk project we must first strongly sigh the assemblies involved in the project to give them an unique identification for allowing them to be installed into the GAC.

GAC (Global Assembly Cache) is a machine code cache that stores assemblies that can be shared by multiple applications on the computer. This assemblies needs to be strongly signed so that they can have a unique identification in the GAC.

A strong-named assembly provides several security benefits:

  • A strong name guarantees the uniqueness of the assembly by assigning a digital signature and a unique key pair.
  • A strong name protects the lineage of the assembly by ensuring that no one else can generate a subsequent version of the assembly.
  • A strong name provides a strong integrity check to guarantee that the contents of the assembly have not changed since the last build.

In the process of deploying a BizTalk solution, Visual Studio first builds the assemblies. The deployment process requires that each assembly is strongly signed. You can strongly sign your assemblies by associating the project with a strong name assembly key file. If you haven’t already done so, before deploying a solution from Visual Studio, use the following procedure to generate a strong name assembly key file and assign it to each project in the solution.

To configure a strong name assembly key file

  • In Visual Studio Solution Explorer, right-click the project and then click Properties.
  • Click the Signing tab and choose “Browse…” or “New…” in the Choose a strong name key file drop down box.
  • Create a new key or browse to the key file and click it. Click Open, and then close the project properties.
  • Repeat steps 3 through 6 for each project in the solution that you want to deploy using this strong name assembly key file.

Signing-Properties-BizTalk-Project-Visual-Studio

Once again, if a solution in Visual Studio contains multiple projects, you must separately configure properties for each project.

This seems a slight and easy task but now imagine that you have almost 200 projects inside a unique Visual Studio Solution! It will be an insane operation and the most likely to happen is you to fall asleep in front of the pc… once again.

With this PowerShell you will be able to parameterize all projects inside a Visual Studio Solution running a single line of code and avoid spending numerous hours doing this task manually.

    foreach($node in $allPropertyGroup) 
    { 
        if($node.AssemblyOriginatorKeyFile -ne $null) 
        { 
            $node.AssemblyOriginatorKeyFile= "<keyname>.snk"; 
        } 
    } 
 
    if($xml.Project.ItemGroup.None -eq $null) 
    { 
        $childItemGroup = $xml.CreateElement("ItemGroup",$xdNS) 
        $childNone = $xml.CreateElement("None",$xdNS) 
        $childNone.SetAttribute("Include", "<keyname>.snk") 
        $childItemGroup.AppendChild($childNone) 
        $xml.Project.InsertBefore($childItemGroup, $xml.Project.Import[0]) 
    }

You can download the PowerShell Script used here from:

BizTalk Server: Fixing BizTalk Project Signing Properties with PowerShell (2 KB)
Microsoft | TechNet Gallery

It is nothing new that before you can deploy a solution from Visual Studio into a BizTalk application, you must first set project properties, especially the Server and the Configuration Database. Otherwise two things may happen:

  • Deployment will fail when you try do to deploy it through Microsoft Visual Studio or will you are redeploying a previously deployed BizTalk project.
  • The assemblies and all their artifacts will be deployed to and unwanted BizTalk Application (normally BizTalk Application 1)

If a solution in Visual Studio contains multiple projects, you must separately configure properties for each project.

To configure project properties you normally need to:

  • In Visual Studio Solution Explorer right-click a project for which you want to configure properties, and then click Properties.
  • Click the Deployment tab in Project Designer.
  • Configure the following project properties
    • Application Name: Name of the BizTalk application to which to deploy the assemblies in this project. If the application already exists, the assemblies will be added to it when you deploy the project. If the application does not exist, the application will be created. If this field is blank, the assemblies will be deployed to the default BizTalk application in the current group. Names that include spaces must be enclosed by double quotation marks (“).
    • Configuration Database: Name of the BizTalk Management database for the group, BizTalkMgmtDb by default.
    • Server: Name of the SQL Server instance that hosts the BizTalk Management database on the local computer. In a single-computer installation, this is usually the name of the local computer.
    • Redeploy: Setting this to True (the default) enables you to redeploy the BizTalk assemblies without changing the version number.
    • Install to Global Assembly Cache: Setting this to True (the default) installs the assemblies to the Global Assembly Cache (GAC) on the local computer when you install the application. Set this to False only if you plan to use other tools for this installation, such as gacutil.
    • Restart Host Instances: Setting this to True automatically restarts all host instances running on the local computer when the assembly is redeployed. If set to False (the default), you must manually restart the host instances when you redeploy an assembly.
    • Enable Unit Testing: Specifies whether to enable unit testing for the project.
  • And then click OK.
  • Repeat steps 1, 2, and 3 for each project in the solution.

Deployment-Properties-BizTalk-Project-Visual-Studio

This seems a slight and easy task but now imagine that you have almost 200 projects inside a unique Visual Studio Solution! It will be an insane operation and the most likely to happen is you to fall asleep in front of the pc.

With this PowerShell you will be able to parameterize all projects inside a Visual Studio Solution running a single line of code and avoid spending numerous hours doing this task manually.

    $allPropertyGroup = $xml.Project.PropertyGroup 
    foreach($node in $allPropertyGroup) 
    { 
        if($node.Server -ne $null) 
        { 
            $node.Server= "<BizTalkServer>"; 
            $node.ConfigurationDatabase= "BizTalkMgmtDb"; 
            $node.ApplicationName= "<BTSApplicationName>"; 
            $node.Redeploy= "False"; 
            $node.Register= "True"; 
            $node.RestartHostInstances= "False"; 
        } 
    }

You can download the PowerShell Script used here from:

BizTalk Server: Fixing BizTalk Project Deployment Properties with PowerShell (1 KB)
Microsoft | TechNet Gallery

Sometimes websites don’t look like you expect them to. Images might not appear, menus might be out of place, and text could be jumbled together. This might be caused by a compatibility problem between Internet Explorer and the site you’re on and most of the times this behavior can be fixed by adding the site to your Compatibility View list.

Compatibility View was introduced in Windows Internet Explorer 8 to help existing content continue to work with Windows Internet Explorer 7, while developers updated their content to support modern interoperable web standards. Well, unfortunately for us, BAM Portal never was updated and continues to have problems of compatibility.

BizTalk-Server-2013-R2-BAM-Portal-IE11-compatibility-problems

As always one of the downsides of dealing with a new versions of products like IE and so on… is figuring out where some features/options have moved in this new release. And this exactly one of this cases…

“Starting with IE11, document modes are considered deprecated and should no longer be used. Webpages that require legacy document modes to display properly should be rewritten to use features defined by modern standards.”  – Source: Specifying legacy document modes

For this reason, in Internet Explorer 11, the compatibility view button is removed from the address bar. Microsoft felt that the button had outlived his purpose because it’s been many years now since Microsoft introduced X-UA-Compatible tags. Web developers were supposed to add these X-UA-Compatible meta tags to their website’s HTML header to indicate web page compatibility and not leave it to the user to depend on the button to correctly render the page.

However, and fortunately for us BizTalkers, the compatibility view feature still remains in the browser.

You can turn it on or off by:

  • Click on the Settings icon in the top right corner of IE11 and select the “Compatibility View Settings” item in the drop-down menu

IE11-compatibility-view-settings

  • In the “Compatibility View Settings” box, add the problematic website URL – aka BAM Portal – and then click Add.
    • Compatibility View is turned on for this single website, for this specific computer.
  • Enable both check box “Display intranet sites in Compatibility View” and “Use Microsoft compatibility lists”, and then click Close.

IE11-compatibility-view-settings-add-website

Once you turn on Compatibility View, Internet Explorer will automatically show the BAM Portal in Compatibility View each time you visit fixing all the previous behaviors problems.

BizTalk-Server-2013-R2-BAM-Portal-IE11-compatibility-problems-fixed

This section provides information about troubleshooting your BizTalk 2013 R2 Accelerator for RosettaNet (BTARN) installation.

Do not install SQL Server on the domain controller computer

If you install SQL Server on the same computer as your domain controller computer, it returns the following error message when it is trying to create the SQL send ports:

Error: Failed updating binding information.
BindingException: Could not validate TransportTypeData or Address properties for Primary Transport of Send Port ‘SendPort1’. Exception from HRESULT: 0x80131500.
Error: Failed updating binding information.
BindingException: Could not validate TransportTypeData or Address properties for Primary Transport of Send Port ‘SendPort1’. Exception from HRESULT: 0x80131500

Important: Do not install SQL Server on the domain controller computer.

Service account for the application pools must be the same as the service account for the Isolated Host and Host instances

If the service account set for the BTARN application pools is different from the Isolated Host account, BTARN will not be able to process incoming messages correctly. When the receive .aspx page calls the pipeline, the pipeline will not have access to the appropriate certificates. Therefore, it will not be able to decrypt the incoming message or validate the signature. It will also not be able to access the MessageBox database.

Related links:

This section provides detailed information about additional configurations of BizTalk 2013 R2 Accelerator for RosettaNet (BTARN) that you need to do before you start using it:

  • Start BTARN orchestrations, send ports, and receive locations, manually. These do not start automatically when you install and configure BTARN.
    • Note: You need to start the “PrivateInitiator_To_LOB” and “PrivateResponder_To_LOB” send ports before you can start the “PrivateInitiatorProcess” and “PrivateResponderProcess” orchestrations.
  • On computers where you have configured an Internet Information Services (IIS) virtual server with Secure Sockets Layer (SSL), you must configure the virtual server to accept the client certificate. For more information, see the “Step 4: Enabling Secure Sockets Layer in IIS” topic in the MSDN Double Action Tutorial.
Start BTARN orchestrations, send ports, and receive locations
  • Start “BizTalk Server Administration” console as an administrator.
  • In the “BizTalk Server Administration Console”, in the left pane, expand “BizTalk Group”, expand “Applications”, and then expand “BizTalk Application 1”.
  • Click “Send Ports”.
    • In the right pane, for each BTARN send port that is not started, right-click and then click “Start”:
      • “PrivateInitiator_To_LOB” Static One-Way send port
      • “PrivateResponder_To_LOB” Static One-Way send port
  • Click “Receive Locations”.
    • In the right pane, for each BTARN receive location that is not started, right-click and then click “Enable”.
      • “Async_Http_Receive” HTTP location
      • “Sync_Http_Receive” HTTP location
      • “LOB_To_PrivateInitiator” SQL location
      • “LOB_To_PrivateResponder” SQL location
  • Click “Orchestrations”.
    • In the right pane, for each BTARN orchestration that is not started, right-click and then click “Start”
      • Microsoft.Solutions.BTARN.CommonTypes.OdxTypes
      • Microsoft.Solutions.BTARN.CommonTypes.SendExceptionToLOB
      • Microsoft.Solutions.BTARN.CommonTypes.SendExceptionToPrivateProcess
      • Microsoft.Solutions.BTARN.PublicResponder.PublicResponderProcess
      • Microsoft.Solutions.BTARN.PublicResponder.PublicResponderV11
      • Microsoft.Solutions.BTARN.PublicInitiator.PublicInitiatorProcess
      • Microsoft.Solutions.BTARN.PublicInitiator.PublicInitiatorV11
      • Microsoft.Solutions.BTARN.PrivateResponder.PrivateResponderProcess
    • Microsoft.Solutions.BTARN.PrivateInitiator.PrivateInitiatorProcess

However, sometimes, from some strange unknown reasons, even if the installation/configuration end up successfully, some of the artifacts may not be properly created/deployed in your BizTalk environment, for example ports and/or bindings. This situation already happen to me twice in several installations.

35-BTARN-After-instalattion-configuration-problems

In this particular problem, the reason was that, because the configuration process has their half dozens of failures/limitations/bugs, some of the binding files used by BTARN (generated by configuration/installation process) was configure to use the default host – that in my case it was incorrectly defined as “BizTalkServerApplication64Host”, a non-BTARN host – in the receive and send ports. The problem was that this particular host is used only to process orchestrations and it is not associated with any BizTalk adapter.

The solution in this situations is to understand the problem and manually fix. Fortunately for us Microsoft made available all the BTARN resources: DLL, source code, binding files and so on in the BTARN installation folder, which by default is:

  • “C:\Program Files (x86)\Microsoft BizTalk 2013 R2 Accelerator for RosettaNet”

It is recommend to validate if all the resources are correctly deploy and configured in your BizTalk Server. I already face an issue where I found out after finish the installation/configuration process that none of the DLL’s where deployed correctly in the environment:

  • In the “BizTalk Server Administration Console”, in the left pane, expand “BizTalk Group”, expand “Applications”, and then expand “BizTalk Application 1”.
  • Click “Resources” and you should find there 11 BTARN DLL’s (otherwise you need to manually deploy the missing ones)
    • Microsoft.Solutions.BTARN.CommonTypes.dll
    • Microsoft.Solutions.BTARN.GlobalSchemas.dll
    • Microsoft.Solutions.BTARN.PipelineReceive.dll
    • Microsoft.Solutions.BTARN.PipelineSend.dll
    • Microsoft.Solutions.BTARN.PrivateInitiator.dll
    • Microsoft.Solutions.BTARN.PrivateResponder.dll
    • Microsoft.Solutions.BTARN.PublicInitiator.dll
    • Microsoft.Solutions.BTARN.PublicResponder.dll
    • Microsoft.Solutions.BTARN.Schemas.RNIFv11.dll
    • Microsoft.Solutions.BTARN.Schemas.RNIFv201.dll
    • Microsoft.Solutions.BTARN.Schemas.RNPIPs.dll

36-BTARN-dlls

Note: You will find these DLL’s in the BTARN installation folder under the “Bin” folder: “C:\Program Files (x86)\Microsoft BizTalk 2013 R2 Accelerator for RosettaNet\Bin”

  • The second step is to fix and import the binding files.
    • Note: You will find these Binding Files in the BTARN installation folder under the “Bin” folder.
    • Note: Before you import it you need to manually fix manually, that way the Preparing your BizTalk Server 2013 R2 environment for BTARN section is very important to avoid these type of problems after the installation and configuration process.

37-BTARN-binding-files-problem

  • In this case to solve the problem that you need to:
    • Right-click in the “BizTalk Application 1”, and select the option “Import à Bindings…” and import the following binding files that you will find in the BTARN Bin folder:
      • CommonTypesBinding
      • PrivateInitiatorBinding
      • PrivateResponderBinding
      • PublicInitiatorBinding
      • PublicResponderBinding
  • The next step is to make sure that all the artifacts (orchestrations, send ports and receive locations) are associated with the BTARN hosts:
    • BizTalkServerApplication
    • BizTalkServerIsolatedHost
  • Click “Send Ports” and check if the following BTARN send ports are running under the “BizTalkServerApplication” send handler, otherwise you should modify it.
    • “PrivateInitiator_To_LOB”
    • “PrivateResponder_To_LOB”

38-BTARN-Send-Ports

  • Click “Receive Locations”.
    • Check if the following BTARN receive location are running under the “BizTalkServerIsolatedHost” receive handler, otherwise you should modify it.
      • “Async_Http_Receive”
      • “Sync_Http_Receive”
    • And check if the following BTARN receive location are running under the “BizTalkServerApplication” receive handler, otherwise you should modify it.
      • “LOB_To_PrivateInitiator”
      • “LOB_To_PrivateResponder”

39-BTARN-Receive-Locations

  • Click “Orchestrations” and check if the following BTARN orchestrations are running under the “BizTalkServerApplication” host, otherwise you should modify it
    • Microsoft.Solutions.BTARN.CommonTypes.OdxTypes
    • Microsoft.Solutions.BTARN.CommonTypes.SendExceptionToLOB
    • Microsoft.Solutions.BTARN.CommonTypes.SendExceptionToPrivateProcess
    • Microsoft.Solutions.BTARN.PublicResponder.PublicResponderProcess
    • Microsoft.Solutions.BTARN.PublicResponder.PublicResponderV11
    • Microsoft.Solutions.BTARN.PublicInitiator.PublicInitiatorProcess
    • Microsoft.Solutions.BTARN.PublicInitiator.PublicInitiatorV11
    • Microsoft.Solutions.BTARN.PrivateResponder.PrivateResponderProcess
    • Microsoft.Solutions.BTARN.PrivateInitiator.PrivateInitiatorProcess

40-BTARN-Orchestrations

You should do all of this configuration, to prevent future problems, otherwise, sooner or later you will have problems with BTARN.

Note: The Official documentation specifies that should restart the BizTalk Server machine to apply any modifications made in configuration and permissions. Fortunately, you don’t need that.

Configuring IIS Application Pool Identities

IIS supports running 32- and 64-bit web sites in separate application pools. Regarding to BTARN is very important to:

  • Set the BTARN application pool to 32-bit mode.
  • The Identity used in the BTARN Application pools should be the same that we use in the BTARN BizTalk Host Instance Account and the BizTalk Isolated Host Instance Account. Otherwise, BTARN in some situations may not work correctly.
    • If the service account set for the BTARN application pools is different from the Isolated Host account, BTARN will not be able to process incoming messages correctly. When the receive “.aspx page” calls the pipeline, the pipeline will not have access to the appropriate certificates. Therefore, it will not be able to decrypt the incoming message or validate the signature. It will also not be able to access the MessageBox database.

To change the Identity property of BATRN application pools you need to:

  • Open the IIS Management Console
  • On the left three in the “Internet information Services (IIS) Manager” console, click in “Application Pools” node underneath the machine node.
  • Right-click the “BTARNAppPool” application pool and select “Advanced Settings…
    • Select the “Identity” list item and click the ellipsis, the following dialog appears:

41-BTARN-IIS-BTARNAppPool-Application-pool-settings

    • Select the “Custom account” option and set the same service account used for the Isolated Host and Host instances
  • Do the exact same steps for the “BTARNHttpReceivePool” application pool.

42-BTARN-IIS-Application-pools

Related links: