Azure Migration

Every BizTalk Artifact, and What It Becomes in Azure

Every BizTalk Artifact, and What It Becomes in Azure

The first real question in any BizTalk migration is not “which Azure service?” It is “what is this thing I am holding, and what does it become?”

BizTalk is a single product that does six jobs: transport, transformation, routing, orchestration, rules, and tracking. Azure splits those jobs across separate services. So a migration is not a port — it is a decomposition. Below is the mapping we use when we inventory an estate, including the honest gaps.

BizTalk’s six jobs and their Azure equivalents BizTalk Server does six jobs in one product. In Azure each is handled by different services: transport by Logic Apps connectors, Service Bus and Blob Storage; transformation by the Logic Apps data mapper or Azure Functions; routing by Service Bus topics or Event Grid, with no direct equivalent for the messagebox; orchestration by Logic Apps workflows, Durable Functions or the Art2link ESB; rules by Functions or App Configuration, with no direct equivalent for the Business Rules Engine; and tracking by Azure Monitor, Application Insights and Log Analytics. One product, six jobs — and Azure splits every one of them WHAT BIZTALK DID WHERE IT GOES IN AZURE Transport Receive locations, send ports Logic Apps connectors Service Bus Blob Storage maps cleanly — start here Transformation Schemas and maps Logic Apps data mapper Functions (as code) inline XSLT is code Routing The messagebox Service Bus topics + filters Event Grid no direct equivalent Orchestration Stateful, long-running Logic Apps workflows Durable Functions Art2link ESB Rules Business Rules Engine Rules as code App Configuration no direct equivalent Tracking and BAM become Azure Monitor, Application Insights and Log Analytics — with message-body capture as a deliberate design decision, not a default.
BizTalk does six jobs in one product. Azure splits every one of them across different services — which is why a migration is a decomposition, not a port.

Transport: receive locations and send ports

BizTalkAzure targetNotes
FILE receive/sendLogic Apps + Azure Blob Storage or Azure FilesTrigger on blob creation; watch polling intervals and the “already processed” pattern
FTP / SFTPLogic Apps SFTP connectorManaged connector; check throughput limits against your file sizes
HTTP / SOAP receiveAPI Management → Logic AppsAPIM gives you the policy layer BizTalk isolation hosts never had
WCF-SQLLogic Apps SQL connector, or Functions for anything nontrivialThe polling/notification patterns rarely survive intact
MSMQAzure Service Bus queuesThe closest conceptual match in the whole migration
MQSeriesService Bus + a bridge, or Logic Apps IBM MQ connectorFrequently the longest-lead item in a migration
AS2 / EDI receiveLogic Apps with Integration Account, or a dedicated EDI layerSee our EDI migration piece for the trading-partner mechanics
POP3 / SMTPLogic Apps Office 365 / SMTP connectorsUsually the easiest wins in the estate

Transport is the part that maps cleanly. If your inventory is mostly file drops and SFTP, your migration is genuinely more tractable than average, and you should start here to build team confidence.

Transformation: schemas and maps

XSD schemas transfer directly. This is the single biggest piece of good news in the whole exercise — your schemas are your contract with the outside world, and they come with you.

BizTalk maps (.btm) carry into the Logic Apps data mapper with rework that scales with how much custom logic you buried in them. Three tiers, in our experience:

  • Straight field-to-field mapping with basic functoids: mostly mechanical.
  • Maps with looping, conditional records, and cumulative functoids: hand-rebuilt, but tractable.
  • Maps containing inline C# or XSLT calling custom assemblies: these are code, not configuration. Treat them as code and move them to Azure Functions.

That third tier is where estimates blow up. A single map with 400 lines of inline XSLT is not “one map” — it is a small application. Count those separately during inventory.

A single map with 400 lines of inline XSLT is not “one map”. It is a small application.

Routing: the messagebox

This is the artifact with no Azure equivalent, and the one that most often breaks a mental model.

BizTalk’s messagebox is a SQL-backed publish/subscribe engine. You do not route messages in BizTalk — you publish them, and subscribers with matching filter expressions pick them up. Content-based routing, convoys, and ordered delivery all rest on this.

There is no messagebox in Azure. What you have instead:

  • Service Bus topics with subscription filters — the closest match for content-based routing on message properties.
  • Event Grid — for high-volume, event-shaped fan-out where you do not need queuing semantics.
  • Explicit routing inside a Logic Apps workflow — a switch or condition, which is simpler to read but couples the routing decision to the workflow.

The design decision is whether to preserve the publish/subscribe pattern (Service Bus topics, more moving parts, keeps producers ignorant of consumers) or collapse it into explicit routing (simpler, but every new consumer means editing a workflow). Estates with many subscribers per message type should preserve it. Estates where “pub/sub” was really just one-to-one plumbing should collapse it and enjoy the simplification.

Orchestration

Short, stateless orchestrations become Logic Apps workflows, and this is where Microsoft’s tooling helps most.

Long-running, stateful orchestrations are a different animal. If an orchestration waits days for a correlated response, holds accumulated state, or implements a convoy, you are choosing between:

  • Logic Apps stateful workflows — durable, with run history; watch the limits on run duration and the cost of very long-lived runs.
  • Azure Durable Functions — the strongest fit for genuinely complex stateful logic, at the price of writing code rather than configuring a workflow.
  • A dedicated ESB layer — which is the case for Art2link ESB in estates where dozens of these exist and rewriting each as code is not proportionate.

A practical rule: if the orchestration has more than a handful of shapes and any correlation logic, do not let a conversion tool decide its architecture for you.

Rules: the Business Rules Engine

The BRE has no Azure equivalent. None. Nothing in Azure Integration Services is a forward-chaining rules engine with a policy versioning model.

None

There is no forward-chaining rules engine anywhere in Azure Integration Services, and nothing with the BRE’s policy versioning model. Grep for Microsoft.RuleEngine during inventory — not during build.

Your options, in descending order of how often we see them chosen:

  1. Move the rules into code — Azure Functions, with the ruleset expressed as testable logic. Best when the rules are stable and owned by engineering.
  2. Move them into a configuration store — Azure App Configuration or a table, read at runtime. Best when values change often but the logic does not.
  3. A third-party rules engine — genuinely warranted when business users author the rules and that authoring workflow must survive.

The mistake is discovering the BRE dependency in month four. Grep for Microsoft.RuleEngine during inventory, not during build.

Pipelines and custom pipeline components

Standard pipeline stages — disassemble, validate, party resolution — have rough Logic Apps or connector equivalents.

Custom pipeline components do not. These are .NET classes doing flat-file quirk handling, encryption, header stripping, or one-off validation, and they are usually undocumented. They become Azure Functions. Budget for them individually: each one encodes a real-world quirk that someone discovered the hard way, and deleting it will break something in production three weeks later.

Tracking and BAM

BizTalk’s tracking database and BAM become Azure Monitor, Application Insights, and Log Analytics, with one significant caveat: BizTalk gave you message body tracking almost for free, and Azure does not. If your support team routinely opens the HAT to read the body of a failed message from last Tuesday, that capability needs to be deliberately designed in — with a retention and PII policy attached, because now you are choosing to store payloads rather than inheriting it as a default.

This is a workflow change for your operations team, and it is worth socialising early. It is the number one “the new platform is worse” complaint we hear, and it is entirely preventable.

The four BizTalk artifacts with no clean Azure equivalent Four artifacts require a decision rather than a port. The messagebox is a publish-subscribe pattern to redesign, not a component to move. The Business Rules Engine becomes code or configuration. Custom pipeline components each become an Azure Function. Message body tracking becomes a deliberate design decision with a storage and retention cost. These four largely determine whether the migration is remembered as a success. The four that need a decision, not a port Everything else on the mapping has a defensible target. These four turn a six-month estimate into a twelve-month project. 1 The messagebox BECOMES A pattern to redesign, not a component to port across. Preserve pub/sub, or collapse it 2 The rules engine BECOMES Code, or configuration in a store. Azure has no forward-chaining engine. Grep for Microsoft.RuleEngine 3 Pipeline components BECOMES An Azure Function each. Budget them one by one — they are undocumented. Each encodes a real-world quirk 4 Body tracking BECOMES A deliberate decision, with a retention and PII policy attached. The #1 “it’s worse now” complaint The quality of these four decisions largely determines whether the migration is remembered as a success.
Four artifacts require a decision rather than a target. The quality of these four decisions largely determines how the migration is remembered.

The four artifacts with no clean equivalent

Worth listing plainly, because these are the items that turn a six-month estimate into a twelve-month project:

  1. The messagebox — a pattern to redesign, not a component to port.
  2. The Business Rules Engine — becomes code or configuration.
  3. Custom pipeline components — become Functions, one by one.
  4. Message body tracking — becomes a deliberate design decision with a cost.

Everything else on this page has a defensible target. These four require a decision, and the quality of those four decisions largely determines whether the migration is remembered as a success.

How this feeds a real plan

An inventory that produces counts against this mapping — 34 receive locations, 12 maps of which 3 contain inline XSLT, 8 orchestrations of which 2 are stateful, 4 custom pipeline components, 1 BRE policy — is a plan you can sequence, staff, and defend to a steering committee.

An inventory that produces “we have BizTalk” is not.

If you want yours produced against exactly this mapping, book an assessment. We inventory the estate, classify every artifact, flag the high-risk items, and hand back a staged roadmap. Two decades of doing this in production means we know which of these items bite.


Jorge Pastorini · Cerebrum City

Cerebrum City is a Microsoft V‑TSP–recognized BizTalk specialist in Atlanta, Georgia, with two decades running BizTalk Server in enterprise production for clients including Humana, Deloitte, JetBlue, and U‑Haul.

Courtesy assessment

Want this mapped against your BizTalk estate?

We inventory your ports, orchestrations, maps, and adapters, flag the interfaces most likely to break, and hand back a staged Azure roadmap. No obligation.

Keep reading

All insights →

Ready to modernize your stack?

From integration pioneers to cloud-native experts — start with a courtesy assessment and we’ll map the fastest path to a modern architecture.

Talk to an Integration Architect