luigidemasi opened a new issue, #8:
URL: https://github.com/apache/camel-kit/issues/8

   > Imported from 
[luigidemasi/camel-kit#11](https://github.com/luigidemasi/camel-kit/issues/11), 
opened by [luigidemasi](https://github.com/luigidemasi) on 2026-04-29.
   > Closed by commit 
[cba7a8e](https://github.com/luigidemasi/camel-kit/commit/cba7a8e899f9f2889b04e92f7a3b6c344ba62e12).
   
   ---
   
   ## Description
   
   Add support for migrating Microsoft BizTalk Server integrations to Apache 
Camel 4.x YAML DSL. This would extend camel-kit's migration capabilities 
(currently supporting MuleSoft, Camel 2.x/3.x, and JBoss Fuse) to cover BizTalk 
orchestrations, maps, schemas, and pipelines.
   
   BizTalk Server is widely used in enterprise integration scenarios, and many 
organizations are looking to modernize away from it. Providing a structured, 
graph-accelerated migration path — similar to what camel-kit already offers for 
MuleSoft — would significantly reduce the effort and risk of these migrations.
   
   ### Reference Implementation
   
   The open-source 
[BizTalkMigrationStarter](https://github.com/luigidemasi/BizTalkMigrationStarter)
 project (which migrates BizTalk artifacts to Azure Logic Apps) provides a 
well-tested reference for parsing BizTalk artifacts. Its parsing strategies — 
ODX text extraction, BTM functoid/link resolution, BTP XmlSerializer 
deserialization, and binding LINQ-to-XML parsing — should inform the design of 
the camel-kit graph parser.
   
   ## BizTalk Artifact Types
   
   ### Orchestrations (`.odx`)
   - Primary flow definitions written in XLANG/s
   - **File format:** Text file with embedded XML — XML content sits between 
`<?xml` declaration and `#endif` sentinel; binary designer metadata follows
   - **Namespace:** `http://schemas.microsoft.com/BizTalk/2003/DesignerData` 
(prefix `om`)
   - **Key elements:** `Module` → `ServiceDeclaration` → `ServiceBody` → shapes 
hierarchy
   - **38+ shape types:** Receive, Send, Construct, Transform, Decide, Switch, 
Loop, ForEach, While, Parallel, Listen, Call, Scope, Catch, Delay, Expression, 
Terminate, Suspend, Compensate, Call Rules, Correlation Declaration, etc.
   - **Ports:** Physical/Logical/Direct bindings with adapter configuration
   - **Messages:** Typed with direction (In, Out, InOut) and schema references
   - **Web References:** MethodMessageType elements for SOAP proxy types (no 
ServiceDeclaration)
   
   ### Maps (`.btm`)
   - XSLT-based data transformations between schemas
   - **File format:** XML with root element `<mapsource>`
   - **Key elements:** `SrcTree`, `TrgTree` (schema references), `Functoid` 
nodes, `Link` nodes
   - **50+ functoid types:** String (Concatenate, Substring, Replace), Math 
(Add, Multiply, Modulo), Logical (AND, OR, NOT, comparisons), Looping, Mass 
Copy, Scripting (custom C#/VB code), Database lookups, Value mapping
   - **Links:** Wire functoid inputs/outputs with `LinkFrom`/`LinkTo` 
references and copy directives
   - **External XSD references:** Source and target schemas loaded from 
`SchemaReference` elements
   
   ### Pipelines (`.btp`)
   - Receive and send pipeline definitions for message processing
   - **File format:** XML with root element `<Document>` and `PolicyFilePath` 
attribute
   - **Category GUIDs:** Receive (`f66b9f5e-43ff-4f5f-ba46-885348ae1b4e`), Send 
(`8c6b051c-0ff5-4fc2-9ae5-5016cb726282`)
   - **Stages:** Decode, Disassemble, Validate, Transform, Encode — each with 
execution mode (All/FirstMatch)
   - **30+ built-in components:** XML Disassembler/Assembler, Flat File 
Disassembler/Assembler, MIME/SMIME Decoder/Encoder, JSON Decoder/Encoder, Party 
Resolution, XML Validator
   
   ### Binding Files (`.xml`)
   - Port and adapter configuration
   - **Contains:** Receive locations with transport metadata, send ports with 
filters and transforms
   - **Adapter settings:** WCF, FTP, FILE, HTTP, MSMQ, SQL, etc.
   - **Content-based routing:** Filter expressions on promoted properties
   
   ### Schemas (`.xsd`)
   - W3C XML Schema definitions for message types
   - Referenced by orchestrations and maps
   
   ## Scope
   
   ### Graph Parser (`camel-kit-graph`)
   
   - New `BizTalkOrchestrationParser implements GraphParser` to parse BizTalk 
artifacts:
     - **ODX parsing:** Text extraction (locate XML between markers), then 
XPath-based element extraction using `om` namespace
     - **BTM parsing:** XML parsing of `<mapsource>` root, extract functoid 
chains and schema links
     - **BTP parsing:** XML deserialization of `Document > Stages > Components` 
hierarchy
     - **Binding parsing:** Extract adapter/port configuration for endpoint 
mapping
     - **XSD handling:** Schema catalog for message type resolution
   - New `NodeType` enum values: `BIZTALK_ORCHESTRATION`, `BIZTALK_SHAPE`, 
`BIZTALK_MAP`, `BIZTALK_FUNCTOID`, `BIZTALK_SCHEMA`, `BIZTALK_PIPELINE`, 
`BIZTALK_PIPELINE_COMPONENT`, `BIZTALK_PORT`, `BIZTALK_ADAPTER`, 
`BIZTALK_MESSAGE`
   - New `EdgeType` enum values: `BIZTALK_ORCHESTRATION_CONTAINS`, 
`BIZTALK_USES_MAP`, `BIZTALK_USES_SCHEMA`, `BIZTALK_CALLS_ORCHESTRATION`, 
`BIZTALK_PORT_BINDING`, `BIZTALK_FUNCTOID_CHAIN`, `BIZTALK_PIPELINE_STAGE`
   - Register parser in `GraphBuilder.parsers` list
   - Auto-detection via namespace 
`http://schemas.microsoft.com/BizTalk/2003/DesignerData` for ODX, `<mapsource>` 
root for BTM, `<Document PolicyFilePath=` for BTP
   
   ### Init Command
   
   - Add `biztalk` as a valid `--source-platform` option value
   
   ### Migration Skill (`/camel-migrate`)
   
   - Add BizTalk vendor detection rules (`.odx`, `.btm`, `.btp` files; BizTalk 
namespaces; pom/csproj with BizTalk references)
   - Create vendor-specific migration guides:
     - `guides/biztalk-phase1.md` — Discovery & analysis (orchestration 
inventory, shape catalog, adapter mapping, schema catalog, functoid complexity 
assessment, BRD generation)
     - `guides/biztalk-phase2.md` — Implementation (route design, TDD, YAML 
generation)
     - `guides/biztalk-component-mapping.md` — BizTalk adapter → Camel 
component mapping
     - `guides/biztalk-map-conversion.md` — BizTalk Map functoid chains → Camel 
transformation patterns (XSLT, DataSonnet, or bean processing)
     - `guides/biztalk-expression-mapping.md` — XLANG/s expressions → Camel 
Simple/OGNL/Groovy expressions
     - `guides/biztalk-pipeline-mapping.md` — BizTalk pipeline stages → Camel 
route patterns (interceptors, data formats, validators)
   
   ### Component Mapping (initial set)
   
   | BizTalk Adapter/Feature | Camel Component |
   |---|---|
   | FILE adapter | `camel-file` |
   | FTP/FTPS adapter | `camel-ftp` |
   | SFTP adapter | `camel-ftp` (sftp://) |
   | SQL Server adapter | `camel-sql` / `camel-jdbc` |
   | WCF-BasicHttp / WCF-WSHttp | `camel-cxf` |
   | WCF-NetTcp | `camel-netty` |
   | SOAP adapter | `camel-cxf` |
   | HTTP/HTTPS adapter | `camel-http` / `camel-platform-http` |
   | MSMQ adapter | `camel-jms` (ActiveMQ Artemis) |
   | MQ Series adapter | `camel-jms` (IBM MQ) |
   | SMTP adapter | `camel-mail` |
   | Oracle adapter | `camel-jdbc` |
   | IBM Db2 adapter | `camel-jdbc` |
   | EventHub adapter | `camel-azure-eventhubs` |
   | ServiceBus adapter | `camel-azure-servicebus` |
   | Azure Blob adapter | `camel-azure-storage-blob` |
   
   ### Orchestration Shape Mapping (initial set)
   
   | BizTalk Shape | Camel EIP / Pattern |
   |---|---|
   | Receive (Activate) | `from()` consumer endpoint |
   | Receive (inline) | `pollEnrich()` / `to()` |
   | Send | `to()` producer endpoint |
   | Construct + Transform | `to("xslt:...")` / `transform()` |
   | Construct + MessageAssignment | `setBody()` / `setHeader()` |
   | Decide | Choice EIP (`when` / `otherwise`) |
   | Switch | Choice EIP (multiple `when` branches) |
   | Loop / ForEach | Loop EIP / Split EIP |
   | While | Loop EIP with condition |
   | Parallel Actions | Multicast EIP / Parallel Processing |
   | Listen | Content-Based Router / competing consumers |
   | Call (sub-orchestration) | `direct:` route invocation |
   | Start (async) | `seda:` / `wireTap()` |
   | Scope | `doTry()` / route grouping |
   | Catch | `doCatch()` |
   | Compensation | `onCompletion()` |
   | Delay | `delay()` EIP |
   | Expression | `process()` / bean method |
   | Terminate | `stop()` |
   | Call Rules (BRE) | `bean()` / rule engine integration |
   
   ### Pipeline Stage Mapping (initial set)
   
   | BizTalk Pipeline Stage/Component | Camel Pattern |
   |---|---|
   | XML Disassembler | `split()` + `unmarshal().jacksonXml()` |
   | XML Assembler | `marshal().jacksonXml()` / `aggregate()` |
   | Flat File Disassembler | `unmarshal().flatpack()` / `unmarshal().bindy()` |
   | Flat File Assembler | `marshal().flatpack()` / `marshal().bindy()` |
   | JSON Decoder | `unmarshal().jackson()` |
   | JSON Encoder | `marshal().jackson()` |
   | XML Validator | `to("validator:schema.xsd")` |
   | MIME/SMIME Decoder | `unmarshal().mime()` |
   | MIME/SMIME Encoder | `marshal().mime()` |
   
   ## Additional Context
   
   - The 
[BizTalkMigrationStarter](https://github.com/luigidemasi/BizTalkMigrationStarter)
 project provides proven parsing patterns for all BizTalk artifact types, 
including edge cases like Web Reference ODX files and scripting functoids
   - Parser test data should go in `src/test/resources/biztalk/` with sample 
BizTalk project artifacts (ODX, BTM, BTP, XSD, binding files)
   - The `/camel-migrate` skill's vendor detection step needs to be updated to 
recognize BizTalk project structures (`.btproj` files, BizTalk namespaces)
   - XLANG/s expression mapping to Camel expression languages (Simple, OGNL, 
Groovy) will require a dedicated expression translator, similar to the 
`ExpressionMapper` in BizTalkMigrationStarter
   - Scripting functoids (custom C#/VB code in maps) should be flagged for 
manual review during migration


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to