20260223 - If You Can’t Make It Fast, Make It Feel Fast
Background processing options in Business Central (page background tasks, start session, task scheduler, job queue) and how to use them so users do not wait. Covers capabilities, limits, error handling, a production order and warehouse request case, and load balancing across NST nodes online.
- Introduction and Housekeeping
- Presenters Henrik and Stefan Introductions
- Session Objectives and Agenda
- Baggage Claim Example - Perception Over Reality
- User Experience vs Performance Philosophy
- Real World Medical Device Manufacturing Case Study
- Production order processing optimization strategy
- Background processing design principles and results
- Background and parallel processing toolkit overview
- Page background task capabilities and design
- Page background task demo and comparison
- Start Session Capabilities and Demo
- Task Scheduler Overview and Methods
- Task Scheduler Demo with Error Handling
- Task Scheduler Usage in Base App
- Job Queue Overview and Architecture
- Job Queue Best Practices and Configuration
- Practical Job Queue Examples with Error Handling
- Multi-Level Job Queue Workflows and Session Distribution
- Load Balancing and Horizontal Scaling
- Q&A on Session Limits and Job Queue Best Practices
- Closing Remarks and Next Steps
Overview
The session argues for user experience over raw performance: if a process cannot be made fast, move work out of the UI thread so the user does not wait. It opens with a baggage claim example and a medical device manufacturing case where production planning on every order release caused two-minute waits. Moving that planning into a job queue entry, and using a warehouse request instead of creating picks immediately, improved perceived speed.
The presenters then compare four tools in order of capability: page background tasks, start session, task scheduler and job queue. Demos cover parallel execution, the task scheduler failure handler, job queue categories, record ID and parameter string, multi-level job queue chains, and load balancing across NST nodes. The Q&A covers session limits and use of page background tasks for API calls. Code examples are on Stefan’s GitHub.
Key points
- Page background tasks load field values and page calculations after the page opens. They are read-only, session-specific, cancelled if the record changes or the page closes, not suitable for list pages, and do not survive server restarts.
- Start session runs a codeunit in another session with read and write access. It has no scheduling, no error logging and no error handling, and it is cancelled if the server crashes.
- Task scheduler is built on start session. It adds one-time scheduling, a failure codeunit that receives error text and call stack, and persistence across server restarts. It is backed by a scheduled tasks table and has no logging out of the box.
- Job queue adds recurring scheduling, automatic logging and a UI. Recurring entries can fail silently, so error handling matters. Categories keep heavy processes from blocking other entries.
- Job queue entries can carry a record ID and a parameter string (described as a hack that works), and can trigger other entries, for example invoice creation, then posting, then payment.
- Stated limit in the cloud: 5 background sessions running per user and up to 100 queued per user. The speaker says this is the latest information and recommends checking the documentation.
- Auto-scaling across NSTs applies to task scheduler and job queue only. Page background tasks and start session run on the same NST as the page. Page background tasks for API calls are fine for reads but risky for writes.
Features
| Feature | Status | At |
|---|---|---|
| Page Background Tasks | status not stated, demoed | 22:49 |
| Start Session | status not stated, demoed | 20:28 |
| Task Scheduler | status not stated, demoed | 21:12 |
| Job Queue | status not stated | 22:15 |
| Job Queue Categories | status not stated, demoed | 40:01 |
| Job Queue Record ID and Parameter String | status not stated, demoed | 41:41 |
| Job Queue Error Handling | status not stated, demoed | 42:04 |
| Task Scheduler Failure Handler | status not stated, demoed | 31:39 |
| Multi-Level Job Queue Workflows | status not stated, demoed | 44:02 |
| Warehouse Request Architecture | status not stated, demoed | 14:02 |
| Production order asynchronous planning | status not stated | 15:17 |
| Business Central Online Compute Node Distribution | status not stated | 45:24 |
| Automatic NST Scaling | status not stated | 46:11 |
| Session Limit - Start Session | status not stated | 50:52 |
| Auto-Scaling Limited to Task Scheduler and Job Queue | status not stated | 52:13 |
| Page Background Tasks for API Calls | status not stated | 54:06 |
AL objects mentioned
As heard in the captions. A name that matches one object page by exact type and name links to it; the others stay as named.
- other “warehouse request” at 14:15
- other “warehouse activity” at 14:34
- other “pick ticket” at 14:54
- table “production order planning request” at 15:29
- table “schedule tasks” at 30:24
- table “job q lock entry table” at 35:31
- codeunit “change global dimension functionality” at 35:13
- codeunit “find customers to process” at 39:39
- table “job Q entry” at 40:01
Not found in BC28-30: table “production order planning request”, table “schedule tasks”, table “job q lock entry table”, codeunit “change global dimension functionality”, codeunit “find customers to process”, table “job Q entry”.
Quotes
- 3:00 “the phrase perception is reality is it’s about how do does a person perceives something that is happening”
- 9:06 “They just made it feel shorter basically because they the passengers were busy walking”
- 9:21 “user experience over performance. And and that’s basically the name of the game here”
- 9:40 “A lot of people will spend hours and days trying to optimize a process. maybe gain 2 seconds if the process is 2 minutes”
- 11:25 “we did production planning on every order. And we did that on release. Uh, and we ended up with, you know, two minute weights,”
Disclaimers in the video
- 7:32 other: this session is not meant to be a detailed deep dive technical and deep dive onto any of these these different tools
- 50:52 subject-to-change: most recent information is that we have five background sessions actively running per user and we can cue up to …
Presenters (as heard): Henrik Halverson, Stefan Moran, Andrew, Arthur, Bquake.
