---
title: "Create parts and operations"
description: "The Parts List at /production?select=parts_list holds every part your plant makes and the operations that make it. A part carries a name, a picture and files; an operation carries the step number, the unit, the quantity per cycle, the detection algorithm and the ideal cycle time, and it is the thing every count, goal and job actually hangs off. Add Part creates a part named New Part with no dialog, and every field after that is edited in place on the row and saved when you leave the cell."
category: "Set up parts and operations"
source_url: "https://www.iotflows.com/docs/production/parts-and-operations/"
---
# Create parts and operations

The parts your machines run, and the operations that make them.

Every production number in IoTFlows traces back to this page. A count, a shift goal, a pace, a scheduled job and a material transaction all belong to an operation, and an operation belongs to a part. Nothing counts until both exist.

**Before you start**

- Sign in as an Organization Owner or Administrator. See [Roles and permissions](/docs/admin/roles-reference/).
- A machine already reporting to IoTFlows, if you want to see the counts land. See [Quickstart: see your first machine's data](/docs/get-started/quickstart/).

This page is the field-by-field reference for the Parts List. If you have never set one up, run [Quickstart: count your first parts](/docs/production/quickstart/) first and come back here for the fields it skipped.

## The parts model
A *part* is a thing your plant makes, named the way your traveler and your purchase orders name it. A part counts nothing by itself. It is a folder with a picture and some drawings in it.

An *operation* is one thing a machine does to that part, for example a roughing pass, a press stroke or a deburr. The operation is where the work happens. It carries the *detection algorithm*, the rule that turns the sensor's signal into cycles, the *ideal cycle time*, how long one good cycle takes, and the units the count is reported in.

Three relationships hold everywhere in the product:

- A part holds as many operations as you like. An operation belongs to exactly one part.
- An operation runs on one or more machines. You assign it from the machine, not from here. See [Detect operations automatically](/docs/production/auto-detect-operations/).
- A scheduled task is one operation on one machine. That is why parts and operations are a hard prerequisite for the scheduler. See [Plan jobs on the scheduler board](/docs/production/scheduler/).

**Create one operation per thing the machine does differently, not one per line on the router.** If two router steps run at the same rate on the same machine, one operation counts both correctly and halves your setup. Split them only when the cycle time, the algorithm or the machine differs.

**You do not need a part to know whether a machine is running.** Machine state, uptime, downtime and utilization come from the sensor alone and appear on the Assets page with no part on file. See [Monitor your fleet on the Assets page](/docs/monitoring/assets-overview/).

![The Parts List at /production?select=parts_list, showing the Sort by and Add Part toolbar, the search box, and four part cards: GB-6610 Gear Blank, PL-3080 Cover Plate, BH-4021 and MS-7420 Manifold. Each card carries the part picture, the part name in sky blue and a paperclip, over a table of its operations with the columns OP, Operation(s), OP UNIT, Description, QTY/OP, Algorithm and Ideal Operation Cycle Time](/images/production/prod-parts-01.webp)

*The parts list. Each part carries the operations that make it.*

## Create a part
1. Open **Production**, then the **Parts List** tab, at `/production?select=parts_list`.
2. Click **Add Part**. A part called `New Part` appears at the top of the list and the dashboard confirms with **Part has been added**. There is no dialog.
3. Click the part's name, type the number your plant already uses, for example `BH-4021`, and press Enter.

Clearing the name and clicking away puts the old name back rather than saving an empty one.

On a phone, **Add Part** opens a sheet with a single **Part Name** field, and submitting it empty returns **Please enter a part name**. The desktop button never asks, so it cannot produce that message.

### Part fields
| Field | Required | Accepts | Used by |
|---|---|---|---|
| **Part name** | Yes | Free text, edited in place on the part header | The Parts List, Shift Production, Historical, the scheduler and every job that runs one of its operations |
| **Part picture** | No | One image, cropped and zoomed in the dashboard. JPEG, PNG, WebP and HEIC all upload | The thumbnail beside the part on Shift Production, on scheduler cards and in the Work Queue |
| **Files** | No | Any number of files of any type, up to the browser's upload limit | The work order, so the operator running the job can open them |

A production part has no number field, no description and no unit of its own. The part name is the number, which is why it is worth typing the plant's real one: a part called `Bracket v2` matches no paperwork anybody on the floor is holding.

![The header strip of a part card on the Parts List with three numbered violet callouts: 1 on the Add Part button in the toolbar above, 2 on the round part picture control at the left of the header, 3 on the open part name input holding BH-4021](/images/production/prod-parts-02.webp)

*Creating a part. The name is the only thing a part needs.*

## Add pictures and files
The picture is the circle at the left of the part header. Click it, choose an image, drag and zoom it inside the crop frame, and confirm. It replaces whatever was there.

Files sit behind the paperclip beside the part name, which carries a badge with the number attached.

1. Click the paperclip. **Files** opens, headed with the part name.
2. Click **Click or drag files to upload**, or drop files anywhere in the panel. Several at once is fine, and each one shows its own progress row.
3. Hover a file for **Download** and **Delete**. Delete asks once, in the row itself, with **Cancel** and **Delete**.
4. With two or more files attached, the download arrow in the panel header takes all of them at once.

Click a file to preview it in place rather than downloading it. PDF, plain text, JSON, XML, CSV and Markdown, images, audio and video, and `.step` and `.stp` CAD models through the built-in viewer all preview. Anything else downloads.

**Attach the drawing here rather than emailing it.** Part files ride along to the work order, so the operator opens the print from the job they are running instead of hunting for it. That is the whole reason the field exists.

![The Files panel headed Files over the part name BH-4021, with a download-all arrow at its top right, listing three attachments: BH-4021.step at 840 KB, BH-4021-REV-C.pdf at 1 MB, each with a colored file icon, and setup-photo.jpg at 249 KB showing a thumbnail of the photo, above a dashed Click or drag files to upload zone and the line 3 files attached](/images/production/prod-parts-03.webp)

*Pictures and files on a part. The operator sees these from the job.*

## Add an operation
1. Click **+ Add operation** at the foot of the part's table.
2. Type the operation name, for example `OP10`, and press Enter. The dashboard confirms with **Operation has been added**.
3. Fill in the rest of the row cell by cell.

Every cell on the row saves when you leave it, by pressing Enter or Tab or by clicking elsewhere. There is no Save button and no draft state, so a half-filled operation is already live.

A new operation arrives with a name and nothing else. Until it has an algorithm it counts nothing, and it does not appear in the assignment list on the machine.

### Operation fields
| Field | Required | Accepts | Effect on counting |
|---|---|---|---|
| **OP** | No | Up to four digits, nothing else | None. It orders the routing. See [Operation sequence](#sequence) |
| **Operation(s)** | Yes | Free text, set when you create the row and editable after | None |
| **OP UNIT** | No | Free text up to 12 characters. Defaults to `ops` | None. It labels the count wherever the operation is shown |
| **Description** | No | Free text, for example `Rough mill` | None |
| **QTY/OP** | No | A number, fractions allowed, with its own unit label beside it. The label defaults to `made` | Multiplies every detected cycle. See [Unit and quantity per cycle](#units) |
| **Algorithm** | Yes, to count anything | One of the four the server offers | Decides what counts as one cycle. See [Choose a production tracking algorithm](/docs/production/choose-an-algorithm/) |
| **Downtime Filter** | No | 0 to 200%. The column appears only when the part has at least one Continuous Analysis operation, and the field is editable only on that operation's row | Converts stops shorter than that share of the cycle time into running time. See [Set cycle times and downtime filters](/docs/production/cycle-times-and-filters/) |
| **Ideal Operation Cycle Time** | Yes, for goals and pace | Hours, minutes, seconds and hundredths, plus a tolerance percentage on the two Discrete algorithms | Continuous Analysis divides running time by it to produce the count. The other three read it for goals only. See [Set cycle times and downtime filters](/docs/production/cycle-times-and-filters/) |
| **Requires** and **Creates** | No | Inventory items | None. They move stock when the work order closes. See [Link required and created parts to an operation](/docs/production/bind-materials/) |

Changing the algorithm on an operation that other machines already run can come back with a **Confirm Algorithm Change** dialog listing those machines. Confirming removes the operation from them. See [Switch to a different algorithm](/docs/production/choose-an-algorithm/#switch).

![One operation row on the Parts List, OP10 Rough Mill, under the column header row OP, Operation(s), OP UNIT, Description, QTY/OP and Algorithm. Four numbered violet callouts sit beside the fields they name: 1 against the round step marker reading 10, 2 against the OP UNIT cell reading ops, 3 against the QTY/OP cell reading 1 made, and 4 against the Algorithm cell's Discrete Analysis pill. The Description cell reads Rough mill both faces](/images/production/prod-parts-04.webp)

*An operation's fields. Quantity per cycle is the field behind most doubled counts.*

## Operation sequence
The *sequence* is the step number the operation holds in the routing, shown as a circle in the **OP** column and joined to its neighbors by a hairline.

1. Click the circle. On an operation with no number yet, hover the row and click the dashed `+`.
2. Type the step number, for example `20`. Digits only, four at most.
3. Press Enter. The rows resort themselves and the marker rings once so you can follow the one that moved. Escape cancels.

Operations without a number sit at the end of the list, in whatever order the server sent them.

> **Warning:**
> **Why did OP100 land above OP20?** Step numbers sort as text, not as numbers, so `100` comes before `20` the same way `Ba` comes before `Bx`. Pad the numbers to a fixed width and the problem disappears: number the routing `010`, `020`, `100` rather than `10`, `20`, `100`.

![The OP and Operation(s) columns of a part table, three rows deep under their column headers. Round step markers reading 10, 20 and 30 sit in a vertical line joined by a hairline, against the operation names OP10 Rough Mill, OP20 Finish and OP30 Deburr](/images/production/prod-parts-05.webp)

*Operation sequence. Create one operation per thing the machine does differently.*

## Unit and quantity per cycle
*Quantity per cycle* is how many parts one detected cycle of this operation produces. It is the **QTY/OP** cell, and it multiplies the count the algorithm arrives at.

| What the machine does | QTY/OP | Result |
|---|---|---|
| One cycle makes one part | `1` | The count is the cycle count. This is the usual case |
| A four-cavity mold shoots four parts | `4` | 100 cycles count as 400 parts |
| Two cycles are needed to finish one part | `0.5` | 100 cycles count as 50 parts |

**Check this cell first when a count comes out doubled or halved.** It is the only field on the row that scales the answer, so a mold changed from two cavities to four shows up here as a count that is exactly half of reality.

The operation carries two unit labels, both free text and both capped at 12 characters:

- **OP UNIT** names what the operation counts, and defaults to `ops`. Set it to `cycles`, `passes` or `strokes` when that reads better on a gauge.
- The label beside **QTY/OP** names what one cycle yields, and defaults to `made`. Set it to `cut`, `shot` or `lbs`.

These are labels, not conversions. Changing `ops` to `lbs` changes what the gauge on [Track production against shift goals](/docs/production/shift-production/#board) says, not what it counts. Use QTY/OP for the arithmetic.

## Edit or delete
Everything on this page is edited in place. Click a cell, change it, and leave the cell.

Parts carry their actions in the `...` menu at the far left of the header, which appears on hover:

- **Archive this part** asks `Are you sure you want to archive part BH-4021?` and confirms with **Part has been archived**.
- **Delete this part** asks `Are you sure you want to permanently delete part BH-4021?` and confirms with **Part has been removed**.

Operations carry an archive icon and a trash icon at the right of the row, also on hover, with the same two confirmations and the toasts **Operation has been archived** and **Operation has been deleted**.

**Archive rather than delete once an operation has produced anything.** Deleting an operation removes its historical association: the production it counted stays in your data, but no longer carries the operation's name, so the run disappears from anything that groups by operation.

Archived parts leave the Parts List. There is no view of archived parts and no restore control in the dashboard, so treat archiving as a one-way move and contact IoTFlows if you need one back. See [Contact support and report bugs](/docs/get-started/get-support/).

## Search and sort the parts list
The search box above the list matches part names and operation names together, so typing `GB-66` finds the part and typing `DEBURR` finds the part that has that operation.

Typing writes the text into the address bar as `?q=`, which means a filtered list is a link. Send `/production?select=parts_list&q=BH-4021` to someone and they open the same view. No match returns `No matches found for BH-4021`.

**Sort by**, at the top left, offers four orders:

| Sort option | Order |
|---|---|
| **Date: New to Old** | Most recently created part first. The default |
| **Date: Old to New** | Oldest part first |
| **Name (A to Z)** | Part name ascending |
| **Name (Z to A)** | Part name descending |

On a phone the same four are in the toolbar's view menu, labeled **Newest**, **Oldest**, **Name A-Z** and **Name Z-A**.

![The top of the Parts List with BH typed into the search box and the Sort by control above it reading Date: New to Old. The list below is narrowed to the single part BH-4021, whose paperclip carries a badge reading 3, over its one operation row OP10](/images/production/prod-parts-06.webp)

*Searching the parts list.*

## See also
- [Choose a production tracking algorithm](/docs/production/choose-an-algorithm/)
- [Set cycle times and downtime filters](/docs/production/cycle-times-and-filters/)
- [Detect operations automatically](/docs/production/auto-detect-operations/)
- [Link required and created parts to an operation](/docs/production/bind-materials/)
- [Troubleshoot inaccurate part counts](/docs/production/troubleshoot-part-counts/)
