Deployment Framework

Editorial architecture visual showing BizTalk orchestration, receive and send ports, pipeline stages, and adapter connectors

The BizTalk Deployment Framework (BTDF) on codeplex makes me both pain and excitement. The pain being lack of information and the poor documentation, the excitement being the power of this tool and its extensibility. I am really struggling learning this tool and up to now I am only getting basic stuffs (i.e. not able to work on the environment settings out yet)

Another non-related note on the deployment binding, to make the password working, change “Password vt=”1″” to “Password vt=”8″”

This is a sample BTDF script I find useful in referencing

<?xml version=”1.0″ encoding=”utf-8″?>
<!–
  Deployment Framework for BizTalk 5.0
  Copyright (C) 2008-2010 Thomas F. Abraham and Scott Colestock
–>
<Project xmlns=”http://schemas.microsoft.com/developer/msbuild/2003″ DefaultTargets=”Deploy”>
    <PropertyGroup>
        <Configuration Condition=”‘$(Configuration)’ == ””>Debug</Configuration>
        <Platform Condition=”‘$(Platform)’ == ””>x86</Platform>
        <SchemaVersion>1.0</SchemaVersion>
        <ProjectName>XXXXX.BizTalk.SomeDomain1.Shared</ProjectName>
        <ProjectVersion>2.1.4</ProjectVersion>

        <!– Properties related to building an MSI for server deployments –>
        <ProductId>ce4acc10-477b-4358-af29-963ce15111c1</ProductId>
        <ProductUpgradeCode>80dbdc36-6b36-4ab8-a5eb-8543f0ebfdb6</ProductUpgradeCode>
        <ProductName>SomeDomain1.Shared for BizTalk</ProductName>
        <ProductVersion>1.0.0</ProductVersion>
        <Manufacturer>Deployment Framework User</Manufacturer>
        <PackageDescription>SomeDomain1.Shared</PackageDescription>
        <PackageComments>SomeDomain1.Shared</PackageComments>
        <PortBindings>PortBindings.xml</PortBindings>
        <PortBindingsMaster>PortBindingsMaster.xml</PortBindingsMaster>
       
        <!– Set following properties to true or false to include various pieces of a BizTalk deployment. –>
        <UsingMasterBindings>true</UsingMasterBindings>
        <ApplyXmlEscape>true</ApplyXmlEscape>
           
        <IncludeMessagingBindings>false</IncludeMessagingBindings>
        <IncludeSchemas>true</IncludeSchemas>
        <IncludeOrchestrations>true</IncludeOrchestrations>
        <IncludeTransforms>true</IncludeTransforms>
        <IncludeComponents>true</IncludeComponents>
        <IncludeVirtualDirectories>false</IncludeVirtualDirectories>
        <IncludePipelines>true</IncludePipelines>
        <IncludePipelineComponents>true</IncludePipelineComponents>
        <IncludeCustomFunctoids>false</IncludeCustomFunctoids>
        <IncludeVocabAndRules>false</IncludeVocabAndRules>
        <IncludeDeploymentTest>false</IncludeDeploymentTest>
        <Includelog4net>false</Includelog4net>
        <IncludeSSO>false</IncludeSSO>
        <IncludeBAM>false</IncludeBAM>
    </PropertyGroup>

    <PropertyGroup Condition=”‘$(Configuration)’ == ‘Debug’”>
        <DeploymentFrameworkTargetsPath>$(MSBuildExtensionsPath)\DeploymentFrameworkForBizTalk\5.0\</DeploymentFrameworkTargetsPath>
        <OutputPath>bin\Debug\</OutputPath>
        <DeployPDBsToGac>false</DeployPDBsToGac>
    </PropertyGroup>
    <PropertyGroup Condition=”‘$(Configuration)’ == ‘Release’”>
        <DeploymentFrameworkTargetsPath>$(MSBuildExtensionsPath)\DeploymentFrameworkForBizTalk\5.0\</DeploymentFrameworkTargetsPath>
        <OutputPath>bin\Release\</OutputPath>
        <DeployPDBsToGac>false</DeployPDBsToGac>
    </PropertyGroup>
    <PropertyGroup Condition=”‘$(Configuration)’ == ‘Server’”>
        <DeploymentFrameworkTargetsPath>Framework\</DeploymentFrameworkTargetsPath>
        <DeployPDBsToGac>false</DeployPDBsToGac>
    </PropertyGroup>

    <!– Schemas –>
    <ItemGroup>
        <Schemas Include=”Microsoft.Solutions.BTAHL7.HL7Schemas.dll”>
            <LocationPath>..\ExternalAssemblies</LocationPath>
        </Schemas>          
        <Schemas Include=”XXXXX.BizTalk.SomeProcess1.Shared.Schemas.DLL”>
            <LocationPath>..\Projects\XXXXX.BizTalk.SomeProcess1.Shared.Schemas\bin\$(Configuration)</LocationPath>
        </Schemas>
        <Schemas Include=”MultiVue Schemas.dll”>
            <LocationPath>..\ExternalAssemblies</LocationPath>
        </Schemas>
        <Schemas Include=”XXXXX.BizTalk.HL7V24.dll”>
            <LocationPath>..\ExternalAssemblies</LocationPath>
        </Schemas>
        <Schemas Include=”XXXXX.BizTalk.HL7V2X.dll”>
            <LocationPath>..\ExternalAssemblies</LocationPath>
        </Schemas>
    </ItemGroup>

    <!– Components –>
    <ItemGroup>
        <Components Include=”XXXXX.BizTalk.CommonFunctions.dll”>
            <LocationPath>..\Projects\XXXXX.BizTalk.CommonFunctions\bin\$(Configuration)</LocationPath>
        </Components>          
        <Components Include=”XXXXX.BizTalk.SomeProcess1.Shared.Components.dll”>
            <LocationPath>..\Projects\XXXXX.BizTalk.SomeProcess1.Shared.Components\bin\$(Configuration)</LocationPath>
        </Components>
        <Components Include=”XXXXX.SomeDomain1.Data.dll”>
            <LocationPath>..\ExternalAssemblies</LocationPath>
        </Components>
        <Components Include=”Utility.HL7.dll”>
            <LocationPath>..\ExternalAssemblies</LocationPath>
        </Components>
        <Components Include=”CCD.dll”>
            <LocationPath>..\ExternalAssemblies</LocationPath>
        </Components>
    </ItemGroup>

    <!– Pipelines –>
    <ItemGroup>
        <Pipelines Include=”XXXXX.BizTalk.SomeProcess1.Shared.Pipelines.dll”>
            <LocationPath>..\Projects\XXXXX.BizTalk.SomeProcess1.Shared.Pipelines\bin\$(Configuration)</LocationPath>
        </Pipelines>
    </ItemGroup>

    <!– PipelineComponents –>
    <ItemGroup>
        <PipelineComponents Include=”XXXXX.BizTalk.SomeProcess1.Shared.PipelineComponents.dll”>
            <LocationPath>..\Projects\XXXXX.BizTalk.SomeProcess1.Shared.PipelineComponents\bin\$(Configuration)</LocationPath>
        </PipelineComponents>
        <PipelineComponents Include=”BizTalk.SendMessageStandardizer.dll”>
            <LocationPath>..\ExternalAssemblies</LocationPath>
        </PipelineComponents>
        <PipelineComponents Include=”XXXXX.Biztalk.HL724Standardizer.dll”>
            <LocationPath>..\Projects\HL724Standardizer\bin\$(Configuration)</LocationPath>
        </PipelineComponents>
    </ItemGroup>

    <!– CustomFunctoids
    <ItemGroup>
        <CustomFunctoids Include=”ContextAccessor.dll”>
            <LocationPath>..\ExternalAssemblies</LocationPath>
        </CustomFunctoids>
    </ItemGroup>
    –>

    <!– Transforms –>
    <ItemGroup>
        <Transforms Include=”XXXXX.BizTalk.SomeProcess1.Shared.Transforms.dll”>
            <LocationPath>..\Projects\XXXXX.BizTalk.SomeProcess1.Shared.Transforms\bin\$(Configuration)</LocationPath>
        </Transforms>
    </ItemGroup>

    <!– Orchestrations –>
    <ItemGroup>
        <Orchestrations Include=”XXXXX.BizTalk.SomeProcess1.Shared.Orchestrations.dll”>
            <LocationPath>..\Projects\XXXXX.BizTalk.SomeProcess1.Shared.Orchestrations\bin\$(Configuration)</LocationPath>
        </Orchestrations>
    </ItemGroup>
   
    <Import Project=”$(DeploymentFrameworkTargetsPath)BizTalkDeploymentFramework.targets” />

    <Target Name=”CustomDeployTarget”>
    </Target>
   
    <Target Name=”CustomRedist”>
        <Copy SourceFiles=”EnvironmentSettings\SettingsFileGenerator.xml” DestinationFolder=”$(RedistDir)\Deployment\EnvironmentSettings” />
    </Target>
</Project>

Next step

Need this reviewed in a real system?

Use the article as a starting point, then bring the actual decision, constraints, and failure paths into an architecture review.

Join the discussion

Sign in to comment. Signed-in comments appear immediately.

Join the discussion