Skip to main content
← All capabilities
Available now

Platform capability · Background Jobs

Track, retry and cancel long-running jobs

Jobs that keep their state, report progress, retry and can be cancelled

A shared job engine for bulk import and export, reports, batch processing, scheduled tasks and your own job types. Every job goes through the same states, reports progress and follows the retry policy you set. A job that still fails after its retries is kept so it can be reviewed and run again. Each job handler receives a key that makes a retry safe, and must use it.

Built in

What you get

  • Export in the background from any list endpoint, with a choice of fields
  • Import in the background, with errors reported for each row
  • File formats: CSV, XLSX, JSON and your own
  • Job states: queued, running, paused, completed, failed, dead
  • Safe retries: a job that runs again uses its key to avoid applying the same change twice
  • Live progress reporting
  • Each customer’s jobs are kept apart, with limits from the plan
  • Notification when a job completes or fails
  • Scheduled jobs that respect time zones
  • Your own job types, declared in the app declaration
  • Workers can be added for each service as load grows
  • An OpenTelemetry trace for every job run
  • Export jobs save their position, so a paused job resumes from where it stopped
Under the hood

How it works

One set of job states for every kind of work

Bulk export, bulk import, reports, batch recalculation, scheduled clean-up and syncs with other systems are all background jobs. They share the same states, the same retry rules and the same monitoring. You declare a job type in the app declaration. The engine handles queuing, running, progress and notification.

Retries do not repeat the work

Each job handler receives a key that identifies the job run. The handler uses it to avoid applying the same change twice when a job is retried. Data export jobs also save their position in the data and the state of the uploaded file. A paused or interrupted export resumes from the last saved position and does not start again.

Limits for each customer

Each customer has its own job queue and its own limit on jobs running at once. One customer starting ten exports does not hold up another customer’s scheduled report. Limits are set in the plan and enforced by the scheduler.

Want a deeper walkthrough of Background Jobs?

A solution architect will demo the live service against your domain model.

Get a deployment assessment