> ## 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.

# As-built BOM imports

> Record installed parts on a received assembly from a CSV file.

## Overview

The **As-built BOM (aBOM)** importer records installations onto an assembly you received already built, such as a PCBA from a contract manufacturer. Each row is one installation: the assembly's inventory record, the inventory record installed into it, and how much. For how the import wizard works, see [Importers](/administration/ion-importers).

The importer never creates inventory. Both the assembly and every installed part must already exist as inventory records, and you reference them by inventory ID. The assembly's part must have a released mBOM, because that is what tells ION which positions the parts install into. When the assembly has no as-built structure yet, ION builds one from its mBOM before installing.

<Warning>
  An import onto an assembly that already has parts installed on it is rejected, because it would install those parts a second time. Uninstall the existing parts before you import again. Parts that ION installs on made-on-assembly positions by itself don't count.
</Warning>

## Columns

| Column | Required | Description |
| - | - | - |
| `root_inventory_id` | Yes | Inventory ID of the assembly being installed into. |
| `installed_inventory_id` | Yes | Inventory ID of the part being installed. |
| `quantity` | Yes | How much of the installed inventory goes into the assembly. Must be a number. |
| `reference_designator` | No | The designator this installation fills, such as `U12`. Required only when the assembly's structure offers more than one position the part could fill. |

## How a row is matched to a position

ION matches each row against the positions in the assembly's as-built structure:

* A row matches a position that accepts the installed part. Substitutes and interchangeable revisions count, so an installed part does not have to be the exact part the mBOM names.
* When several positions accept the part, `reference_designator` decides which one. Leave it out and the row fails, asking you to add one. ION never guesses.
* A designator that no matching position has is a row error.
* A made-on-assembly position can't receive an installation from this importer. ION installs those parts itself when it builds the assembly's structure.

<Info>
  Rows are also checked against each other. Several rows drawing on the same lot can't together take more than the lot holds, and several rows can't overfill one reference designator.
</Info>

Depending on your settings, the importer also enforces [Require Install Intent Match](/administration/quality-settings/configure-intent-control-policies) and [Restrict installs to the assigned kit](/administration/supply-chain-settings/restrict-installs-to-the-assigned-kit) on each row.

## Errors

The import is all-or-nothing: nothing is written unless every row resolves. Most errors are reported against the CSV row that caused them and name the value to fix, such as a `root_inventory_id` that isn't found, a `quantity` that isn't a number, or an assembly whose part has no released mBOM to build a structure from. An assembly that already has installed parts is reported for the whole file.

If another import is writing to an assembly in the same file, the import fails. Wait for the other import to finish, then import again.

## Start the import from receiving

On the [receiving page](/manage-supply-chain/receiving/receive-parts), the selected purchase order has an **Import as-built BOM** link that opens this importer in a new tab. Depending on your settings, the link appears only when imports are enabled for your organization.


## Related topics

- [As-built BOM (aBOM)](/build-hardware/bills-of-materials/as-built-bom.md)
- [Data model](/api/data-model.md)
- [Overview](/build-hardware/bills-of-materials.md)
- [Trace as-built inventory](/build-hardware/bills-of-materials/trace-as-built.md)
- [CXOs](/getting-started/role-guides/cxos.md)


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.