#148 Add Job Queue reliability and scheduling guidance
Six new performance guidance articles document reliability and scheduling practices for Job Queue and Task Scheduler workloads, including idempotency requirements, UI independence, failure propagation, category-based serialization, on-hold behavior, and duplicate task prevention.
- 24files
- 21AL files
- 0objects
Pull request · merged into main on 2026-09-14 by demiliani · 24 files (+574 -25), 21 AL · feature · tier official · reviewed (checked by Opus)
What changed
- Require external side effects in Job Queue handlers to be idempotent across retries using unique idempotency keys
- Job Queue handlers must be independent of client UI and operate in background sessions
- Execution failures must propagate so the dispatcher can log and retry according to configuration
- Use Job Queue Category Code to serialize jobs that require mutual exclusion
- Putting an entry on hold prevents future runs but does not stop currently executing work, requiring cooperative cancellation
AL objects touched
microsoft/knowledge/performance/httpclient-inside-write-transaction-holds-locks.md: modified, not in the BC? snapshotmicrosoft/knowledge/performance/job-queue-category-code-serializes-conflicting-jobs.bad.al: added, not in the BC? snapshot yetmicrosoft/knowledge/performance/job-queue-category-code-serializes-conflicting-jobs.good.al: added, not in the BC? snapshot yetmicrosoft/knowledge/performance/job-queue-category-code-serializes-conflicting-jobs.md: added, not in the BC? snapshot yetmicrosoft/knowledge/performance/job-queue-external-effects-must-be-idempotent.bad.al: added, not in the BC? snapshot yetmicrosoft/knowledge/performance/job-queue-external-effects-must-be-idempotent.good.al: added, not in the BC? snapshot yetmicrosoft/knowledge/performance/job-queue-external-effects-must-be-idempotent.md: added, not in the BC? snapshot yetmicrosoft/knowledge/performance/job-queue-handlers-must-not-require-ui.bad.al: added, not in the BC? snapshot yetmicrosoft/knowledge/performance/job-queue-handlers-must-not-require-ui.good.al: added, not in the BC? snapshot yetmicrosoft/knowledge/performance/job-queue-handlers-must-not-require-ui.md: added, not in the BC? snapshot yetmicrosoft/knowledge/performance/job-queue-handlers-must-propagate-failures.bad.al: added, not in the BC? snapshot yetmicrosoft/knowledge/performance/job-queue-handlers-must-propagate-failures.good.al: added, not in the BC? snapshot yetmicrosoft/knowledge/performance/job-queue-handlers-must-propagate-failures.md: added, not in the BC? snapshot yetmicrosoft/knowledge/performance/job-queue-on-hold-does-not-stop-running-work.bad.al: added, not in the BC? snapshot yetmicrosoft/knowledge/performance/job-queue-on-hold-does-not-stop-running-work.good.al: added, not in the BC? snapshot yetmicrosoft/knowledge/performance/job-queue-on-hold-does-not-stop-running-work.md: added, not in the BC? snapshot yetmicrosoft/knowledge/performance/oncompanyopen-subscribers-must-not-do-io.md: modified, not in the BC? snapshotmicrosoft/knowledge/performance/store-scheduled-task-id-to-avoid-duplicate-tasks.bad.al: added, not in the BC? snapshot yetmicrosoft/knowledge/performance/store-scheduled-task-id-to-avoid-duplicate-tasks.good.al: added, not in the BC? snapshot yetmicrosoft/knowledge/performance/store-scheduled-task-id-to-avoid-duplicate-tasks.md: added, not in the BC? snapshot yetmicrosoft/skills/review/al-performance-review.md: modified, not in the BC? snapshot
Context
- Systems: platform, development
- From the description: “These behaviors depend on platform contracts that are easy to misread from otherwise valid AL code.”
Source: metadata of a merged pull request in microsoft/BCQuality (bcquality): title, labels, changed paths and counts, with a summary in our words. No source text and no description beyond one short quote (D10, D61).