Skip to content

Commit f677a00

Browse files
Merge pull request #312464 from MicrosoftDocs/main
Auto Publish – main to live - 2026-03-02 06:00 UTC
2 parents 3791583 + f8c2a10 commit f677a00

8 files changed

Lines changed: 140 additions & 78 deletions

File tree

articles/azure-functions/durable/durable-functions-orchestration-versioning.md

Lines changed: 59 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ ms.custom: fasttrack-edit
99
#Customer intent: As a Durable Functions developer, I want to deploy breaking changes to my orchestrations without interrupting in-flight instances, so that I can maintain zero-downtime deployments.
1010
---
1111

12-
# Orchestration versioning in Durable Functions (Azure Functions) - public preview
12+
# Orchestration versioning in Durable Functions (Azure Functions)
1313

1414
Orchestration versioning addresses [the core challenge](durable-functions-versioning.md) of deploying changes to orchestrator functions while maintaining the deterministic execution model that Durable Functions requires. Without this feature, breaking changes to orchestrator logic or activity function signatures would cause in-flight orchestration instances to fail during replay because they would break the [determinism requirement](durable-functions-code-constraints.md) that ensures reliable orchestration execution. This built-in feature provides automatic version isolation with minimal configuration. It's backend agnostic, so it can be used by apps leveraging any of the Durable Function's [storage providers](durable-functions-storage-providers.md), including the [Durable Task Scheduler](./durable-task-scheduler/durable-task-scheduler.md).
1515

@@ -36,46 +36,45 @@ The orchestration versioning feature operates on these core principles:
3636

3737
- **Forward Protection**: The runtime automatically prevents workers running older orchestrator versions from executing orchestrations started by newer orchestrator versions.
3838

39-
> [!IMPORTANT]
40-
> Orchestration versioning is currently in public preview.
41-
4239
## Prerequisites
4340

4441
Before using orchestration versioning, ensure you have the required package versions for your programming language.
4542

46-
If you're using a non-.NET language (JavaScript, Python, PowerShell, or Java) with [extension bundles](../extension-bundles.md), your function app must reference **Extension Bundle version 4.26.0 or later**. Configure the `extensionBundle` range in `host.json` so that the minimum version is at least `4.26.0`, for example:
43+
If you're using a non-.NET language (JavaScript, Python, PowerShell, or Java) with [extension bundles](../extension-bundles.md), your function app must reference **Extension Bundle version 4.30.0 or later**. Configure the `extensionBundle` range in `host.json` so that the minimum version is at least `4.30.0`, for example:
4744

4845
```json
4946
{
5047
"version": "2.0",
5148
"extensionBundle": {
5249
"id": "Microsoft.Azure.Functions.ExtensionBundle",
53-
"version": "[4.26.0, 5.0.0)"
50+
"version": "[4.30.0, 5.0.0)"
5451
}
5552
}
5653
```
5754

5855
See the [extension bundle configuration documentation](../extension-bundles.md) for details on choosing and updating bundle versions.
5956

57+
In addition to the extension bundle requirement for non-.NET languages, you also need to use the minimum version of the language-specific SDK package listed below. Both the extension bundle and the SDK package are required for orchestration versioning to work correctly.
58+
6059
# [C#](#tab/csharp)
6160

62-
Use `Microsoft.Azure.Functions.Worker.Extensions.DurableTask` version [1.5.0](https://www.nuget.org/packages/Microsoft.Azure.Functions.Worker.Extensions.DurableTask/1.5.0) or later.
61+
Use `Microsoft.Azure.Functions.Worker.Extensions.DurableTask` version [1.14.0](https://www.nuget.org/packages/Microsoft.Azure.Functions.Worker.Extensions.DurableTask/1.14.0) or later.
6362

6463
# [JavaScript](#tab/javascript)
6564

66-
Use `durable-functions` version [3.2.0](https://www.npmjs.com/package/durable-functions/v/3.2.0) or later.
65+
Use `durable-functions` version [3.3.0](https://www.npmjs.com/package/durable-functions/v/3.3.0) or later.
6766

6867
# [Python](#tab/python)
6968

70-
Use `azure-functions-durable` version [1.3.3](https://pypi.org/project/azure-functions-durable/1.3.3/) or later.
69+
Use `azure-functions-durable` version [1.5.0](https://pypi.org/project/azure-functions-durable/1.5.0/) or later.
7170

7271
# [PowerShell](#tab/powershell)
7372

74-
Use `AzureFunctions.PowerShell.Durable.SDK` version [2.0.0](https://www.powershellgallery.com/packages/AzureFunctions.PowerShell.Durable.SDK/2.0.0) or later. Make sure you're using the standalone [Durable Functions PowerShell SDK](durable-functions-powershell-v2-sdk-migration-guide.md).
73+
Use `AzureFunctions.PowerShell.Durable.SDK` version [2.2.0](https://www.powershellgallery.com/packages/AzureFunctions.PowerShell.Durable.SDK/2.2.0) or later. Make sure you're using the standalone [Durable Functions PowerShell SDK](durable-functions-powershell-v2-sdk-migration-guide.md).
7574

7675
# [Java](#tab/java)
7776

78-
Use `durabletask-azure-functions` version [1.6.1](https://mvnrepository.com/artifact/com.microsoft/durabletask-azure-functions/1.6.1) or later.
77+
Use `durabletask-azure-functions` version [1.6.3](https://mvnrepository.com/artifact/com.microsoft/durabletask-azure-functions/1.6.3) or later.
7978

8079
---
8180

@@ -633,16 +632,36 @@ public static async Task<HttpResponseData> HttpStart(
633632
```
634633

635634
# [JavaScript](#tab/javascript)
635+
```javascript
636+
const HttpStart: HttpHandler = async (request: HttpRequest, context: InvocationContext): Promise<HttpResponse> => {
637+
const client = df.getClient(context);
638+
const instanceId = await client.startNew("ProcessOrderOrchestrator", {
639+
input: orderId,
640+
version: "1.0"
641+
});
636642

637-
Starting an orchestration with a specific version different from the current `defaultVersion` specified in your `host.json` is currently not supported in JavaScript.
643+
// ...
644+
};
645+
```
638646

639647
# [Python](#tab/python)
648+
```python
649+
@myApp.route(route="orchestrators/{functionName}")
650+
@myApp.durable_client_input(client_name="client")
651+
async def http_start(req: func.HttpRequest, client):
652+
instance_id = await client.start_new("ProcessOrderOrchestrator", client_input=order_id, version="1.0")
640653

641-
Starting an orchestration with a specific version different from the current `defaultVersion` specified in your `host.json` is currently not supported in Python.
654+
# ...
655+
```
642656

643657
# [PowerShell](#tab/powershell)
658+
```powershell
659+
param($Request, $TriggerMetadata)
644660
645-
Starting an orchestration with a specific version different from the current `defaultVersion` specified in your `host.json` is currently not supported in PowerShell.
661+
$instanceId = Start-DurableOrchestration -FunctionName "ProcessOrderOrchestrator" -Input $orderId -Version "1.0"
662+
663+
# ...
664+
```
646665

647666
# [Java](#tab/java)
648667

@@ -688,16 +707,39 @@ public static async Task<string> RunMainOrchestrator(
688707
```
689708

690709
# [JavaScript](#tab/javascript)
710+
```javascript
711+
const RunMainOrchestrator: OrchestrationHandler = function* (context: OrchestrationContext) {
712+
const paymentResult = yield context.df.callSubOrchestrator(
713+
"ProcessPaymentOrchestrator",
714+
orderId,
715+
{ version: "1.0" }
716+
);
691717

692-
Starting a sub-orchestration with a specific version different from the current `defaultVersion` specified in your `host.json` is currently not supported in JavaScript.
718+
// ...
719+
};
720+
```
693721

694722
# [Python](#tab/python)
723+
```python
724+
@myApp.orchestration_trigger(context_name="context")
725+
def run_main_orchestrator(context: df.DurableOrchestrationContext):
726+
payment_result = yield context.call_sub_orchestrator(
727+
"ProcessPaymentOrchestrator",
728+
order_id,
729+
version="1.0"
730+
)
695731

696-
Starting a sub-orchestration with a specific version different from the current `defaultVersion` specified in your `host.json` is currently not supported in Python.
732+
# ...
733+
```
697734

698735
# [PowerShell](#tab/powershell)
736+
```powershell
737+
param($Context)
699738
700-
Starting a sub-orchestration with a specific version different from the current `defaultVersion` specified in your `host.json` is currently not supported in PowerShell.
739+
$paymentResult = Invoke-SubOrchestrator -FunctionName "ProcessPaymentOrchestrator" -Input $orderId -Version "1.0"
740+
741+
# ...
742+
```
701743

702744
# [Java](#tab/java)
703745

articles/azure-functions/durable/durable-functions-versioning.md

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -203,9 +203,6 @@ Because of these potential failures, the "do nothing" strategy is not recommende
203203

204204
### Orchestration versioning
205205

206-
> [!NOTE]
207-
> Orchestration versioning is currently in public preview.
208-
209206
The orchestration versioning feature allows different versions of orchestrations to coexist and execute concurrently without conflicts and non-determinism issues, making it possible to deploy updates while allowing in-flight orchestration instances to complete without manual intervention.
210207

211208
With orchestration versioning:

articles/azure-functions/durable/durable-task-scheduler/durable-task-scheduler-versioning.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
---
2-
title: Configure Versioning for Durable Task Scheduler (preview)
2+
title: Configure Versioning for Durable Task Scheduler
33
description: Learn how to use orchestration versioning in Durable Task Scheduler.
44
ms.topic: how-to
55
ms.date: 12/03/2025
@@ -9,7 +9,7 @@ ms.reviewer: hannahhunter
99
zone_pivot_groups: df-languages
1010
---
1111

12-
# Orchestration Versioning (preview)
12+
# Orchestration Versioning
1313

1414
Upgrading and downgrading orchestrations is a key consideration when working with durable orchestration systems. If an orchestration is interrupted and later resumed (for instance, during a host update), Durable Task Scheduler replays the events of the orchestration, ensuring all previous steps were executed successfully before taking the next step. This action ensures reliability, one of the core promises of the durable execution paradigm.
1515

articles/frontdoor/scenarios.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ author: johndowns
55
ms.author: jodowns
66
ms.service: azure-frontdoor
77
ms.topic: concept-article
8-
ms.date: 02/13/2023
8+
ms.date: 03/02/2026
99
---
1010

1111
# Accelerate and secure your web application with Azure Front Door
@@ -46,7 +46,7 @@ When you have strict network security requirements, you can use Azure Front Door
4646
By using Front Door, you can create resilient, highly available solutions.
4747

4848
- **Load balancing and failover:** Front Door is a global load balancer. Front Door monitors the health of your origin servers, and if an origin becomes unavailable, [Front Door can route requests to an alternative origin](routing-methods.md). You can also use Front Door to spread traffic across your origins to reduce the load on any one origin server.
49-
- **Anycast routing:** Front Door itself has a [large number of PoPs](edge-locations-by-region.md), each of which can serve traffic for any request. [Anycast routing](front-door-traffic-acceleration.md#select-the-front-door-edge-location-for-the-request-anycast) steers traffic to the closest available Front Door PoP, and if a PoP is unavailable, clients are automatically routed to the next closest PoP.
49+
- **Automatic routing:** Front Door itself has a [large number of PoPs](edge-locations-by-region.md), each of which can serve traffic for any request. [Azure Front Door's routing architecture](front-door-traffic-acceleration.md) automatically steers traffic to the closest available Front Door PoP, and if a PoP is unavailable, clients are automatically routed to the next closest PoP.
5050
- **Caching:** By using the Front Door cache, you reduce the load on your application servers. If your servers are unavailable, Front Door might be able to continue to serve cached responses until your application recovers.
5151

5252
### Cost optimization
@@ -78,7 +78,7 @@ The following diagram illustrates a generic solution architecture using Front Do
7878

7979
### Client to Front Door
8080

81-
Traffic from the client first arrives at a Front Door PoP. Front Door has a [large number of PoPs](edge-locations-by-region.md) distributed worldwide, and [Anycast](front-door-traffic-acceleration.md#select-the-front-door-edge-location-for-the-request-anycast) routes the clients to their closest PoP.
81+
Traffic from the client first arrives at a Front Door PoP. Front Door has a [large number of PoPs](edge-locations-by-region.md) distributed worldwide, and [Azure Front Door's routing architecture](front-door-traffic-acceleration.md) automatically routes traffic to the closest available Front Door PoP.
8282

8383
When the request is received by Front Door's PoP, Front Door uses your [custom domain name](front-door-custom-domain.md) to serve the request. Front Door performs [TLS offload](end-to-end-tls.md) by using either a Front Door-managed TLS certificate or a custom TLS certificate.
8484

0 commit comments

Comments
 (0)