2. Scope
Not about BizTalk Server product/platform
installation
BizTalk Application/Solution deployment
BizTalk Server 2006+ only
Key concepts & principles
Out-of-the-Box tools only
6. Binding Files
Describe BTS artefacts stored in the BizTalk
Mgmt Database and their relationships
Exportable / Importable from BizTalk Group
or Application
Represented in XML
How to validate binding schema:
xsd.exe "C:Program FilesMicrosoft BizTalk Server
2006Microsoft.BizTalk.Deployment.dll" /type:BindingInfo
Sample binding file:
C:Program FilesMicrosoft BizTalk Server 2006SDKSamples
ApplicationDeploymentCreateAppBindingsCreateApplicationSampleBindings.xml
7. Binding File Structure
ModuleRefCollection: Declares all the BizTalk assemblies and
orchestrations used within the application. It also specifies
which physical ports are used for each orchestration.
SendPortCollection: Contains all the information necessary to
create or update all the send ports.
DistributionListCollection: Contains all the information
necessary to create or update all the distribution lists (send port
groups).
ReceivePortCollection: Contains all the information necessary
to create or update all the receive ports and receive locations.
PartyCollection: Contains all the information necessary to
create or update all the parties.
8. Importing Binding Files
Binding Files will create:
Send Ports
Receive Ports
Receive Locations
Parties
Binding Files will not create:
Host Definitions
Host Instances
Directory Structures
Passwords for credentials
9. Processing Scripts
Can be bundled within an MSI file
Automatically run when importing, installing, or
uninstalling a BizTalk application
Two types:
Pre-processing (run at beginning of import/installation
process)
Post-processing (run at end of import/installation
process)
Multiple script types supported:
.bat, .cmd., .com, .exe, .vbs, .vbe, .js, .wsh, .wsf
Any action that can be done in a script can be
executed within the exported MSI*
*excluding certain BTSTask commands during application import
10. Processing Scripts
Ideal tasks for a processing script:
Create directory structure
Add assemblies to the GAC
Register COM components
Create/populate a database
Install a config file
Sample scripts:
C:Program FilesMicrosoft BizTalk Server 2006
SDKSamplesApplicationDeploymentTemplate
11. Processing Scripts
Use environment variables to control execution:
%BTAD_InstallMode%
Create
Update
Delete
%BTAD_ChangeRequestAction%
Import
Install
Uninstall
Example:
REM ### Create directories prior to BizTalk assembly deployment
if "%BTAD_InstallMode%"=="Install" AND "%BTAD_ChangeRequestAction%"=="Update“
(
REM ### Create the folders which will drop messages
mkdir %BTAD_InstallDir%TestDocumentsIn
mkdir %BTAD_InstallDir%TestDocumentsOut
)
12. Environment Variables
Deployment BTAD_ChangeRequestAction BTAD_InstallMode BTAD_HostClass
States Values Values Values
Import without
Create Import ConfigurationDb
overwrite flag
Import with
Update Import ConfigurationDb
overwrite flag
Install Update Install BizTalk Host Instance
Uninstall Delete Uninstall BizTalk Host Instance
Import
Delete Import ConfigurationDb
Rollback
Install
Delete Install BizTalk Host Instance
Rollback
13. Import vs. Install
STEP ONE: Import
Import application to BizTalk Group
Registers components in BizTalkMgmtDb
Covers all BizTalk servers in group
STEP TWO: Install
Must be performed on each machine in the
BizTalk Group
Installs physical copies of registered
components
GAC, COM, Certificates, Virtual Directories
15. Typical Deployment Cycle
SOURCE SERVER:
Deploy solution from Visual Studio
Configure the BizTalk application
Export bindings
Add artefacts to the application
Export application to MSI file
TARGET SERVER:
Import the MSI file
Install the MSI file
Start the application and test it
16. Visual Studio Deployment Steps
In Visual Studio 2005:
In Project Properties, specific BizTalk Application name
Choose “Deploy” from Solution file
In BizTalk Admin Console:
Create Receive Ports
Create Receive Locations
Create Send Ports
Configure application (bindings)
Start application
Re-deployment from VS usually maintains
configuration, assuming same version number
17. Exporting a BizTalk Application
Export the Bindings
From BizTalk Admin Console
Right-click app choose “Export Bindings…”
Save multiple copies
Edit each copy in an XML editor (environment
specific settings)
Binding files can be added to application as
resources (next slide)
Copies can be given a target environment
label (e.g. “TEST”, “PROD”)
18. Exporting a BizTalk Application
Add resource files
From BizTalk Admin Console
Right-click app choose “Add Resources…”
Choose resource type:
Assembly (BizTalk or .NET helper)
Binding (can specify target environment)
Pre/Post-Processing Script
BAM
File
COM (can choose to register)
“Overwrite all…” – replaces version in GAC
19. Exporting a BizTalk Application
Export the MSI
From BizTalk Admin Console
Right-click app choose “Export MSI file…”
Step through the wizard
Choose/Specify:
Resources (assemblies, bindings)
IIS Hosts
Dependencies (specified for you)
Destination
20. Importing/Installing a BizTalk
Application
Import the MSI
From BizTalk Admin Console
Right-click app choose “Import MSI file…”
Step through the wizard
Choose/Specify:
Application name
Overwrite resources
Environment (for binding files)
Adds references/component/binding files to BizTalk
Management DB
Only need to do this once for BizTalk Group
21. Importing/Installing a BizTalk
Application
Install the MSI
Double-click the MSI file itself (Windows
Explorer)
Step through the wizard
Choose/Specify:
Application name
Overwrite resources
Environment (for binding files)
Adds physical components to current machine
Need to do this on each server in the BizTalk
Group
24. ExplorerOM
BizTalk Explorer Object Model
Set of .NET classes/interfaces providing API
to the BizTalk Management Database
Add reference:
[BizTalk Installation directory]Developer ToolsMicrosoft.Biztalk.ExplorerOM.dll
Three container classes:
BtsCalalogExplorer
BtsApplication
Assembly
26. BtsCatalogExplorer Class
Fundamental class: provides access to the
BizTalk Management Database
All BizTalk artefacts within a group are
accessible once this class is instantiated
Must set the ConnectionString property on
the instance
27. Enumerate Send Ports Sample
using System;
using System.Text;
using Microsoft.BizTalk.ExplorerOM;
namespace SendPorts
{
class Program
{
static void Main(string[] args)
{
EnumerateSendPorts();
Console.ReadKey();
}
public static void EnumerateSendPorts()
{
BtsCatalogExplorer catalog = new BtsCatalogExplorer();
catalog.ConnectionString =
"Server=.;Initial Catalog=BizTalkMgmtDb;Integrated Security=SSPI;";
foreach (SendPort sendPort in catalog.SendPorts )
{
Console.WriteLine("tPortName:{0},Status:{1}",
sendPort.Name ,sendPort.Status);
}
}
}
}
28. BtsCatalogExplorer Methods
Method Name Description
AddNewApplication* Creates and adds a new Application object to the Application collection.
RemoveApplication* Removes the specified application from Application collection.
AddNewParty Creates and adds a new Party object to the Parties collection.
RemoveParty Removes the specified party from the Parties collection.
AddNewReceivePort Creates and adds a new ReceivePort object to the ReceivePorts collection.
RemoveReceivePort Removes the specified receive port from the ReceivePorts collection.
AddNewSendPort Creates and adds a new SendPort object to the SendPorts collection.
RemoveSendPort Removes the specified send port from the SendPorts collection.
AddNewSendPortGroup Creates and adds a new SendPortGroup object to the SendPortGroups
RemoveSendPortGroup Removes the specified send port group.
SaveChanges Commits all BtsCatalogExplorer object changes to the Management Database.
DiscardChanges Discards all BtsCatalogExplorer object changes.
*Specific to BizTalk Server 2006.
29. Application Class
Similar to BtsCatalogExplorer class, but
specific to an application
Allows you to start, stop applications
Allows you to add & remove references to
other applications
Requires reference to an instance
30. ApplicationStartOption Enumeration
Application app = catalog.Applications[“My Application"]
app.Start(StartApplicationOptions.StartAll);
Enumeration Value Description
DeployAllPolicies Specifies all policies to be deployed
EnableAllReceiveLocations Specifies all receive locations to be enabled
StartAllOrchestrations Specifies all orchestrations to be started
StartAllSendPortGroups Specifies all send port groups to be started
StartAllSendPorts Specifies all send ports to be started
StartReferencedApplications Specifies all referenced applications to be started
StartAll Specifies all of the preceding to be enabled and started
31. WMI Script
Windows Management Instrumentation
Standard API for computer system
management
Requires System.Management assemble
Access to a host of BizTalk classes and
events
Use WMI Code Creator:
http://www.microsoft.com/downloads/details.aspx?familyid=2cc30a64-
ea15-4661-8da4-55bbc145c30e&displaylang=en
33. Basic WMI Operation - Create
using System.Management;
// sample to show MSBTS_HostSetting instance creation
public void CreateHost(string ServerName, string HostName, int HostType, string NTGroupName, bool
AuthTrusted)
{
try
{
PutOptions options = new PutOptions();
options.Type = PutType.CreateOnly;
// Create a ManagementClass object and spawn a ManagementObject instance
ManagementClass objHostSettingClass = new ManagementClass("" + ServerName +
"rootMicrosoftBizTalkServer", "MSBTS_HostSetting", null);
ManagementObject objHostSetting = objHostSettingClass.CreateInstance();
// Set the properties for the Host
objHostSetting["Name"] = HostName;
objHostSetting["HostType"] = HostType;
objHostSetting["NTGroupName"] = NTGroupName;
objHostSetting["AuthTrusted"] = AuthTrusted;
// Creating the host
objHostSetting.Put(options);
System.Console.WriteLine(string.Format("The Host '{0}'has been created successfully",
HostName ));
}
catch(Exception ex)
{
System.Console.WriteLine("CreateHost - " + HostName + " - failed: " + ex.Message);
}
}
34. BTSTask
Replaces deprecated BTSDeploy command
No wizard included (use BizTalk Admin Console)
Allows you to:
Add, enumerate, remove, and uninstall BizTalk
applications.
Add, list, and remove artefacts from a BizTalk
application.
Export and import BizTalk applications from an MSI
file.
Export and import binding information from BizTalk
binding files.
Command Line Reference:
http://msdn.microsoft.com/en-us/library/aa559686.aspx
35. What Can You Do With BTSTask?
Create / modify / delete applications
Deploy assemblies
Browse orchestration artefacts
Bind / enlist / start orchestrations*
Stop / unenlist / unbind orchestrations*
Add / enlist / start send & receive** ports
Stop / unenlist / delete send & receive** ports
Add / remove maps for inbound / outbound
transformations**
Enable / disable receive locations**
* via processing scripts only
**via binding files only
36. Putting It All Together…
Export your bindings / MSI files
Create .NET assembly as an API using
ExplorerOM classes (start with sample in
SDK)
Create a master batch script that manages
the full deployment using:
BTSTask
ExplorerOM assembly
MSIExe
One-click deployment/migration!!
37. Deployments Made Easy…(?)
Scott Colestock’s Deployment Framework
for BizTalk
http://www.codeplex.com/biztalkdeployment
“…goes far beyond BizTalk’s out-of-the-box
deployment functionality”
Includes additional tools to help developers
Integration with Visual Studio, NUnit, Log4Net
39. Summary
BizTalk application deployment is inherently more complex and
broader in scope than most other application deployments
Requires understanding of the components and configuration
involved:
Database Import vs. Server Installation
Logical Ports (Assemblies) vs. Physical Ports
Hosts vs. Applications
Auxiliary components/artefacts
Out-of-the-box tools can facilitate the process greatly (esp.
since BizTalk 2006)
Time spent compiling scripts / deployment classes can save
heaps of time and errors later
Potential use of third-party deployment tools
40. References
Best Practices for Deploying a BizTalk Application (TechNet):
http://technet.microsoft.com/en-us/library/aa577468.aspx
Structure of a BizTalk Binding File (MSDN):
http://msdn.microsoft.com/en-us/library/aa559878.aspx
Customizing Binding Files (TechNet):
http://technet.microsoft.com/en-us/library/aa559898.aspx
Using Pre- & Post-Processing Scripts to Customise Application Deployment (TechNet):
http://technet.microsoft.com/en-us/library/aa559904.aspx
BTSTask Command Line Reference (MSDN):
http://msdn.microsoft.com/en-us/library/aa559686.aspx
ExplorerOM Namespace Documentation (MSDN):
http://msdn.microsoft.com/en-us/library/microsoft.biztalk.explorerom.aspx
BizTalk 2006 Recipes: A Problem – Solution Approach
Mark Beckner, Benjamin Goeltz, Brandon Gross, Brennan O’Reilly, Stephen Roger, Mark Smith &
Alexander West
Apress Books, ISBN-13 (pbk): 978-1-59059-711-8
Pro BizTalk 2006: Solutions to Real World Issues for BizTalk Professionals
George Dunphy and Ahmed Metwally
Apress Books, ISBN-13 (pbk): 978-1-59059-699-9
Windows Client App: Limited # of artefacts to deploy Web Client App: Slightly more complex BizTalk (Integration) App: Could be massive in terms of breadth & quantity
Export / Import MSIs & Binding Files Start / Stop and all orchestrations, send ports, receive ports, etc Default application created automatically (BTS 2004 migration) Resources: Scripts, assemblies, BAM definitions, certificates, rules, etc
New BTS Admin Console in 2006 Explorer tree groups by application
Files are easily editable for environment-specific settings Will create receive/send ports Do not create hosts, host instances, handlers
Show a sample file
LIMITATION: 20 pages
LIMITATION: 20 pages
Numerous, tedious steps Very error prone Visual Studio deployment helps with first two, and subsequent
Typical steps when developing a BizTalk solution Bindings are stored in an application folder and re-applied, IF artefacts do not change Watch out for new versions of helper classes!!
Automatically manages dependencies between application-level artefacts Exact corresponding selections in ApplicationStopOption enumeration