> ## Documentation Index
> Fetch the complete documentation index at: https://docs.firstresonance.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Plan Input Imports

> Bulk-add inputs to existing draft plans from a CSV file.

## 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](/administration/ion-importers#accepted-boolean-values)).                            |
| `is_independent`         | No       | Whether the input is independent. Boolean field (see [accepted values](/administration/ion-importers#accepted-boolean-values)).                                  |

<Warning>
  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.
</Warning>

<Info>
  This importer does not support custom attributes — any column outside the list above causes a validation error.
</Info>

## Related pages

For general import behavior, empty cell handling, and error reporting, see [Importers](/administration/ion-importers).
