Skip to main content

Overview

mBOM imports let you define multi-level part structures in a single CSV, from top-level assemblies down to individual components. ION supports two ways to describe how parts are nested: Depth notation and Level notation. ION automatically detects which one you are using based on the first column header in your CSV.

Import options

Columns

Ensure part numbers and revisions match existing records exactly. Part matching is case-insensitive.

Depth notation

Depth notation describes your BOM structure by indenting parts one level at a time, similar to how you might indent items in an outline. The top-level assembly is depth 1, its direct components are depth 2, their sub-components are depth 3, and so on. To move back up the tree and start a new branch, return to a lower depth number. Rows must be listed in the order they appear in the assembly. Each component must come after the assembly it belongs to. Example: An assembly (ASSEMBLY-100) contains a bracket and a panel. The bracket itself requires four bolts.
You cannot skip depth levels. For example, jumping from depth 1 directly to depth 3 is not allowed. Each component must be listed directly under its parent assembly.

Level notation

Level notation uses a numbering scheme, such as 1, 1.1, and 1.1.1, to explicitly identify where each part sits in the assembly tree. The number itself tells you the full path from the top-level assembly down to the component. Unlike Depth notation, rows can appear in any order because the level value fully defines each part’s position in the hierarchy. Example: The same assembly as above, with rows intentionally listed out of order to show that ordering does not matter. Here, 1.1 (BRACKET-200) and 1.2 (PANEL-400) are both direct components of 1 (ASSEMBLY-100), and 1.1.1 (BOLT-300) is a sub-component of the bracket, regardless of the row order in the CSV.
Every parent level must exist somewhere in the file. For example, you cannot define 1.1.1 without also having a 1.1 row.
Each level value identifies exactly one row. A file in which two rows share a level is rejected, and the error names both rows.
Spreadsheet software often rewrites a level of 1.10 as 1.1, which collides with the row that is already 1.1. Format the level column as text before you save the file, and check any level ending in a zero.

Cycle detection

ION automatically detects circular references in your mBOM. If assembly A contains part B and part B also contains assembly A (directly or through any chain of intermediate parts), the import fails with a validation error identifying the cycle. This check also applies to substitute parts.