code change · featurePlatform, DevOps & Performanceofficial - Microsoftreviewed - checked by Opus

#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.

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? snapshot
  • microsoft/knowledge/performance/job-queue-category-code-serializes-conflicting-jobs.bad.al: added, not in the BC? snapshot yet
  • microsoft/knowledge/performance/job-queue-category-code-serializes-conflicting-jobs.good.al: added, not in the BC? snapshot yet
  • microsoft/knowledge/performance/job-queue-category-code-serializes-conflicting-jobs.md: added, not in the BC? snapshot yet
  • microsoft/knowledge/performance/job-queue-external-effects-must-be-idempotent.bad.al: added, not in the BC? snapshot yet
  • microsoft/knowledge/performance/job-queue-external-effects-must-be-idempotent.good.al: added, not in the BC? snapshot yet
  • microsoft/knowledge/performance/job-queue-external-effects-must-be-idempotent.md: added, not in the BC? snapshot yet
  • microsoft/knowledge/performance/job-queue-handlers-must-not-require-ui.bad.al: added, not in the BC? snapshot yet
  • microsoft/knowledge/performance/job-queue-handlers-must-not-require-ui.good.al: added, not in the BC? snapshot yet
  • microsoft/knowledge/performance/job-queue-handlers-must-not-require-ui.md: added, not in the BC? snapshot yet
  • microsoft/knowledge/performance/job-queue-handlers-must-propagate-failures.bad.al: added, not in the BC? snapshot yet
  • microsoft/knowledge/performance/job-queue-handlers-must-propagate-failures.good.al: added, not in the BC? snapshot yet
  • microsoft/knowledge/performance/job-queue-handlers-must-propagate-failures.md: added, not in the BC? snapshot yet
  • microsoft/knowledge/performance/job-queue-on-hold-does-not-stop-running-work.bad.al: added, not in the BC? snapshot yet
  • microsoft/knowledge/performance/job-queue-on-hold-does-not-stop-running-work.good.al: added, not in the BC? snapshot yet
  • microsoft/knowledge/performance/job-queue-on-hold-does-not-stop-running-work.md: added, not in the BC? snapshot yet
  • microsoft/knowledge/performance/oncompanyopen-subscribers-must-not-do-io.md: modified, not in the BC? snapshot
  • microsoft/knowledge/performance/store-scheduled-task-id-to-avoid-duplicate-tasks.bad.al: added, not in the BC? snapshot yet
  • microsoft/knowledge/performance/store-scheduled-task-id-to-avoid-duplicate-tasks.good.al: added, not in the BC? snapshot yet
  • microsoft/knowledge/performance/store-scheduled-task-id-to-avoid-duplicate-tasks.md: added, not in the BC? snapshot yet
  • microsoft/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).