BizTalk Migration

Migrate from Microsoft BizTalk Server to Apache Camel 4.x

Overview

Migrate from Microsoft BizTalk Server to Apache Camel 4.x using Camel-Kit’s automated parsing capabilities. Camel-Kit analyzes BizTalk orchestrations (.odx), pipelines (.btp), schemas (.xsd), maps (.btm), and port binding files to produce equivalent Camel YAML routes.

Supported BizTalk versions: 2004, 2006, 2006 R2, 2009, 2010, 2013, 2013 R2, 2016, 2020.

Key features:

  • Orchestration (.odx) to Camel YAML routes with equivalent control flow (37 shape types supported)
  • Maps (.btm) to XSLT stylesheets via camel-xslt-saxon (45 functoid type mappings)
  • Pipelines (.btp) to Camel processor chains
  • Port bindings to Camel endpoint configuration
  • UTF-16 binding file detection (BizTalk Admin Console exports)

What Gets Parsed

ArtifactFile ExtensionDescription
Orchestrations.odxBusiness process flows with shapes
Maps.btmData transformation definitions with functoids
Pipelines.btpReceive and send processing stages
Schemas.xsdMessage format definitions
Bindings.xmlPort and adapter configurations

Adapter Mapping

BizTalk adapters map to corresponding Camel components. The AI automatically selects the appropriate Camel component based on the BizTalk adapter configuration.

BizTalk AdapterCamel ComponentNotes
FILEcamel-file
FTPcamel-ftp
FTPScamel-ftpFTPS protocol
SFTPcamel-ftpSFTP protocol
HTTP/HTTPScamel-http, camel-rest
SOAPcamel-cxf
SQL Servercamel-sql, camel-jdbc
Oracle Databasecamel-sql, camel-jdbc
IBM Db2camel-sql, camel-jdbc
MSMQUser decision requiredSee note below
MQ Seriescamel-jmsWith IBM MQ client
SMTPcamel-mail
POP3/IMAPcamel-mail
WCF-BasicHttpcamel-platform-http, camel-cxf
WCF-WSHttpcamel-cxf
Azure Service Buscamel-azure-servicebusBizTalk 2016+

Note on MSMQ: There is no direct Camel equivalent for MSMQ. When encountered, the AI will ask you to choose between ActiveMQ Artemis (camel-jms), RabbitMQ (camel-rabbitmq), or Azure Service Bus (camel-azure-servicebus) as the target messaging platform.

Orchestration Shape Mapping

BizTalk orchestration shapes map to Camel EIPs and route patterns:

BizTalk ShapeCamel EIP / Pattern
Receivefrom() consumer
Sendto() producer
Decide / Switchchoice EIP
Looploop EIP
ForEachsplit EIP
Parallel Actionsmulticast with parallelProcessing(true)
Call Orchestrationto("direct:...")
Start OrchestrationwireTap
Scope / Try-CatchdoTry / doCatch / doFinally
Delaydelay EIP
Construct Message + Transformto("xslt-saxon:...")
Expressionprocess() or Groovy script

Note: The Suspend Shape is NOT supported. BizTalk dehydration has no Camel equivalent - the AI flags this for manual review.

Pipeline Mapping

Pipeline ComponentCamel Pattern
XML Disassemblersplit() + unmarshal().jacksonXml()
Flat File Disassemblerunmarshal().flatpack() or .bindy()
JSON Decoderunmarshal().jackson()
XML Validatorto("validator:schema.xsd")
MIME/SMIME Decoderunmarshal().mime()
Pipeline ComponentCamel Pattern
XML Assemblermarshal().jacksonXml() or aggregate()
Flat File Assemblermarshal().flatpack() or .bindy()
JSON Encodermarshal().jackson()
MIME/SMIME Encodermarshal().mime()

Map & Functoid Conversion

BizTalk maps (.btm) contain XSLT-based transformations enhanced with visual functoids. Camel-Kit converts these to XSLT 2.0 stylesheets or Groovy scripts depending on complexity.

Example: Order Processing Migration

BizTalk Orchestration
<ServiceBody>
  <ReceiveShape Name="ReceiveOrder"
    PortName="OrderPort" Operation="SubmitOrder"/>
  <TransformShape Name="MapOrder"
    Map="OrderToInvoiceMap"/>
  <DecisionShape Name="CheckAmount">
    <Branch Expression="OrderAmount > 1000">
      <SendShape Name="SendHighValue"
        PortName="HighValuePort"/>
    </Branch>
    <DefaultBranch>
      <SendShape Name="SendStandard"
        PortName="StandardPort"/>
    </DefaultBranch>
  </DecisionShape>
</ServiceBody>
Camel YAML
- route:
    id: process-order
    from:
      uri: "platform-http:/api/orders"
      parameters:
        httpMethodRestrict: POST
      steps:
        - to: "xslt-saxon:transforms/order-to-invoice.xslt"
        - choice:
            when:
              - simple: "${body.amount} > 1000"
                steps:
                  - to: "direct:high-value-processing"
            otherwise:
              steps:
                - to: "direct:standard-processing"

Features Requiring Manual Review

The AI flags the following items for manual review during migration:

  • Scripting functoids with C#/VB.NET code - converted to Groovy but requires validation
  • Custom .NET pipeline components - no automatic equivalent, requires custom Camel processor
  • MSMQ adapter - requires replacement decision (ActiveMQ, RabbitMQ, or Azure Service Bus)
  • Suspend Shape - no Camel equivalent, redesign required
  • EDI Disassembler/Assembler - use camel-edi or camel-edifact with custom mapping
  • External assembly calls in expressions - requires Java/Groovy reimplementation