Microsoft has set a hard deadline for the Azure Service Bus Messaging Protocol (SBMP): September 30, 2026. After that date, any application still using SBMP to connect to Azure Service Bus will simply stop working. Along with the protocol, three legacy client libraries—WindowsAzure.ServiceBus, Microsoft.Azure.ServiceBus, and com.microsoft.azure.servicebus—reach end of life and lose all official support. The company is urging a move to the modern Azure.Messaging.ServiceBus SDK and its native AMQP 1.0 transport.

The announcement, detailed in a Microsoft Learn article updated earlier this year, gives Windows administrators and .NET developers two years to audit their estates, prove which transport their production workloads actually use, and plan a migration that separates protocol-level fixes from full SDK replacements.

What’s Changing—and What’s Not

The retirement has two distinct parts. The first is the shutdown of SBMP, the proprietary SOAP-based protocol that the original WindowsAzure.ServiceBus library used by default. When the deadline passes, the Service Bus service will no longer accept SBMP connections. Applications that haven’t switched will see outages.

The second part is the retirement of three older client NuGet and Maven packages:

  • WindowsAzure.ServiceBus (the original .NET Framework library)
  • Microsoft.Azure.ServiceBus (the previous cross-platform .NET Standard library)
  • com.microsoft.azure.servicebus (the older Java library)

Microsoft’s documentation states that these libraries “can still be used beyond 30 September 2026,” but they will no longer receive “official support and updates from Microsoft.” That means security patches, bug fixes, and compatibility with future service changes will stop. However, an application using one of these libraries over AMQP (the IETF-standard messaging protocol) will not face an immediate connectivity failure on day one. The real cliff-edge is for SBMP.

The modern replacement is Azure.Messaging.ServiceBus, which shipped in November 2020 for .NET. It speaks AMQP by default and conforms to current Azure SDK design guidelines. For Java, a supported Azure SDK equivalent exists, and teams must map their sender/receiver abstractions to it.

What the Deadline Means for You

The practical impact splits based on what your deployed applications actually speak on the wire.

If you’re running legacy .NET Framework or .NET Standard apps

Many Windows services, IIS-hosted APIs, scheduled tasks, and line-of-business desktop apps still reference WindowsAzure.ServiceBus. If those apps have never been reconfigured, they are almost certainly using SBMP. They will stop sending and receiving messages on September 30, 2026.

Importantly, you may not need a full rewrite to survive the deadline. Starting with version 2.1, WindowsAzure.ServiceBus added AMQP 1.0 support. Setting TransportType=Amqp in the connection string (e.g., Endpoint=sb://...;TransportType=Amqp) or in client constructors can switch the transport without otherwise changing application code. Microsoft documents that “application code remains unchanged when using AMQP 1.0.” But it warns of behavioral differences—the OperationTimeout property is ignored, Receive(TimeSpan.Zero) becomes a 10-second wait, and message serialization changes from the proprietary DataContractSerializer to an AMQP type system that can interoperate with non-.NET clients. Testing is mandatory.

For apps that use Microsoft.Azure.ServiceBus (which already defaults to AMQP), the risk is less immediate. They won’t crash from a protocol outage, but they will run on a library that stops getting updates. Plan a migration to Azure.Messaging.ServiceBus on a normal engineering timeline.

If you run Java workloads

The Java package com.microsoft.azure.servicebus is also retired. Like its .NET counterpart, it can use AMQP, but after September 2026, it will be unsupported. Java teams need to shift to a modern Azure SDK for Service Bus. The deadline is a forcing function to start dependency modernization, not a panic button—unless your Java apps still happen to be on SBMP (unlikely but worth a quick transport check).

The Triage Matrix Every Admin Needs

A single application may carry both risks—or neither. Here is the only decision table that matters:

What you find Outage risk on Sept 30, 2026? Immediate move Longer-term move
App uses SBMP (any library) Yes – connectivity breaks Switch to AMQP now; validate Migrate to Azure.Messaging.ServiceBus or current Java SDK
App uses WindowsAzure.ServiceBus with default (SBMP) Yes Add TransportType=Amqp; test Replace the library
App uses WindowsAzure.ServiceBus with TransportType=Amqp already set No, but unsupported Confirm the setting is really deployed in production Plan SDK migration
App uses Microsoft.Azure.ServiceBus or com.microsoft.azure.servicebus over AMQP No immediate outage Verify production transport Schedule library migration
App already uses Azure.Messaging.ServiceBus (or current Java SDK) None Continue normal testing No legacy action needed

This triage keeps teams from making two costly mistakes: ignoring the protocol deadline until it’s too late, or treating every legacy package reference like a production fire drill when only the transport matters for the September cutoff.

How We Got Here

SBMP was born in the early days of Azure Service Bus, back when the service originally shipped as “Windows Azure Service Bus.” The WindowsAzure.ServiceBus library encapsulated a tight coupling between the .NET client and the service fabric. In 2013, Microsoft added AMQP 1.0 support to the service, and the client got a TransportType option in version 2.1. AMQP caught on as the interoperable standard, and with the 2020 launch of Azure.Messaging.ServiceBus, Microsoft signaled that the old SOAP-based protocol and the libraries built around it were on a path to retirement.

The formal announcement, embedded in the supporting documentation and echoed in Azure updates, sets the end-of-support date for the SDKs and hard-stops SBMP traffic two years out. It’s part of a broader Azure pattern: retire legacy, non-conforming SDKs and protocols to focus on modern, secure, and cross-platform alternatives. A similar timeline logic appeared with the retirement of the Azure API for FHIR, where discovery and dependency mapping proved to be the real bottleneck for customers.

What to Do Now

The clock is ticking, but two years is enough time if you start by proving what you really have. Do not assume that a package reference in source control reflects the binary running in production. Old deployments, installer shares, and container images can outlive their repositories.

1. Build an inventory—not just of code, but of deployed binaries

Start by scanning source trees for the retired package names. In .NET ecosystems, Get-ChildItem combined with Select-String across .csproj, packages.config, .cs, and appsettings.json files can surface references to WindowsAzure.ServiceBus, Microsoft.Azure.ServiceBus, or the string TransportType. The dotnet list package command on solution files gives a quick report. For Java, grep pom.xml, build.gradle, and .java files for com.microsoft.azure.servicebus.

But the real evidence lives in deployed configurations. For each flagged application, record:
- The application name and owner
- Where it runs (server, IIS application pool, container, task scheduler)
- The exact package version
- The contents of its connection configuration (appSettings.json, environment variables, cloud service config)
- Whether the deployed config contains TransportType=Amqp, TransportType=AmqpWebSockets, or no transport setting at all

If you cannot inspect the deployed config, you don’t know your risk.

2. Prove the transport, don’t assume it

Configuration review is the cleanest evidence, but it can be fragile. An app may have a development config with AMQP but a production config that reverts to default (SBMP). Windows services often read configuration from the installation directory, not the source repo. IIS applications use deployment transforms. Get the runtime truth.

If configuration is ambiguous or missing, collaborate with your network team. Export flow or proxy logs for a controlled test window. Restart a non-production instance, send a known message, and let the network team classify the negotiated protocol on the wire. Document the client process, host, time window, and protocol classification. Do not rely on “the firewall allows outbound 5671” as proof of AMQP.

3. Act on your findings

  • SBMP clients (any library): These go to the top of the list. Prioritize a transport switch to AMQP. For WindowsAzure.ServiceBus, that often means adding ;TransportType=Amqp to the connection string—but first read Microsoft’s behavioral differences and test your message serialization carefully. For custom wrappers, log the effective transport at startup so operations can confirm it without a deep dive.
  • Legacy AMQP clients: For apps already using WindowsAzure.ServiceBus with the Amqp setting, the immediate risk is zero. File a work item to migrate to Azure.Messaging.ServiceBus, and treat the retired library as technical debt. Do not confuse “the protocol works” with “we are done.”
  • Modern clients: If you’re already on Azure.Messaging.ServiceBus, this retirement doesn’t touch you. Keep up with SDK updates and monitor the usual operational metrics.

4. Test the switch—it’s not just a config change

Switching from SBMP to AMQP in WindowsAzure.ServiceBus may be a one-line change, but it’s not a no-op. Build a compatibility test that exercises your exact message contracts: send, receive, complete, abandon, dead-letter, retry, timeout, and recover from a crash. If your app uses sessions, batching, or deferred messages, include those. Capture telemetry before the switch (message throughput, failure rates, latency) and compare during a staged rollout. Pay special attention to any security appliances or proxies between your Windows workloads and the Service Bus endpoint—they can interfere with AMQP handshakes.

A cutover checklist should be short: confirm SBMP is gone, validate functional scenarios in pre-production, verify network paths, compare telemetry, and record the retired dependency as a future migration task even if the AMQP switch is successful.

Outlook

The September 2026 deadline is firm, but it’s really two deadlines: one for the wire protocol, one for the libraries. Microsoft is unlikely to extend either. The company’s investment is in AMQP and the modern SDKs, and the retirement pattern will likely repeat for other aging Azure services. For Windows-heavy organizations, the proper response isn’t panic but methodical discovery and a two-track remediation plan—prevent the outage first, then replace the unsupported libraries on a sane schedule. Start the inventory this quarter, and you’ll have ample time to execute.