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 migration candidates for Camel YAML routes; unsupported or ambiguous constructs remain explicit for manual review.

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

Key features:

  • Orchestration (.odx) analysis with 38 recognized shape element names; each recognized shape can be automatic, manual-review, or unsupported for conversion
  • Maps (.btm) to canonical DataMapper mappings, rendered as inline Groovy or XSLT by the shared engine-selection rule (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

For each BizTalk adapter, the AI proposes a catalog-verified Camel component when a direct mapping exists. Otherwise it records the gap and asks for a target-platform decision.

BizTalk AdapterCamel ComponentNotes
FILEcamel-file
FTPcamel-ftp
FTPScamel-ftpFTPS protocol
SFTPcamel-ftpSFTP protocol
HTTP/HTTPSReceive: catalog-verified target-runtime consumer such as camel-platform-http; send: camel-httpDirection determines the component
SOAPcamel-cxf-soap (cxf: endpoint scheme)
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-soapDirection and SOAP requirements determine the component
WCF-WSHttpcamel-cxf-soapcxf: endpoint scheme
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), a runtime- and catalog-verified RabbitMQ component such as camel-spring-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 + TransformCanonical DataMapper mapping: inline Groovy or xslt-saxon, as selected
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 DisassemblerCandidate: split plus the Jackson XML data format with the required POJO/list model; otherwise a generated or custom processor
Flat File DisassemblerCandidate: Flatpack with a definition or Bindy with an annotated model; otherwise a custom processor
JSON DecoderJSON/Jackson data format
XML Validatorto("validator:schema.xsd")
MIME Decoderunmarshal().mimeMultipart() (camel-mail)
S/MIME DecoderManual, catalog-verified crypto/mail or custom implementation after certificate and keystore review
Pipeline ComponentCamel Pattern
XML AssemblerCandidate: Jackson XML data format with a POJO model; BizTalk envelope assembly may require a generated or custom processor
Flat File AssemblerCandidate: Bindy with an annotated model or a generated/custom serializer
JSON EncoderJSON/Jackson data format
MIME Encodermarshal().mimeMultipart() (camel-mail)
S/MIME EncoderManual, catalog-verified crypto/mail or custom implementation after certificate and keystore review

Map & Functoid Conversion

BizTalk maps (.btm) define transformations through visual functoids. Camel-Kit first extracts the complete semantic mapping, then applies the shared DataMapper rule: inline Groovy when both schemas are absent or the mapping has fewer than 20 leaf fields; XSLT only when the mapping has at least 20 leaf fields and at least one schema.

Example: Order Processing Migration

This example assumes OrderToInvoiceMap has at least 20 leaf fields and an available schema, so the canonical engine selection is XSLT; the map is abbreviated below.

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:
        - step:
            id: kaoto-datamapper-a1b2c3d4
            steps:
              - to:
                  id: kaoto-datamapper-xslt-a1b2
                  uri: "xslt-saxon:kaoto-datamapper-a1b2c3d4.xsl"
        - 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 - preserved for manual review; compatible Groovy may be suggested, otherwise use a custom processor on Spring Boot or Quarkus
  • 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 - select a catalog-verified DFDL or Smooks path from the actual EDI format and schema, then review the mapping manually
  • External assembly calls in expressions - requires Java/Groovy reimplementation