BizTalk Application Deployment


Published on

Managing the migration and elevation of your BizTalk applications

Published in: Technology
  • Be the first to comment

  • Be the first to like this

No Downloads
Total views
On SlideShare
From Embeds
Number of Embeds
Embeds 0
No embeds

No notes for slide
  • 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
  • BizTalk Application Deployment

    1. 1. BizTalk DeploymentManaging Migration of Your BizTalk Apps Daniel Toomey presenter
    2. 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
    3. 3. BizTalk Deployment Artefacts Assemblies:  BizTalk Assemblies (maps, schemas, orchestrations, pipelines)  .NET Helper Assemblies Physical Bindings (send/receive ports) Runtime Components:  Hosts / Host Instances  Handlers Database Scripts Rules & Policies Configuration Files COM Components BAM definitions BAS Artefacts (partner profiles, templates, etc) Security Certificates Virtual Directories Custom / Third-Party Adapters
    4. 4. BizTalk Applications Introduced in BizTalk Server 2006 Logical container for a collection of related solution artefacts Facilitates application level:  Deployment (export MSI)  Start / Stop  Resource management  Dependencies DEFAULT: BizTalk Application 1
    5. 5. BizTalk Applications
    6. 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. 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. 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. 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. 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. 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. 12. Environment VariablesDeployment BTAD_ChangeRequestAction BTAD_InstallMode BTAD_HostClassStates Values Values ValuesImport without Create Import ConfigurationDboverwrite flagImport with Update Import ConfigurationDboverwrite flagInstall Update Install BizTalk Host InstanceUninstall Delete Uninstall BizTalk Host InstanceImport Delete Import ConfigurationDbRollbackInstall Delete Install BizTalk Host InstanceRollback
    13. 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
    14. 14. Typical Manual Install Steps Create an application Add references (optional) Add assemblies Create Receive Ports Create Receive Locations Create Send Ports Configure application Start application
    15. 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. 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. 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. 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. 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. 20. Importing/Installing a BizTalkApplication 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. 21. Importing/Installing a BizTalkApplication 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
    22. 22. Command Line Import/Install Import: BTSTask ImportApp /Package:C:SampleApp.msi /Environment:TEST /ApplicationName:“SampleAppName" /Overwrite Install: msiexec /i “C:SampleApp.msi" /passive /log “C:SampleApp.log”
    23. 23. What’s Missing?? Creating hosts / host instances Modifying host / host instance properties Starting / Stopping host instances Creating send/receive handlers Adding Message Boxes Modifying Message Box properties The Answer??  ExplorerOM  WMI  BTSTask
    24. 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
    25. 25. What Can You Do With ExplorerOM? Create / modify / delete Applications 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 Add / delete parties
    26. 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. 27. Enumerate Send Ports Sampleusing 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. 28. BtsCatalogExplorer MethodsMethod Name DescriptionAddNewApplication* 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 SendPortGroupsRemoveSendPortGroup 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. 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. 30. ApplicationStartOption EnumerationApplication app = catalog.Applications[“My Application"]app.Start(StartApplicationOptions.StartAll);Enumeration Value DescriptionDeployAllPolicies Specifies all policies to be deployedEnableAllReceiveLocations Specifies all receive locations to be enabledStartAllOrchestrations Specifies all orchestrations to be startedStartAllSendPortGroups Specifies all send port groups to be startedStartAllSendPorts Specifies all send ports to be startedStartReferencedApplications Specifies all referenced applications to be startedStartAll Specifies all of the preceding to be enabled and started
    31. 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: ea15-4661-8da4-55bbc145c30e&displaylang=en
    32. 32. What Can You Do With WMI? Deploy an assembly Create / modify / delete hosts / host instances 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 Add / modify / delete message box
    33. 33. Basic WMI Operation - Createusing System.Management;// sample to show MSBTS_HostSetting instance creationpublic 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. 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:
    35. 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. 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. 37. Deployments Made Easy…(?) Scott Colestock’s Deployment Framework for BizTalk “…goes far beyond BizTalk’s out-of-the-box deployment functionality” Includes additional tools to help developers Integration with Visual Studio, NUnit, Log4Net
    38. 38. Deployment Framework for BizTalk
    39. 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. 40. References Best Practices for Deploying a BizTalk Application (TechNet): Structure of a BizTalk Binding File (MSDN): Customizing Binding Files (TechNet): Using Pre- & Post-Processing Scripts to Customise Application Deployment (TechNet): BTSTask Command Line Reference (MSDN): ExplorerOM Namespace Documentation (MSDN): 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
    41. 41. Questions?