Skip to main content
An as-built bill of materials (aBOM) tracks the build process of parts in a hierarchical tree. The aBOM records which part instances and lots are used to create parts, subsystems, and systems. The aBOM is a more detailed version of the mBOM, with relations to physical inventory rather than to parts.

Set up part inventory

To create an aBOM, you need inventory. For details on creating inventory, see Manage part inventory and kitting. A part with inventory has a part number, and that part should have an mBOM. ION uses this mBOM to create the aBOM. When you first create the part inventory, it has only empty build requirements. Build requirements define the parameters for what parts you can install.

Install parts

You install a part by creating an aBOM installation. An aBOM installation links inventory to buildRequirements. To uninstall a part, delete its aBOM installation. Create the aBOM installation with this mutation:
mutation CreateABomInstallation($input: CreateABomInstallationInput!) {
    createAbomInstallation(input: $input) {
        abomInstallation {
            buildRequirementId
            buildRequirementReferenceDesignatorId
            partInventoryId
            quantity
        }
    }
}
Set the variables:
{
    "input": {
        "buildRequirementId": 1,
        "partInventoryId": 3,
        "quantity": 1
    }
}

Edit build requirements

You can add build requirements to an inventory that don’t originate from the mBOM. Create the build requirement with this mutation:
mutation CreateBuildRequirement($input: CreateBuildRequirementInput!) {
  createBuildRequirement(input: $input) {
    buildRequirement {
      fixedQuantityPerBuildRequirement
      id
      madeOnAssembly
      originMbomItemId
      partId
      partInventories {
        id
      }
      quantityPerParentPartInventory
    }
  }
}
Set the variables:
{
  "input": {
    "partId": 1,
    "partInventoryId": 484,
    "quantityPerParentPartInventory": 5,
    "madeOnAssembly": false
  }
}
Update the build requirement with this mutation:
mutation UpdateBuildRequirement($input: UpdateBuildRequirementInput!) {
    updateBuildRequirement(input: $input) {
        buildRequirement {
            fixedQuantityPerBuildRequirement
            id
        }
    }
}
Set the variables:
{
  "input": {
    "id": 1031,
    "etag": "dca4e886ecce4a499d15411006a6d82a",
    "quantityPerParentPartInventory": 8
  }
}
This example changes the quantityPerParentPartInventory of the buildRequirement. You can also change the fixed quantity, made-on-assembly designation, substitutes, and reference designators.