Add Durable Task Scheduler skill#919
Conversation
There was a problem hiding this comment.
Pull request overview
Adds a new Azure Prepare reference document for Durable Task Scheduler (DTS) to help guide users in building durable, fault-tolerant workflow orchestrations on Azure.
Changes:
- Introduces a new
durable-task-scheduler.mdreference covering DTS fundamentals, local emulator setup, workflow patterns, and determinism rules. - Includes example snippets for .NET and Python (starter, patterns, logging, retry).
- Adds Azure provisioning guidance including CLI, Bicep, and managed identity role assignment.
plugin/skills/azure-prepare/references/services/durable-task-scheduler.md
Outdated
Show resolved
Hide resolved
plugin/skills/azure-prepare/references/services/durable-task-scheduler.md
Outdated
Show resolved
Hide resolved
plugin/skills/azure-prepare/references/services/durable-task-scheduler.md
Outdated
Show resolved
Hide resolved
plugin/skills/azure-prepare/references/services/durable-task-scheduler.md
Outdated
Show resolved
Hide resolved
plugin/skills/azure-prepare/references/services/durable-task-scheduler.md
Outdated
Show resolved
Hide resolved
plugin/skills/azure-prepare/references/services/durable-task-scheduler.md
Outdated
Show resolved
Hide resolved
plugin/skills/azure-prepare/references/services/durable-task-scheduler.md
Outdated
Show resolved
Hide resolved
plugin/skills/azure-prepare/references/services/durable-task-scheduler.md
Outdated
Show resolved
Hide resolved
plugin/skills/azure-prepare/references/services/durable-task-scheduler.md
Outdated
Show resolved
Hide resolved
…nd Bicep options - Change AuthorizationLevel from Anonymous to Function in all 4 language examples - Fix 'QuickStarts' capitalization to lowercase 'quickstarts' - Comment out Bicep Option B (UAMI) to prevent deploying both identity options
plugin/skills/azure-prepare/references/services/durable-task-scheduler.md
Outdated
Show resolved
Hide resolved
744f31e to
c6a4b83
Compare
…nd Bicep options - Change AuthorizationLevel from Anonymous to Function in all 4 language examples - Fix 'QuickStarts' capitalization to lowercase 'quickstarts' - Comment out Bicep Option B (UAMI) to prevent deploying both identity options
plugin/skills/azure-deploy/references/recipes/azd/durable-task-scheduler-deploy.md
Outdated
Show resolved
Hide resolved
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 5 out of 5 changed files in this pull request and generated 4 comments.
Comments suppressed due to low confidence (3)
plugin/skills/azure-deploy/references/recipes/azd/durable-task-scheduler-deploy.md:19
- Callout formatting here (
> **💡 TIP**:) is inconsistent with other AZD recipe docs in this repo (e.g.,> 💡 **Note:**,> 💡 **Tip:**,> ⚠️ **Important:**). Consider switching to the same callout style for consistency and easier scanning.
> **💡 TIP**: Start with `consumption` for development and variable workloads. Switch to `dedicated` when you need consistent, high-throughput performance.
plugin/skills/azure-deploy/references/recipes/azd/durable-task-scheduler-deploy.md:109
- The RBAC scope example uses
<sub-id>/myRGstyle placeholders, which differs from placeholder conventions used in other Azure CLI snippets in this repo (e.g.,SUB,RG,PRINCIPAL_ID). Standardizing the placeholders (and using a consistent style throughout this doc) will make the instructions easier to apply.
# Grant access to scheduler
az role assignment create \
--assignee $PRINCIPAL_ID \
--role "Durable Task Data Contributor" \
--scope /subscriptions/<sub-id>/resourceGroups/myRG/providers/Microsoft.DurableTask/schedulers/my-scheduler
plugin/skills/azure-prepare/references/services/durable-task-scheduler.md:24
- Callout formatting (
> **💡 TIP**:/> **⚠️ NOTE**:) is inconsistent with the common style used across the repo’s references (> 💡 **Tip:**,> ⚠️ **Important:**, etc.). Consider normalizing these callouts for consistency and to avoid multiple variants of the same pattern.
> **💡 TIP**: Use Durable Functions for serverless with built-in triggers. Use Durable Task SDKs for hosting flexibility.
plugin/skills/azure-deploy/references/recipes/azd/durable-task-scheduler-deploy.md
Outdated
Show resolved
Hide resolved
plugin/skills/azure-deploy/references/recipes/azd/durable-task-scheduler-deploy.md
Outdated
Show resolved
Hide resolved
plugin/skills/azure-prepare/references/services/durable-task-scheduler.md
Outdated
Show resolved
Hide resolved
plugin/skills/azure-prepare/references/services/durable-task-scheduler/python.md
Show resolved
Hide resolved
plugin/skills/azure-prepare/references/services/durable-task-scheduler/javascript.md
Show resolved
Hide resolved
plugin/skills/azure-prepare/references/services/durable-task-scheduler/javascript.md
Outdated
Show resolved
Hide resolved
plugin/skills/azure-prepare/references/services/durable-task-scheduler/java.md
Show resolved
Hide resolved
plugin/skills/azure-prepare/references/services/durable-task-scheduler/dotnet.md
Show resolved
Hide resolved
- Split monolithic durable-task-scheduler.md into directory: README.md (overview hub), dotnet.md, python.md, java.md, javascript.md, bicep.md - Add version discovery notes to all language files - Fix commented-out Bicep in bicep.md connection string section - Update durable.md to recommend DTS as best-practice backend - Remove UAMI sections from deploy recipe, simplify to SAMI only - Fix deploy recipe: add Bicep param declarations, use .azure/plan.md
- Align Python host.json to use durabletask-scheduler + extension bundle (matching Java/JS); add note explaining .NET uses azureManaged via NuGet - Add explanatory note in dotnet.md about azureManaged vs durabletask-scheduler - Define 'input' variable in dotnet.md error handling snippet - Add logger field definition in java.md replay-safe logging snippet - Convert JS SDK section from ESM imports to CommonJS require() with async main() wrapper for consistency with rest of file
- Move Learn More sections to top of each language file - Standardize all files on DURABLE_TASK_SCHEDULER_CONNECTION_STRING with TaskHub embedded in connection string (replaces DTS_CONNECTION_STRING + TASKHUB_NAME in dotnet.md and bicep.md) - Add Workflow & Orchestration category in research.md and architecture.md - Add az extension install instruction for durabletask CLI - Update troubleshooting references in README.md and deploy recipe
Assign Durable Task Data Contributor role to the deploying user's identity so they can access the DTS dashboard in the Azure portal. Without this, the dashboard returns 403 Forbidden. Reference: https://github.com/Azure-Samples/Durable-Task-Scheduler/blob/main/samples/infra/main.bicep#L81
- Fix malformed markdown table in architecture.md (separator and data row merged) - Add TaskHub=default to local emulator connection string in README.md
The DTS deployment guidance in azure-deploy was redundant with the Bicep patterns already in the azure-prepare DTS skill docs. Removed: - durable-task-scheduler-deploy.md recipe file - Reference line from azure-deploy SKILL.md - 'Invoke azure-deploy' pointers from DTS README.md and bicep.md
…cheduler as the default Durable Functions backend - Update selection.md: route durable to full recipe with DTS instead of source-only - Update composition.md: move durable from source-only to full recipe with DTS backend - Rewrite recipes/durable/README.md: replace Azure Storage backend with DTS - Add recipes/durable/bicep/durable-task-scheduler.bicep: scheduler + task hub + RBAC module - Add durable-task-scheduler test in azure-prepare integration tests - Add durable-task-scheduler-deploy test in azure-deploy integration tests
…PR feedback and make changes so that DTS is always the selected durable backend
cc0934d to
c57898a
Compare
plugin/skills/azure-prepare/references/services/functions/templates/recipes/durable/README.md
Show resolved
Hide resolved
plugin/skills/azure-prepare/references/services/functions/templates/recipes/composition.md
Show resolved
Hide resolved
paulyuk
left a comment
There was a problem hiding this comment.
Touches a number of files but I think we need to because this is a new scenario for orchestration that can be used with all the host app compute services. The changes are correct and look safe.
plugin/skills/azure-prepare/references/services/durable-task-scheduler/README.md
Outdated
Show resolved
Hide resolved
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 19 out of 19 changed files in this pull request and generated 2 comments.
Comments suppressed due to low confidence (1)
plugin/skills/azure-prepare/references/services/durable-task-scheduler/bicep.md:95
- The connection string example orders fields differently than other DTS docs in this PR and the durable-task-scheduler Bicep module output. Since these strings are meant to be copy/paste templates, align the field order across docs (and ideally match the module output) to avoid confusion when troubleshooting.
{
name: 'DURABLE_TASK_SCHEDULER_CONNECTION_STRING'
value: 'Endpoint=${scheduler.properties.endpoint};TaskHub=${taskHub.name};Authentication=ManagedIdentity;ClientID=${uamiClientId}'
}
Adds a new reference skill for the Durable Task Scheduler enabling Copilot to guide users through building reliable, fault-tolerant workflows on Azure.
The skill covers:
Framework selection (Durable Functions vs. Durable Task SDKs)
Local development with the DTS emulator
Workflow patterns: chaining, fan-out/fan-in, async HTTP, monitor, human interaction, and saga
Orchestration determinism rules and replay-safe logging
Azure deployment with Bicep and managed identity configuration
Error handling and retry policies