bcquality/microsoft/knowledge/performance/store-scheduled-task-id-to-avoid-duplicate-tasks.md
Stefano Demiliani 8c26ba4e76
Some checks are pending
Validate knowledge index / validate-index (push) Waiting to run
Validate AL review fixtures / validate-review-fixtures (push) Waiting to run
Validate frontmatter and structure / validate (push) Waiting to run
Add Job Queue reliability and scheduling guidance (#148)
* knowledge(performance): add job queue reliability guidance

* Address Job Queue review feedback

* Address Job Queue routing review feedback

* Encode job queue conflict in fixtures
2026-09-14 12:44:30 +02:00

1.4 KiB

bc-version domain keywords technologies countries application-area
all
performance
task-scheduler
scheduled-task
taskexists
duplicate-task
createtask
guid
al
w1
all

Store the scheduled task ID to avoid duplicate tasks

Contributions welcome — open a PR to refine or extend this article.

Description

Every call to TaskScheduler.CreateTask creates a new scheduled task and returns its unique GUID. Repeating setup or lifecycle code without retaining that GUID can create multiple tasks for the same logical work, consuming scheduler capacity and running the work more than once.

Best Practice

Persist the GUID returned by CreateTask at the same scope as the logical task. Before creating a replacement, parse the stored GUID and call TaskScheduler.TaskExists; create and store a new task only when the previous task no longer exists. TaskExists checks one GUID, not whether an equivalent codeunit is already scheduled, so callers that can schedule concurrently still need serialization around this check-and-create sequence.

See sample: store-scheduled-task-id-to-avoid-duplicate-tasks.good.al.

Anti Pattern

Calling TaskScheduler.CreateTask every time initialization, login, setup, or another repeatable path runs while ignoring its return value. Each invocation creates another independent task even when an equivalent task is already pending.

See sample: store-scheduled-task-id-to-avoid-duplicate-tasks.bad.al.