[Articles](https://zato.io/articles/index.html)

# Open-Source BizTalk Alternative (in Python)

**BizTalk Server 2020 is the final version of Microsoft BizTalk Server, and its support ends in April 2030.

This article describes the remaining BizTalk Server lifecycle, maps BizTalk concepts to an open-source platform in Python and presents a sequence for moving BizTalk applications to it.**

By Dariusz Suchojad

![Open-source BizTalk alternative in Python](https://zatosource-production.b-cdn.net/static/img/articles/eda/article.png)

11 min. read

Share this article: [LinkedIn](https://www.linkedin.com/sharing/share-offsite/?url=https%3A%2F%2Fzato.io%2Farticles%2Fopen-source-biztalk-alternative.html) | [FB](https://www.facebook.com/sharer/sharer.php?u=https%3A%2F%2Fzato.io%2Farticles%2Fopen-source-biztalk-alternative.html) | [Email](mailto:?subject=Open-Source BizTalk Alternative article from zato.io&body=https://zato.io/articles/open-source-biztalk-alternative.html)

- - -

A BizTalk application receives messages through receive locations, publishes them to the MessageBox database and delivers them through send ports to the systems that subscribe to them. Along the way, pipelines decode and validate the messages, maps transform them from one XML schema to another, and orchestrations drawn in Visual Studio coordinate the steps of a business process. BizTalk Server runs on Windows Server with SQL Server, and for more than 25 years it has carried the integrations of banks, manufacturers, retailers, hospitals and public administrations.

## The end of BizTalk Server {#the-end-of-biztalk-server}

On December 17, 2025, Microsoft [announced](https://techcommunity.microsoft.com/blog/integrationsonazureblog/microsoft-biztalk-server-product-lifecycle-update/4478559) that BizTalk Server 2020 is the final version of the product. No further version will be released, and Microsoft names Azure Logic Apps as the successor of BizTalk Server.

The remaining dates are fixed in the [Microsoft lifecycle policy](https://learn.microsoft.com/en-us/lifecycle/products/biztalk-server-2020):

| Version | End of mainstream support | End of extended support |
| --- | --- | --- |
| BizTalk Server 2016 | January 11, 2022 | January 11, 2027 |
| BizTalk Server 2020 | April 11, 2028 | April 9, 2030 |

Microsoft [expects sales of BizTalk Server 2020 to end on March 31, 2027](https://learn.microsoft.com/en-us/azure/logic-apps/biztalk-server-migration-overview). Between April 2028 and April 2030, Microsoft plans an optional, paid extended-mainstream support offering for BizTalk Server 2020, described as temporary migration coverage. It is expected to exclude Business Activity Monitoring, the ESB Toolkit, the industry accelerators, the legacy enterprise adapters, the BizTalk application lifecycle tooling and Visual Studio versions after Visual Studio 2022.

For BizTalk Server 2016, support ends on January 11, 2027, and Microsoft recommends a direct move to Logic Apps rather than an upgrade to BizTalk Server 2020. After April 10, 2030, BizTalk Server 2020 receives no security updates and no technical assistance. The applications continue to run, on a product that is no longer serviced.

## What the move to Logic Apps involves {#what-the-move-to-logic-apps-involves}

Microsoft states that [BizTalk Server and Azure Logic Apps have different architectures](https://github.com/MicrosoftDocs/azure-docs/blob/main/articles/logic-apps/biztalk-server-migration-approaches.md). In Microsoft's migration guidance, orchestrations are refactored into workflows, routing through the MessageBox is redesigned on Azure Service Bus, RabbitMQ or Kafka, and Business Activity Monitoring is redesigned as well. The move to the Microsoft successor therefore rebuilds every orchestration as a workflow, in another visual designer.

Logic Apps Standard is [billed for reserved vCPU and memory](https://learn.microsoft.com/en-us/azure/logic-apps/logic-apps-pricing) whether or not the workflows use them, every call to a managed connector is metered, and integration accounts for B2B processing are billed separately.

Because each orchestration is rebuilt in any case, the choice of the target platform is open, and the integrations can be rebuilt in Python, on an open-source platform, on your own infrastructure.

## From drag-and-drop to Python {#from-drag-and-drop-to-python}

[![A Zato environment with its server, scheduler, rule engine, B2B and EDI, MCP gateway, Dashboard, API portal and pub/sub, running on-premises or in the cloud](https://zato.io/docs/gfx/arch/index/basic-concepts/zato-architecture.webp)](https://zato.io/docs/arch/index.html)

A single BizTalk integration consists of several kinds of artifacts. An XML schema for each message, a map that connects the schemas with functoids, pipelines with components in C#, an orchestration drawn as shapes in the Visual Studio designer, and a binding file for each environment, all of them deployed together as an MSI package. The logic of one business process is spread across graphical designers and files of different formats.

BizTalk Server is built on the .NET Framework, and its development tools follow the Visual Studio releases. Support for Visual Studio 2022 arrived in [Cumulative Update 7](https://support.microsoft.com/en-us/servicing/biztalk/hotfix/2025/kb5065963-cumulative-update-7-for-microsoft-biztalk-server-2020), which requires a full new BizTalk installation and configuration from empty databases, followed by a rebuild of every project. Graphical designers on the .NET Framework belong to an earlier generation of integration software.

In Zato, an integration is a Python service. Python is the most widely used programming language - first in the [TIOBE index](https://www.tiobe.com/tiobe-index/) for October 2026, and used extensively by 58 percent of the developers who answered the [2026 Stack Overflow Developer Survey](https://survey.stackoverflow.co/2026/technology/data/languages-timeseries). Python is also the language of data, machine learning and AI agents, the next generation of integration.

An integration in Python is one file that any Python developer reads, reviewed like any other code, versioned in Git and written fluently by AI assistants. It is developed in the IDE of your choice and tested with the [built-in testing framework](https://zato.io/docs/api-testing/index.html). Channels, connections and security definitions are configured in the Dashboard, which also shows the audit log of every message that the integrations process.

[![The audit log in the Zato Dashboard, with each message, its outcome and its parsed content](https://zatosource-production.b-cdn.net/static/img/healthcare/audit-log.webp)](https://zato.io/docs/admin/audit-log/index.html)

## BizTalk concepts and their Zato counterparts {#biztalk-concepts-and-their-zato-counterparts}

| BizTalk Server | Zato |
| --- | --- |
| Receive port and receive location | Channels for [REST](https://zato.io/docs/dev/rest/channels.html), [SOAP](https://zato.io/docs/dev/soap/index.html), [file transfer](https://zato.io/docs/dev/file-transfer/index.html) and [message queues](https://zato.io/docs/dev/message-queues/index.html) |
| Send port | Outgoing connection, used by name in the service |
| Orchestration | Python service |
| XML schema | [Data model](https://zato.io/docs/dev/model/index.html) |
| Map and functoids | Python, with [data models and mappers](https://zato.io/docs/dev/rest/data-mapping.html) |
| Pipeline and pipeline components | Python |
| MessageBox publish and subscribe | [Built-in topics and queues](https://zato.io/docs/dev/message-queues/index.html) |
| Business Rules Engine | [Rule engine](https://zato.io/docs/rule-engine/index.html) |
| Message tracking and BAM | [Audit log](https://zato.io/docs/admin/audit-log/index.html) |
| SQL Server adapter | [SQL Server connection](https://zato.io/docs/dev/examples/sql/mssql.html) |
| SAP adapter | [SAP connection](https://zato.io/docs/dev/sap/index.html) |
| HL7 accelerator | [HL7 v2 over MLLP](https://zato.io/docs/dev/healthcare/hl7v2/mllp/index.html) |
| EDI processing | [EDIFACT](https://zato.io/tutorials/edifact.html) |
| Binding files per environment | [YAML configuration](https://zato.io/docs/admin/enmasse.html) in Git |
| MSI deployment | [Hot deployment](https://zato.io/docs/dev/hot-deploy.html) of Python files |
| BizTalk Administration Console | Dashboard |

## A BizTalk orchestration rewritten in Python {#a-biztalk-orchestration-rewritten-in-python}

A typical BizTalk orchestration receives a purchase order, transforms it with a map into the sales order format of the ERP, sends it to the ERP through a send port and publishes the order to the MessageBox for the other systems that subscribe to it. In BizTalk, this process requires two schemas, a map, an orchestration, a receive location, a send port and a binding file.

In Zato, the same process is one Python file:

```python
# -*- coding: utf-8 -*-

# stdlib
from dataclasses import dataclass

# Zato
from zato.common.typing_ import list_
from zato.server.service import Model, Service

@dataclass(init=False)
class OrderLine(Model):
    sku: str
    quantity: int

@dataclass(init=False)
class PurchaseOrder(Model):
    po_number: str
    customer_id: str
    lines: list_[OrderLine]

class ProcessPurchaseOrder(Service):
    """ Sends purchase orders to the ERP and publishes them to subscribers.
    """
    name = 'orders.process-purchase-order'
    input = PurchaseOrder

    def handle(self) -> 'None':

        order = self.request.input

        # The order becomes a sales order of the ERP ..
        lines = []
        for line in order.lines:
            lines.append({'item': line.sku, 'quantity': line.quantity})

        sales_order = {
            'reference': order.po_number,
            'customer': order.customer_id,
            'lines': lines,
        }

        # .. the ERP receives it ..
        response = self.rest['ERP'].post(sales_order)

        # .. every subscriber to new orders receives the order as well ..
        self.publish('orders.created', order)

        # .. and the caller receives the reply of the ERP.
        self.response.payload = response.data
```

The [tutorial](https://zato.io/tutorials/main/01.html) builds a complete integration of this kind, from an empty environment to a working API.

[![Creating a REST API endpoint in the Zato Dashboard, with its URL path, service and security definition](https://zato.io/docs/gfx/api/tutorial/tutorial-rest-channel-no-yellow.webp)](https://zato.io/docs/dev/rest/channels.html)

## Converting BizTalk applications with AI {#converting-biztalk-applications-with-ai}

Orchestrations, maps, schemas, pipelines and binding files are XML and C# files, and AI assistants translate them into Python services. An AI assistant reads the artifacts of a BizTalk application and writes one Python service per orchestration, with the maps expressed as Python code and the schemas as data models. With the [Zato documentation connected to it over MCP](https://zato.io/docs/ai/connect-your-copilot.html), the assistant uses the real APIs of the platform.

Each converted service is then reviewed by your developers and tested with messages from the production BizTalk application. The same message is processed by BizTalk and by the Python service, and the outputs are compared before the Python service receives live traffic.

## The migration sequence {#the-migration-sequence}

A migration from BizTalk Server proceeds one application at a time, with both platforms running side by side for as long as it takes:

1. **Inventory the applications.** For each BizTalk application, record its receive locations, send ports, orchestrations, maps, schemas, pipelines, business rules and bindings.
2. **Define the connections.** Every send port and adapter configuration becomes an outgoing connection in Zato, and every receive location becomes a channel, defined for each environment in YAML.
3. **Convert the applications with AI.** An AI assistant translates the orchestrations, maps and pipeline components into Python services, and your developers review each service.
4. **Move the business rules.** Each Business Rules Engine policy becomes a ruleset of the rule engine, which services evaluate at runtime.
5. **Test with production messages.** Messages from the production BizTalk applications are sent to the new services, and their outputs are compared with the outputs of BizTalk.
6. **Switch the endpoints.** Each sending system, file location and queue is pointed to the Zato channel in turn.
7. **Retire the BizTalk group.** When the last application carries no more traffic, the BizTalk servers and their SQL Server databases are shut down.

## Where Zato runs {#where-zato-runs}

Zato runs on your own infrastructure - on physical or virtual servers, in Docker, in Kubernetes and in any cloud, including Azure. It connects to the Microsoft systems that BizTalk applications use, among them [SQL Server](https://zato.io/docs/dev/examples/sql/mssql.html), [Dynamics 365](https://zato.io/docs/dev/examples/dynamics-365.html), [Microsoft 365](https://zato.io/tutorials/microsoft/365.html) and [Azure Service Bus](https://zato.io/docs/dev/examples/azure-service-bus.html).

Integrations are Python code and YAML configuration in your own Git repository. Enterprise support is available 24x7x365 from the team that builds Zato.

## BizTalk Server and Zato compared {#biztalk-server-and-zato-compared}

|  | BizTalk Server | Zato |
| --- | --- | --- |
| Open source | No | Yes |
| New product versions | No | Yes |
| Support beyond April 2030 | No | Yes |
| Integrations in the most popular programming language | No | Yes |
| Integrations as code instead of drag-and-drop designers | No | Yes |
| One language for process logic and data mapping | No | Yes |
| No per-core licenses | No | Yes |
| Runs on Linux, in Docker and in Kubernetes | No | Yes |
| Development in the IDE of your choice | No | Yes |
| Enterprise support 24x7x365 | Yes | Yes |

## Frequently asked questions {#frequently-asked-questions}

### When does support for BizTalk Server end? {#when-does-support-for-biztalk-server-end}

Support for BizTalk Server 2016 ends on January 11, 2027. Mainstream support for BizTalk Server 2020 ends on April 11, 2028, and extended support on April 9, 2030. BizTalk Server 2020 is the final version.

### Can AI convert BizTalk orchestrations and maps to Python? {#can-ai-convert-biztalk-orchestrations-and-maps-to-python}

Yes. An AI assistant translates orchestrations, maps and pipeline components into Zato services, and with the Zato documentation connected to it over MCP, it uses the real APIs of the platform. Your developers review each service and test it with messages from the production application before it takes over the traffic.

### Can Zato and BizTalk Server run at the same time? {#can-zato-and-biztalk-server-run-at-the-same-time}

Yes. During a migration both platforms run side by side, and endpoints are moved to Zato one application at a time.

### Does Zato connect to SQL Server and the other Microsoft systems? {#does-zato-connect-to-sql-server-and-the-other-microsoft-systems}

Yes. Zato has connections for SQL Server, Dynamics 365, Microsoft 365, SharePoint, Teams and Azure Service Bus, described in the [Microsoft integrations](https://zato.io/docs/dev/microsoft/index.html) documentation.

### Is Zato open source? {#is-zato-open-source}

Yes. The source code of Zato is [on GitHub](https://github.com/zatosource/zato).

### How do I get started? {#how-do-i-get-started}

Start the [tutorial](https://zato.io/tutorials/main/01.html) or [schedule a demo](https://zato.io/services/demo.html).

Dariusz Suchojad is founder of Zato Source.

**Planning a move from BizTalk Server? [Request your customized demo today](https://zato.io/services/demo.html).**
