Overview
The Plan Inputs importer adds inputs to existing draft plans — one CSV row per input, with the parent plan identified by plan_id. A single file can target multiple plans.
This importer only creates plan inputs. It never modifies the parent plan itself, and because a plan can legitimately hold multiple inputs for the same part, per-row updates are not supported. To rebuild a plan’s inputs from scratch, enable the Replace existing inputs option in the import modal — ION then removes the plan’s current inputs and recreates them from the CSV.
plan_id | part_number | revision | quantity | due_date | serial_number
42 | WIDGET-A | A | 10 | 2026-05-01 |
42 | WIDGET-B | A | 5 | 2026-05-01 |
42 | WIDGET-C | B | 1 | 2026-05-01 | SN-12345
Import options
| Option | Default | Description |
|---|
| Replace existing inputs | Off | When enabled, the targeted plans’ existing inputs are removed and recreated from the CSV. When disabled, imported inputs are added to the existing ones. |
| Validation only | Off | Run validation without committing changes. Useful for checking a file before a real import. |
Columns
| Column | Required | Description |
|---|
plan_id | Yes | ID of the parent plan. The plan must exist and be in draft status. |
part_number | Yes | Part number of the input. Matched case-insensitively. |
revision | No | Part revision. If omitted and the part has exactly one revision, that revision is used; multiple revisions produce an ambiguity error asking you to specify one. |
quantity | Yes | Input quantity. Must be a non-negative integer. |
due_date | Yes | Due date for the input (e.g. 2026-05-01). |
serial_number | No | Serial number for the input. |
name | No | Display name for the input. |
is_generate_new_demand | No | Whether the input generates new demand. Boolean field (see accepted values). |
is_independent | No | Whether the input is independent. Boolean field (see accepted values). |
Plan inputs can only be added to draft plans. Rows referencing a plan in any other status fail with a row-level error, as do rows referencing a plan ID that doesn’t exist.
This importer does not support custom attributes — any column outside the list above causes a validation error.
Related pages
For general import behavior, empty cell handling, and error reporting, see Importers.