Skip to main content
Made on Assembly (MOA) is a flag on a build requirement that marks a child part as constructed directly onto the parent during the parent’s run, rather than as its own separate run. See Bills of materials overview for how the flag sits on the line.

How MOA changes the workflow

ION creates an inventory’s build requirements from its part’s mBOM when the inventory is created, which for a build is usually when you create the run that builds it. ION uses the part’s latest released mBOM version, or the version the procedure pins when Enable mBOM version selection is on.

Configuring MOA on a build requirement

From the mBOM card on the part page, with the version in Draft:
  1. Find the build requirement’s row.
  2. Select the Made on Assembly checkbox in that row.
New inventory picks up the flag once that mBOM version is the one ION builds from.
You can also add a part to an existing aBOM as made on assembly: turn on the Add as MOA switch before selecting the part in Edit Mode of the Part Installs (aBOM) dialog, or the Made on assembly switch in the run step’s Part installs picker. See Edit build requirements and Edit a run step’s build requirements.
Made on assembly is fixed once a build requirement exists. You can’t turn it on for an existing requirement. You can turn it off only while the requirement has no installs and isn’t assigned to a run step.

How operators install MOA build requirements

ION installs the made-on-assembly sub-assembly onto the parent when it creates the parent’s build requirements, so you don’t install the sub yourself. The run step’s Part installs right rail offers no install picker for it, and the kit’s Install button skips it. The work during the run is installing the sub’s child parts:
  1. In the Part Installs (aBOM) dialog, click Show installs on the made-on-assembly requirement.
  2. Install each child part into the requirements listed under it, the same way you install any other part. To open the sub’s own tree, click Expand aBOM on its row.
A made-on-assembly requirement reads complete when its child requirements are installed.

When an assembly’s quantity changes

Changing an assembly inventory’s quantity scales its build requirements to the new quantity. The made-on-assembly inventory built onto it resizes to match its build requirement, level by level through nested made-on-assembly parts. Two kinds of inventory keep their own quantity:
  • Inventory installed on the assembly that isn’t made on assembly.
  • Made-on-assembly inventory on a serial-tracked requirement.
You can’t change a made-on-assembly inventory’s quantity directly. Change the quantity of the top-level assembly it’s built into instead.

A serial-tracked MOA part at a quantity above one

When a made-on-assembly build requirement is for a serial-tracked part at a quantity above one, that quantity is that many separate physical assemblies. ION treats them that way:
  • Each unit is created with its own serial number, and each serial is unique for the part number.
  • Each unit carries its own set of child build requirements, so an install is attributable to the unit that received it.
  • Progress is measured per unit. Over-filling one unit doesn’t cover a unit that’s still empty, so the requirement reads short until every unit meets its own demand.
Each unit is serialized inventory in its own right: you can find it by its serial number, and it can’t be split or merged into other inventory.

Install child parts into a specific unit

In the Part Installs (aBOM) dialog, click Show installs on the made-on-assembly requirement. It lists one sub-assembly section per minted unit, headed by that unit’s serial. Install into the section for the unit you are holding. Each section writes to its own inventory, so ION attributes the install to that unit. For a unit with child requirements, click Expand ABOM in its section to open that unit’s tree. The run step’s Part installs right rail also lists the units. You can open a unit’s own tree only from the Part Installs (aBOM) dialog. Requirements that aren’t serial-tracked don’t split by unit. Their child parts list once, under the requirement itself. A run step that still has an unmet requirement on any unit can’t be completed, unless your organization turns on Allow run steps to complete without required install. For more information, see Configure run enforcement.
A run created before per-unit requirements were introduced keeps the shape it started with: one shared set of child requirements across the units. In the Part Installs (aBOM) dialog those units collapse into a single shared section. Only new runs get per-unit requirements.

Assign an MOA child to a run step

A made-on-assembly child requirement can be assigned to a run step in the same run, like any other build requirement, from the Part Installs (aBOM) dialog. The step must be in Redline. For the steps, see Edit build requirements.

MOA and traceability

MOA preserves full traceability in both directions:
  • Top-down: the parent’s aBOM leads to the MOA sub’s aBOM, then to the leaf installations. This is the same recursive tree as a normal sub-assembly.
  • Bottom-up: a leaf part, such as a fastener, installed in an MOA sub traces up through the MOA sub to the top-level parent.

MOA and Autoplan

In Autoplan, a made-on-assembly component is planned as a placeholder item, because the parent’s run builds it. Its own components still create demand, so Autoplan plans them like any other part.

MOA and run batches

When the parent is part of a run batch, each run in the batch has its own made-on-assembly sub-assembly and child requirements. A made-on-assembly requirement you add to one run stays on that run. To add it to the rest of the batch, turn on Edit Mode and click Apply to N runs in batch on its card. Each run receives it as made on assembly.

MOA and kitting

A run’s kit covers the child parts of its made-on-assembly sub-assemblies, so you kit them with the parent’s run instead of ahead of it.

Troubleshooting

Cause: The sub’s child parts weren’t installed. ION creates and installs the made-on-assembly sub-assembly itself, but its child parts are installed during the run like any other part.Fix: Install the remaining child parts under the made-on-assembly requirement in the Part Installs (aBOM) dialog.Cause: Made on Assembly was turned on after the parent’s build requirements were created. Existing requirements keep how they were created, so the line stays a normal requirement that expects an existing sub to install.Fix: Set Made on Assembly on the mBOM version ION builds from before you create the run.
Cause: ION installs a made-on-assembly sub-assembly onto the parent when it creates the requirement, so the run step’s Part installs right rail and the kit’s Install button offer no install for it.Fix: Install the sub’s child parts, listed under the made-on-assembly requirement.