Skip to main content

Overview

The Parts importer lets you bulk-create or revise parts in a single CSV. It supports the same revision behavior as the UI: rows with an explicit revision create or update that exact (part_number, revision), while rows that omit revision either initialize a new part at the org’s default revision scheme or auto-revise an existing part using the latest-revision flow (carrying over the source part’s mBOM and extensible attributes).

Columns

ColumnRequiredDescription
part_numberYesThe part number.
revisionNoThe part revision. Omit to let ION assign the next revision automatically (or the scheme’s initial value if the part is new).
revision_schemeNoName of the revision scheme to use when creating a brand-new part. Defaults to the org’s default scheme.
descriptionNoFree-text description.
statusNoPart status. One of released or archived. Matched case-insensitively.
purchase_typeNoPurchase type. One of receivable_inventory, receivable_non_inventory, or non_receivable_non_inventory. Matched case-insensitively.
tracking_typeNoTracking type (e.g. serial, lot, none). Matched case-insensitively.
sourcing_strategyNoSourcing strategy. One of make, buy, or dual_source. Matched case-insensitively.
costNoDefault unit cost. Empty cells become 0.
lead_timeNoLead time in days. Must be non-negative. Empty cells become 0.
reorder_minimum_quantityNoReorder minimum. Must be non-negative. Empty cells become 0.
reorder_maximum_quantityNoReorder maximum. Must be non-negative. Empty cells become 0.
export_controlledNoWhether the part is export controlled. Boolean field (see accepted values).
unit_of_measureNoUnit of measure name (e.g. each, kg). Must match an existing unit in ION.
quality_clausesNoSemicolon-delimited list of quality clause reference names to attach to the part.
supplier_partsNoSemicolon-delimited list of supplier-part records. See Supplier parts below.
Part matching is case-insensitive. Enum fields (status, purchase_type, tracking_type, sourcing_strategy) only accept the values listed above — an invalid value produces a row-level error listing the allowed options.

Revisions

The Parts importer mirrors the UI’s revision flow:
  • Row with an explicit revision — looks up (part_number, revision). If it exists, the row updates that part; otherwise it creates a new part at that exact revision.
  • Row without a revision, no existing part with that part_number — ION assigns the initial revision from the configured revision_scheme (or the org’s default scheme, typically "A" or "1").
  • Row without a revision, existing part with that part_number — ION computes the next revision from the latest existing revision and creates a revised part. The new part inherits the mBOM and extensible attributes of the source part.
You cannot have two rows that both omit revision for the same part_number — ION cannot disambiguate which one should auto-bump. Specify revisions explicitly to fix the conflict.Likewise, an explicit-revision row that collides with an auto-bumped revision from another row (e.g. one row sets revision = B and another auto-bumps to B) is rejected as a duplicate.

Supplier parts

The supplier_parts column attaches one or more SupplierParts to the part. Use semicolons (;) to separate records and pipes (|) to separate fields within a record:
supplier_name|supplier_part_number|cost|conversion_factor;supplier_name|...
FieldRequiredNotes
supplier_nameYesMust match an existing supplier in ION.
supplier_part_numberYesThe supplier’s part number for this part.
costNoFalls back to the Part’s cost if omitted.
conversion_factorNoDefaults to 1.0. Must be greater than 0.
Example: Acme|ACME-WID-001|4.25|1;Globex|GLX-W1 If a SupplierParts row already exists for the (part, supplier, supplier_part_number) combination, the importer updates its cost and conversion_factor in place. Otherwise it inserts a new row.

Quality clauses

The quality_clauses column accepts a semicolon-delimited list of quality clause reference_name values. Each must match an existing Requirement with requirement_type = QUALITY_CLAUSE. The importer skips associations that already exist, so re-imports are idempotent. Example: QC-001;QC-002

Custom attributes

Any column not in the standard list above is treated as a custom attribute on the part. Custom attribute columns must match a configured attribute key for your organization; unknown columns cause a validation error. For general import behavior, empty cell handling, and error reporting, see Importers.