← All guides

Job Queue setup in Business Central for retail workloads

Configuration · 9 min read

A line of plain task cards passing one by one through an arch under a wall clock, with shop shelves behind
Overnight, queued work moves one entry at a time — on schedule, not all at once.

Every retail Business Central system accumulates background work: reports nobody should wait for, synchronisation that should happen while the store is closed, posting that should not queue behind a cashier. The Job Queue is where that work belongs — but only if entries are set up deliberately. A Job Queue built by accumulation, one forgotten entry at a time, eventually produces the two classic symptoms: an overnight job that silently stopped weeks ago, and a recurring job that runs so often it slows the system it was meant to help.

This guide sets up the Job Queue the retail way: the right entries, recurrence that respects performance, and failure handling that surfaces problems before the morning shift finds them.

Two schedulers, two jobs: do not confuse them

Business Central's Job Queue Entries page is used to schedule and run specific reports and codeunits, either one time or on a recurring basis. That is a Business Central mechanism, running Business Central objects. It is not the LS Central Scheduler, which moves replication data between head office and stores — that pipeline has its own article on this site. Keeping the boundary clear prevents the most common diagnostic error in a retail estate: hunting for a missing report in the replication monitor, or hunting for missing prices in the Job Queue log.

Microsoft's own examples show the shape of the tool: run the Salesperson - Sales Statistics report weekly to track sales by salesperson, or run the Delegate Approval Requests codeunit daily so documents do not pile up. Retail adds its own candidates to the same pattern — scheduled reports and batch jobs, background posting of sales and purchase orders so that only one order is processed at a time when several users post at once, and scheduled synchronisation where Business Central integrates with another application. The mechanism is identical; only the workload changes.

What belongs in the retail Job Queue

Use this decision framework before creating any entry. A job belongs in the Job Queue when all three answers are yes:

Permissions shape the plan as well. The person setting up an entry must have permission to run the report or codeunit it calls. A user with the SUPER permission set can run all objects included in the licence, while a user with the Delegated Admin role can create and schedule entries but only administrators and licensed users can actually run them. In practice: build entries while signed in as a properly licensed user whose permissions match the job, or the entry will be created happily and fail faithfully every night.

Setup procedure: create a recurring entry that survives a bad night

  1. Define the entry on Job Queue Entries. Add the entry with its object type (report or codeunit), object ID and name, parameter string where the object needs one, and the schedule — when it runs and how often. Expect the new entry to start in status On Hold: that is the default status when an entry is created, not an error.
  2. Set recurrence conservatively, then tighten only with evidence. Recurring job queues can affect performance and should not run too frequently. Choose the largest interval the business can tolerate: before settling on five minutes, test whether fifteen minutes or once per hour serves the same need. Weigh the length of a single run and whether the job touches an area where many people work during trading hours.
  3. Give the entry retry headroom. Job queue entries stop running when there is an error — a failed connection to an external service is the documented example — and otherwise need a manual restart. Set Maximum No. of Attempts to state how many times the entry may fail before it stops trying, and Rerun Delay (sec.) to state the seconds between attempts. Together they let an entry ride out a temporary outage instead of dying on the first failed attempt.
  4. Use a category where sequencing matters. Entries can carry a category code. The Waiting status exists precisely for categorised entries: an entry shows Waiting when it is scheduled but its underlying task is not active, and when the running entry in the same category finishes, the next Waiting entry in that category becomes Ready. Use one category for jobs that must never overlap — overnight posting and the reports that read its results are the retail case.
  5. Set up failure notifications before the first failure. Run the Set Up Job Queue Notifications assisted setup from the Assisted Setup page. Choose who is notified — the person who started the entry, job queue administrators, or both — and how: in-product notifications at the top of the home page, or an external business event driving a Power Automate flow subscribed to the Job queue task failed event, for which Business Central provides a ready-made Outlook notification template. Choose immediate notification or thresholds so only repeated failures alert. The notification can later be toggled on the My Notifications page under Job Queue Failed Notification.
  6. Release it deliberately. Change the status from On Hold to Ready with the Set Status to Ready action. A successful one-time job is then removed from the list of entries when it finishes; a recurring job stays, with its Earliest Start Time adjusted to show the next run. If that field does not advance after a run, the job did not complete the way the status suggested.

Recurrence without performance pain

The Earliest Start Date/Time field deserves respect: it shows the next time the job will run, but whether the job actually runs then depends on the number of job queue entries in the environment and the overall number of scheduled tasks, because operational limits protect performance. One long or failed entry can push the next job past its expected start. Two habits keep an estate honest. First, review the Scheduled Tasks page, which lists all scheduled tasks and the company each runs in — if codeunits are generating very large numbers of scheduled tasks, in the order of 100,000 or more, investigate whether they are all needed. Second, remember the copy trap: only tasks marked as belonging to the current environment can run, and all scheduled tasks stop if the company sits in an environment that is a copy of another environment. After any environment copy or sandbox refresh, use the Scheduled Tasks page to set tasks ready again instead of assuming the schedule survived.

SymptomFirst checkMeaning
Entry never startsStatus fieldStill On Hold from creation, or On Hold Due to Inactivity for synchronisation entries
Entry starts lateEarliest Start Date/Time and Scheduled TasksQueue volume or a long-running earlier entry pushed it back
Entry waits behind anotherCategory codeWaiting is correct behaviour inside a shared category
Entry vanishedWas it recurring?A successful one-time entry is removed from the list by design

What success looks like

A healthy retail Job Queue is checkable in under a minute. Every recurring entry shows Ready or In Process — never a stale Error nobody owns. After each scheduled run, Earliest Start Time has advanced to the next occurrence. The Job Queue Tasks cue on the home page, which shows tiles for tasks failed, in process, and in queue, shows zero failed tasks waiting for attention. And the My Job Queue part, which lists entries the signed-in user started that are not finished, is empty of surprises. If those four checks pass on a Monday morning, the weekend's background work actually happened.

When an entry stops: restart, attempts, and notifications

When an entry shows Error, choose Show Error to read the message, then restart the entry — set its status to On Hold and then to Ready, or restart it directly. That is the documented first move, and it resolves the temporary-cause failures. Note what On Hold does not do: setting an entry to On Hold does not affect a job that is already running; a started job runs to completion regardless of changes to its entry. To see the history behind an error, open the entry and choose Log Entries — the data the job queue generates is stored for troubleshooting, and on recent versions the Copy details action on the Job Queue Log Entries page copies the job queue ID, timestamp, and timezone, which is exactly what a partner or Microsoft support will ask for, along with the AL stack trace in the log that identifies the owner of the failing code.

If restarts keep failing, the attempts settings from the setup procedure are the difference between a nuisance and an outage: without them, the first error stops the entry until a human notices. With Maximum No. of Attempts and Rerun Delay set sensibly, transient failures self-heal and only genuine faults reach the notification the assisted setup configured. For estates that need earlier warning, administrators can also monitor the job queue with Azure Application Insights telemetry and set alerts on job queue issues. The rule that ties it together: no retail entry should be able to fail silently. If an entry has no notification, no owner, and no cue check, it is not finished being set up — whatever its status says.

Note: statuses, field names, and procedures above follow Microsoft Learn's Business Central job queue documentation as accessed for this article. Test recurrence and retry settings in a sandbox or copy company before applying them to a live retail environment.

IndexBack to all guides →