# Assemblies

An **assembly** is a collection of *bulk items* that is *built* together. Assemblies can be built from units of any bulk item in your [items catalog](/set-up-the-basics/items.md), but are usually built based on a [bill of materials (BOM)](/set-up-the-basics/items.md#define-bill-of-materials-bom) you've defined.

Assembly is the final step in the **parts workflow** before parts become a production asset:

{% @mermaid/diagram content="---
title: Parts workflow
config:
look: handDrawn
theme: neutral
--------------

graph LR
Shipment --Receive--> Inventory --Build--> Assembly --Register--> Asset
style Assembly fill:#F5F9FF
" %}

## List all assemblies

To see a list of all assemblies, navigate to the [assemblies page](https://assets.hardfin.com/assemblies). Here you will see a table with each assembly, along with the following information:

* **Reference number.** Assembly reference number (assigned by Hardfin)
* **Product.** The product that the assembly is based on
* **Location.** The location where the assembly was built
* **Build date.** The date that the assembly was built
* **Actions.** Actions to take on the current assembly

<figure><img src="/files/P0u076Q3v9WFmBvfp2l0" alt=""><figcaption><p>Assembly list page</p></figcaption></figure>

## Viewing assembly details

The **details** of any assembly can be viewed by clicking on the assembly. Assembly details break down across 3 sections:

* build information (an overview of the assembly and its build history)
* parts used (a detailed listing of the parts and serials used to build the assembly)
* notes provided as part of the assembly process

<figure><img src="/files/0RiL3ArqOS6Tuyzwu8Eu" alt=""><figcaption><p>Example assembly build information</p></figcaption></figure>

The build information section includes a link to the originating shipment when parts were received from an inbound shipment. This allows you to trace the assembly back to its source shipment for supply chain traceability and quality assurance purposes.

<figure><img src="/files/IkjpjrKsY5wlz2L3miyH" alt=""><figcaption><p>Example assembly parts information</p></figcaption></figure>

### BOM deviation indicators

When an assembly is built with parts that differ from the product's standard bill of materials (BOM), a **BOM deviation indicator** appears on the assembly. This helps quality assurance and operations teams quickly identify assemblies that were built differently than specified.

**Common reasons for BOM deviations:**

* Substituting alternative parts due to inventory shortages
* Using updated component versions
* Custom configurations for specific customer requirements
* Engineering changes not yet reflected in the product BOM

BOM deviations are automatically detected by comparing the parts used in the assembly against the expected BOM for that product. The system checks both part types and quantities to identify any differences.

## Add an assembly

You can **create** an assembly by clicking the "Create assembly" button.

<figure><img src="/files/ZaXxEvGTWjtfoldY2dAI" alt="" width="375"><figcaption><p>"Create assembly" window</p></figcaption></figure>

When you choose a product, the assembly interface will pre-populate with your [bill of materials (BOM)](/set-up-the-basics/items.md#define-bill-of-materials-bom) information, if available. You can fill in all the details of your assembly, including:

* assembly location
* build date
* planned serial number (optional)
* parts used
* parts quantities
* any serial numbers known for serialized parts (optional)

<figure><img src="/files/7sv5aiynFzNnRghHbh6K" alt="" width="375"><figcaption><p>Example "create assembly" with details</p></figcaption></figure>

When an assembly is created, the associated units are drawn down immediately from parts inventory at the location where the assembly takes place. If any additional modifications are needed, the assembly should be updated or disassembled.

### Exceeding available inventory

{% hint style="warning" %}
Note: Users are **allowed** to exceed available inventory when building an assembly.
{% endhint %}

You are allowed to exceed available inventory counts at a given location when building an assembly. This is **not** recommended. However, it is permitted to ensure that separate duties can be carried out effectively.

Team members assembling units (operations workers) are usually not the same team members (operations supervisors or finance team) responsible for inventory reconciliation. So assembly creation is the one place where the Hardfin platform allows inventory counts to go "negative" in order to ensure that assembly workflows are not blocked by a delayed inventory reconciliation. If the team members on the ground have the parts to do their job, delayed inventory counts should not slow them down.

In the event that negative counts are created, Hardfin automatically tracks them for future reconciliation as soon as new units are transferred to the assembly location. For more information, see [batching and traceability](/source-and-build/batching-and-traceability.md).

## Register an asset

An assembly can be **registered** as an asset by clicking the "Register as asset" button on an assembly row.

*Registering an assembly as an asset* opens a window that provides the key details about the assembly, offers an opportunity to confirm the asset **serial** and add an asset **description**. The serial numbers of each part can also be updated or confirmed.

<figure><img src="/files/TVWEY5ujipqnckfJK533" alt="" width="375"><figcaption><p>Register assembly as asset window</p></figcaption></figure>

If the product has metadata fields associated with it, the option to specify **metadata** for the new asset is also provided. This is most commonly used to specify additional asset details, such as firmware or software versions.

### Finalizing asset registration

When you **register** an assembly, you finalize the creation of a new [asset](/run-your-business/assets.md) from the assembly components, with the corresponding details you have provided. Once an assembly has been registered, the assembly links to the registered asset and the assembly itself can no longer be updated. If any additional modifications are needed, they should be made as modifications to the asset.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://guide.hardfin.com/source-and-build/assemblies.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
