---
title: "Start, pause, and complete a job"
description: "The job runner is the page an operator works a task on, at /production/work-queue/<id>. Start opens a work session, the part counter and the scrap button write to that session, and pause and complete both close it. Add to count adds to the session's count; Set session total replaces it, which is the mistake that costs a shift. Job History is where sessions are created, edited and deleted, and the right-hand rail carries the job's details, comments, files, queue and a maintenance request form."
category: "Run jobs on the floor"
source_url: "https://www.iotflows.com/docs/production/run-a-job/"
---
# Start, pause, and complete a job

Work a task from the moment you pick it up to the moment you close it out, and log the parts and the scrap as you go.

The *job runner* is the page an operator runs one [task](/docs/production/overview/#split) on: one operation, on one machine, for a quantity of a part. It opens at `/production/work-queue/<id>` when you click a task in the Work Queue, and it is the only page that starts, pauses and completes production work.

Everything the runner records hangs off a *session*: one continuous run of the task, with a start, an end, the good parts logged against it and the scrap. Starting the job opens a session and pausing closes it.

**Before you start**

- A task to run. See [Find your next job in the Work Queue](/docs/production/work-queue/).
- Production Scheduler is part of the Scheduling Engine module. The tab renders for every organization, so seeing it is not proof you are entitled to it. See [Module entitlement](/docs/production/overview/#entitlement).
- Nothing on this page is role-gated. Anyone who can open the task can start it, log parts against it, change its machine and complete it.

## Open the job
1. Go to the Work Queue at `/production?select=work_queue`.
2. Click the task. The runner opens and your filters travel with it in the address bar.

The runner is four regions around a file viewer. The action rail on the left holds progress, **History**, the start control, the part counter, **Scrap** and **Complete Job**.

The panel rail on the right holds the job's details, comments, files, queue and maintenance. The machine's shift status bar runs along the bottom.

![The job runner on the task Spindle run-in after rebuild, with its file viewer open. A row of file tabs runs across the top of the viewer: Drawing.pdf, a selected beam_case_v1_3_NT.stp, a screen recording, a text file, and two more STP files, followed by a chevron for more files and a download icon. The center pane shows a 3D STP model of a machined enclosure, with a small orientation cube at the top right and a hint reading Left click: rotate, Right click: pan, Scroll: zoom. A narrow rail down the left edge carries a Progress header reading 1114 / 5000 over a partly filled bar, 22.3% beside a red clock and 08:00 AM, a History button, a large Resume button with a green play icon, a This Session block with grayed minus and plus buttons around a zero over the line Total: 1114 / 5000, and grayed Add Parts, Scrap and Complete Job buttons. A rail down the right edge stacks Details, Comments, Files, Queue, Maintenance and a Classify button carrying a red 1 badge. A bar across the bottom shows the machine's photograph inside a green ring, the name DMG Mori - SenseAi Embedded and the identifier DMG MORI DMU 80 (HV), with a mixed red and green status bar under a timeline ruler from 8am to 5pm.](/images/production/prod-run-01.webp)

*The job runner on a resumed task, with an STP file open in the viewer and its file tabs running across the top.*

If the task carries a PDF or an image **of its own**, the runner opens it in the viewer for you. It picks the first PDF, or the first image when there is no PDF. A file that reaches the task through its part does not open itself, however many there are, so a task whose only drawing lives on the part opens on `No File Selected`. See [Files, including 3D models](#files).

## Start the job
Press **Start**, the large button below **History**. The task moves to **In Progress** and the platform opens a session against it.

![A cropped detail of the top of the job runner's left rail. A Progress header reads 0 / 200 above an empty progress bar, with 0.0% at the left and a red clock icon beside 01:00 PM at the right. Below sits a History button, and under it a tall bordered button carrying a large circled play icon over the word Start in green, ringed in violet.](/images/production/prod-run-02.webp)

*The Start button in the job runner's left rail. Starting the job opens a work session, and logging parts before that fails with No active session.*

Three things stay disabled until a session is open: the part counter, **Scrap** and **Complete Job**. A task you have not started cannot be finished in one press.

**Start and Resume are the same action.** Pressing **Start** on a fresh task raises the toast **Job resumed**, because the runner sends the same status change either way. The wording is misleading and the task did start.

Starting does not assign the task to you. It flips the status chip, and the change reaches the Work Queue and the board within seconds. See [Pick up a job](/docs/production/work-queue/#pick-up).

## Log good parts
The part counter sits under **This Session**. The minus and plus buttons move the session's count by one, and **Add Parts** opens a keypad for larger numbers.

Every press writes to the server immediately and toasts **Parts updated**. There is no save button and no undo beyond pressing minus.

![The Log Parts dialog. A two-segment control at the top carries Add to count on the left, selected and filled white, and Set session total on the right, with violet callout 1 in front of the first label and callout 2 in front of the second. Under it a recessed panel is headed Parts to Add over a large 8, with the line Session total: 12 beneath. A three-column keypad of the digits 1 to 9, a C, a 0 and a backspace fills the lower half, over a footer holding Cancel at the left and Confirm at the right.](/images/production/prod-run-03.webp)

*The Log Parts dialog. Add to count adds the number you type to the session's count; Set session total replaces it.*

### Log parts
| Mode | Meaning | Use when |
|---|---|---|
| **Add to count** | Adds the number you type to the session's count. The dialog previews the result, so typing `8` into a session that already holds 4 reads `Session total: 12` | You are logging the parts you just made. This is the default and the right answer almost every time |
| **Set session total** | Replaces the session's count with the number you type | You are correcting a count you already logged, and you know the true total for this session |
| **+** and **−** | Add or remove one part | You are counting at the machine, one part at a time |

**Use add when you are logging the parts you just made, and set when you are correcting the running total.** Operators reach for set out of habit and overwrite a shift's count with the last hour's.

Two details make that mistake survivable. **Set session total** replaces the count for the current session only, not for the whole task, so an earlier shift's sessions keep their numbers. And a session you have overwritten can be repaired in **History**, see [Session history](#history).

The minus button is disabled at zero, so a session count cannot go negative. If the write fails the runner toasts **Failed to update parts** and reloads the task, and the number on screen snaps back to what the server holds.

Scrap is logged the same way, from the **Scrap** button beside the counter. Every scrap entry needs a reason, see [Log scrap and manage scrap reasons](/docs/production/log-scrap/).

> **Warning:**
> **Two part counts, one screen**
>
> The **Progress** bar at the top of the rail counts the parts you logged by hand, summed across every session.
>
> The **Quantity** line in the **Details** panel shows what the machine's sensor counted, or the override a planner typed in the Scheduler table.
>
> The two numbers are collected differently and will not match. The saw job in the screenshots on this page reads `24 / 40` in the rail and `12 / 40 pcs` in the panel at the same moment, with nothing wrong: the operator logged 24 by hand and the sensor counted 12. See [Troubleshoot inaccurate part counts](/docs/production/troubleshoot-part-counts/).

## Pause and resume
Press **Pause** to stop for a break, a shift change or a breakdown. The **Pause Session** dialog opens on the session's count so you can correct it before the session closes.

1. Check **Parts Made This Session**. It is prefilled with what you logged, and the stepper or the field changes it.
2. Add scrap rows if the session produced scrap that is not logged yet. Each row needs a quantity and a reason.
3. Write a **Session Notes** line. The placeholder asks for the reason for pausing.
4. Press **Pause Session**.

The task moves to **On Hold**, the platform closes the session, and the runner toasts **Job paused**.

![A cropped detail of the job runner's whole left rail on a paused job. The Progress header reads 24 / 40 over a bar filled just past halfway, with 60.0% at the left and a red clock beside 01:00 PM at the right. Under the History button, the large action button carries a circled play icon over the word Resume in green. Below it the This Session counter reads 0 with its minus and plus buttons grayed out over the line Total: 24 / 40, and the Add Parts, Scrap and Complete Job buttons are grayed out with it.](/images/production/prod-run-04.webp)

*The job runner's left rail on a paused job, where Start has become Resume. Pausing closes the session and resuming opens a new one.*

Press **Resume** to carry on. The task returns to **In Progress**, the platform opens a **new** session, and the counter starts again at zero. The total above it keeps every session's parts.

A task run across three shifts therefore holds three sessions, which is exactly what **History** shows. That is the record the shift reports and the cost report read.

**A paused job cannot be completed.** **Scrap** and **Complete Job** are both disabled while the task is on hold, because there is no session to write to. Press **Resume**, then **Complete Job**.

## Complete the job
Press **Complete Job**. The dialog is the pause dialog with one section added.

1. Confirm **Parts Made This Session**. This is the last chance to correct the number before the session closes.
2. Check the scrap rows, and add any that are missing.
3. Read the inventory summary, described below.
4. Write a closing note if the next person needs one.
5. Press **Complete Job**.

The task moves to **Completed**, the session closes, and the runner toasts **Job completed**.

**Parts Consumed** and **Added to Inventory** appear above the notes when the task touches stock. They are a read-only statement of what closing the job does: the material it deducts, the parts it adds, and the tools it hands back to the crib. To change either list, close the dialog and edit the task's parts, see [Required and created parts](/docs/production/create-a-job/#parts).

The section is hidden when you pause, because a pause moves no stock.

A scrap row with a quantity and no reason blocks the save. The dialog stops with **Please select a reason for all scrap entries** and outlines the row in red.

## Reopen a completed job
On a task that reads **Completed** or **Approved**, the large button becomes **Reopen Job**.

Press it, write a **Reason for reopening**, and press **Reopen**. The task returns to **In Progress** and the runner toasts **Job reopened**.

Reopen when the parts came back from inspection, or when the job was closed on the wrong count. Do not reopen to add a forgotten session: **New Session** in **History** does that without disturbing the status.

### Job actions
| Action | Ends the session | Reversible | Available on |
|---|---|---|---|
| **Start** | No, it opens one | Yes, pause or complete | Web and mobile |
| **Pause** | Yes | Yes, **Resume** | Web and mobile |
| **Resume** | No, it opens a new one | Yes, **Pause** | Web and mobile |
| **Complete Job** | Yes | Yes, **Reopen Job** | Web and mobile |
| **Reopen Job** | No | Yes, complete it again | Web and mobile |

Every action is on both platforms, none is role-gated, and none has a keyboard shortcut. The labels differ: the mobile buttons read **Start Work Order**, **Resume Work Order** and **Reopen Work Order**, see [On mobile](#mobile).

## Session history
**History**, at the top of the left rail, opens the **Job History** dialog. It works at any status, including on a task nobody has started.

![The Job History dialog. A header reads Job History over Saw manifold billet · MS-7420 Manifold. Two tiles beneath give Good Parts 24 in green and Scrap 2 in red. A Work Sessions row follows, carrying 3h 7m total, a count chip reading 4 and a blue New Session button. Two date headings, Sun, Sep 20th, 2026 and Sat, Sep 19th, 2026, group four cards. Each card shows a time range such as 6:12 AM to 7:39 AM, a clock and a duration, a pencil and a trash icon, then Good and Scrap tiles. The two cards with scrap carry a Scrap Breakdown block naming the reason, its note and its quantity, and every card ends with the operator's session note. A Close button sits in the footer.](/images/production/prod-run-05.webp)

*The Job History dialog: good parts and scrap totaled across every session, then one card per session with its own edit and delete controls.*

The two tiles at the top are the task's totals, summed across sessions. Below them, sessions are grouped by date and ordered newest first.

Each card carries its time range, its duration, its good and scrap counts, the scrap broken down by reason with each entry's own note, and the session note. It does not name who logged the session or who last edited it, so put anything the next shift needs into the note itself. A session still running reads **In Progress** where its end time would be.

**New Session** opens the session editor with a **Start**, an **End**, a **Good Parts** stepper, scrap rows and a note. On a task with no sessions yet, the editor prefills the quantity ordered and the scheduled window, which is the case where you are closing out yesterday's job this morning.

The pencil on a card opens the same editor on that session. The trash asks **Delete Session** and warns that it cannot be undone, then toasts **Session deleted**.

> **Warning:**
> **Deleting a session deletes its parts**
>
> A session carries the good parts and the scrap logged against it. Removing the session removes both from the task's totals, and from every report that reads them.
>
> Edit the session instead when the times are wrong but the counts are right.

The editor refuses a window it cannot store, and says which rule you broke: **Session cannot start in the future**, **Session cannot end in the future**, **Start time must be before end time**, **Start and end time cannot be the same**, or **Overlaps with another session**, naming the job it collides with and the times.

That overlap check reaches across jobs. It compares against every other production task on the same machine, so it catches a backfilled session that claims the press was running two jobs at once.

## The job detail panels
The rail down the right edge opens one panel at a time over the viewer. **Details**, **Comments**, **Files**, **Queue** and **Maintenance** are panels; **Classify** opens a modal.

![The right side of the job runner. The Details panel is open, headed Details with a close cross, then the job title Saw manifold billet in cyan over two chips, PO-1012 and MS-7420 Manifold · OP10 Saw, each with a cross to clear it. Rows below give Machine with a thumbnail beside Haas EC-1600 and EC-1600ZT-5AX, Quantity reading 12 / 40 pcs over a part-filled progress bar, Due 9/18/2026, Duration 1h 18m, an Assigned To row holding one avatar and the name M. Reyes, and a Notes block reading Customer PO: 44823 and Plant: 1000. The rail down the right edge stacks six icon buttons, Details highlighted, then Comments, Files, Queue, Maintenance and Classify, the last carrying a red badge reading 58. Violet callouts 1 to 5 sit in the left padding of the first five buttons.](/images/production/prod-run-06.webp)

*The job runner's right-hand rail with the Details panel open. The red badge on Classify counts stops on this machine that nobody has given a reason.*

**Details** is an editor, not a summary. Four fields change the task from here, and each one saves as soon as you set it.

| Field | How to change it | Notes |
|---|---|---|
| Parent job | Press the job chip and pick a job | The cross beside the chip clears it |
| Part and operation | Press the operation chip and pick an operation | Changing it changes what the task counts |
| Machine | Press the machine row, then pick a machine | Toasts **Machine updated** |
| Quantity | Click the number, type, press **Enter** | **Escape** cancels |

The rest of the panel is read-only: the part number, the due date, the duration, the assignees and the task's notes. Assignees cannot be changed here, see [On mobile](#mobile).

**Queue** lists the tasks waiting behind this one and jumps to any of them. It holds only work assigned to you or to one of your teams, even though the page loads the whole queue, so an operator with no assignments reads `No items in queue` while the floor has plenty of work.

**Classify** opens the machine's activity list filtered to **Unclassified**, and the red badge counts the stops on that machine nobody has given a reason. Clearing it from here is the same action as clearing it from the machine page, see [Classify a downtime](/docs/monitoring/classify-downtime/).

The machine bar along the bottom draws the current shift for the machine the task runs on. Gray stretches are time the sensor reported nothing, not downtime. Clicking the bar opens the same machine modal as the **Machine** row above.

## Comments
**Comments** is a chat room attached to the task, not a notes field. Messages persist on the work order, and everyone who opens the task sees the whole thread.

Use it for the things the next shift needs and the session note is too small for: a fixture that needs shimming, a tool that is running long, a photograph of a bad edge.

A task created before its chat room existed reads `No chat available for this job`. Log what you need in the session note instead.

## Files, including 3D models
**Files** lists everything the task can open, in two sections. **Work Order Files** are attached to this task. **Part Files** come from the part, so they appear on every task for every operation on that part.

Clicking a file opens it as a tab in the center viewer. Tabs stay open until you close them, so a drawing and a setup sheet can sit side by side.

### File types the viewer renders
| File | Opens as | Controls |
|---|---|---|
| `.pdf` | An embedded document | Your browser's own PDF controls |
| `.jpg` `.jpeg` `.png` `.gif` `.bmp` `.webp` `.svg` | An image | Zoom from 50% to 300%, and a reset |
| `.step` `.stp` `.iges` `.igs` `.stl` | A 3D model you can rotate | The viewer's own camera controls |
| `.mp4` `.webm` `.ogg` `.mov` | A video player | Play, scrub, volume |
| `.mp3` `.wav` | An audio player | Play, scrub, volume |
| `.txt` `.json` `.xml` `.csv` `.md` | Plain text | None |
| Anything else | `Preview not available for this file type` | **Download File** |

![The center of the job runner with two tabs above the viewer: a document tab reading manifold-rev-c.pdf and an active tab carrying a cube icon and a truncated manifold-rev... name, each with its own close cross. A download icon sits at the far right of the tab strip. The viewer below renders a shaded 3D model of the manifold body, a long block with two raised bosses and three port bores through the top face, drawn in white against the panel. A small orientation cube sits at the top right of the viewer, and a pill along the bottom reads Left click: rotate, Right click: pan, Scroll: zoom.](/images/production/prod-run-07.webp)

*A STEP file open in the job runner's center viewer, which renders 3D models alongside PDFs, images and video.*

The download icon at the right of the tab strip saves the file you are looking at. A file attached to the task while you have the runner open opens itself in a new tab.

**Attach the drawing to the part, not to the task.** A drawing on the part reaches every task on every operation for that part, and a drawing on one task reaches that task alone. See [Add pictures and files](/docs/production/parts-and-operations/#files).

The one thing you give up is the automatic open. The runner only auto-opens a file the *task* carries, see [Open the job](#open), so an operator working from a part drawing has to press **Files** and click it. Attach it to the part anyway and take the extra click: a drawing that lives on one task is invisible on the next operation.

## Raise a maintenance request
**Maintenance** opens a maintenance request form inside the runner, with this task's machine already filled in. Give it a title, a description, a priority and a due date, attach photographs, and press create. It toasts **Maintenance request created**.

The request is a maintenance work order and lands in Maintain. Nothing about the production task changes: it stays **In Progress**, and its session keeps running while you fill the form in.

**Use this panel for the fault that just stopped you, and Maintain for everything else.** From here the machine is filled in and you are already standing at it, which is what makes the request worth writing. Planned work, work on another machine and recurring work belong in [Submit a maintenance request](/docs/maintain/submit-a-request/).

Setting a recurrence without a due date stops with **Set a due date first**. A failed create reads **Failed to create request**, and nothing was saved.

## On mobile
The runner switches to the mobile layout inside the iOS and Android apps, and in any browser window narrower than 640 px. **The runner adds one rule the rest of the Work Queue does not: at 1024 px or wider it uses the web layout anyway**, so an iPad in the app gets the desktop runner in landscape.

![The job page on a phone. A header carries a back chevron labeled My Work, a wrench icon and a comments icon, then a part thumbnail beside WO #1043 and the title Bore and ream, with a green In Progress chip at the right. Below, an amber Pause button and a green Complete button sit side by side, ringed in violet. A Production Summary card follows, holding a circular progress ring reading 30 of 50, then Good Parts 30 and Scrap Parts 2 tiles, each carrying a This Session line. A This Session card with large minus and plus buttons around a 12 sits under it, then rows for All Production Sessions, the machine, and Classify Downtime.](/images/production/prod-run-08.webp)

*The job page in the mobile app with the job running. Pause and Complete sit side by side above the production summary; completion is a button, not a slide.*

The mobile page carries the same job and the same sessions, arranged as a scrolling list.

- The primary action sits at the top: **Start Work Order**, **Resume Work Order**, **Pause** beside **Complete**, or **Reopen Work Order**. Completing a job is a button press, not a slide.
- **Production Summary** draws the total as a ring. The **Good Parts** tile opens the keypad, and the **Scrap Parts** tile opens a scrap sheet that will not save until you pick a reason code.
- The keypad's mode toggle reads **Add to count** and **Absolute**, and the button under it reads **Add Parts** or **Set Count**. Absolute is the same thing as **Set session total** on the web.
- The **This Session** stepper vibrates on each press and ignores a second press inside 200 ms, so a gloved double tap counts once.
- **All Production Sessions** opens the same **Job History** dialog.
- **People** lists the requester and the assignees, with **+ Add** beside them. This is the only place in the Work Queue where you can put your own name on a task.
- **Attachments** adds files from **Photos**, **Camera**, **Video** or **File**. Photographs are converted to WebP and capped at 1600 px before upload. Part files are listed but cannot be removed here.
- **Classify Downtime** carries the shift bar and the unclassified count, and the wrench in the header opens the maintenance form.

**The mobile viewer does not render 3D models.** A `.step` or `.iges` file opens in the plain file view, which cannot draw it. Open that task on a desktop runner when you need the model.

## When something fails
| Message | What happened | What to do |
|---|---|---|
| **No active session** | You logged parts or scrap on a task that is not running | Press **Start** or **Resume** first |
| **Failed to update parts** | The count did not save | The runner reloads the task, so read the counter before pressing again |
| **Failed to record scrap** | The scrap entry did not save | Retry from **Scrap**. Nothing was written |
| **Please select a reason for all scrap entries** | A scrap row has a quantity and no reason | Pick a reason, or set that row's quantity to zero |
| **Failed to update work order** | The status change did not save | The chip may already show the new status. Reload the page to see the truth |
| **Failed to update machine** | The machine change did not save | The task is still on the old machine |
| **Failed to create session**, **Failed to update session**, **Failed to save session** | The session editor could not write | Nothing was saved. Check the times against the rules in [Session history](#history) |
| **Failed to delete session** | The session is still there | Retry. Its parts are still counted |
| **Failed to create request** | The maintenance request was not created | Retry from the **Maintenance** panel |

If a part count looks wrong rather than a request failing, start at [Troubleshoot inaccurate part counts](/docs/production/troubleshoot-part-counts/).

## See also
- [Log scrap and manage scrap reasons](/docs/production/log-scrap/)
- [Find your next job in the Work Queue](/docs/production/work-queue/)
- [Create a production work order](/docs/production/create-a-job/)
- [Submit a maintenance request](/docs/maintain/submit-a-request/)
- [Use Operator View on the shop floor](/docs/monitoring/operator-view/#jobs)
