community postPlatform, DevOps & Performancecommunity - not Microsoftreviewed - checked by Opus

If You Can't Make It Fast, Make It Feel Fast

When operations take time despite optimization, BC developers can make them feel faster by moving blocking work to the background instead of waiting for user input. The post explores four background processing tools (Page Background Tasks, StartSession, TaskScheduler, and Job Queue), their use cases, and how BC online's auto-scaling distributes batch workloads across server instances to keep UI sessions responsive.

post Stefan Maron

Stefan Maron · 2026-02-24 · 1,311 words · about 6 min

"If users are blocked waiting for a process that doesn't require their input, that is a design choice - not a performance constraint."

Key points

  • How fast a process feels to users matters as much as how fast it actually is; making users wait for work that needs no input from them is a design choice
  • BC offers four layered background options: Page Background Tasks for read-only page data, StartSession for fire-and-forget work, TaskScheduler for database-backed scheduled tasks, and Job Queue for recurring, logged, user-managed jobs
  • Recurring Job Queue entries should never error; let them only find work and create separate transactional entries so one failure does not stop the rest
  • In BC online, TaskScheduler and Job Queue work can run on any server instance in the cluster, while Page Background Tasks and StartSession stay on the caller’s instance
  • In a hearing-aid manufacturing case, moving production planning on order release into a Job Queue removed the user wait and made each planning faster by running them one after another

Quotes

  • “If users are blocked waiting for a process that doesn’t require their input, that is a design choice - not a performance constraint.” (Frames the core insight that separating user experience from technical performance is an architectural decision, not a limitation)
  • “Recurring Job Queue entries should never error. Use Codeunit.Run with error handling, or wrap logic in if not Codeunit.Run(…).” (Provides critical best practice for preventing silent failures that stop background processing without alerting administrators)
  • “If you push heavy work into TaskScheduler or Job Queue entries, that work can be distributed across whichever NST in the cluster has capacity.” (Explains the cloud advantage of database-backed background tasks that enable auto-scaling and server instance load balancing)

AL objects mentioned

As named in the post. A name that matches one object page by exact type and name links to it; the others stay as named.

Context

  • Features: Page Background Tasks, StartSession, TaskScheduler, Job Queue, Change Global Dimensions, Job Queue Category, background session processing

Source: Stefan Maron, community blog. Summary, key points and quotes are derived (CONTENT-NOTICE.md); read the original for the full text.