Materials & required resources (operation BOM)

The operation Bill of Materials (BOM template) lets you declare, for each operation within a maintenance programme (PEA), the list of items that will be needed during execution: parts, consumables and tooling. This is not a purchase order — it is the preparation template that will be instantiated every time a Work Order (WO) is opened against this operation.

Practical example: for the 500-hour periodic inspection of the turbocharger, the operation “Remove/refit turbocharger” requires:

  • 2 flange gaskets (consumable, mandatory),
  • 1 M10 × 40 fixing bolt (part, mandatory),
  • 1 calibrated torque wrench 50 Nm (tooling, non-mandatory — if already available on site).

When the corresponding WO is opened, the system pre-fills this list. The technician simply confirms or adjusts the actual quantities used.

The 3 item roles in a BOM

Item roles within an operation

  1. Part — required_part

    An item that physically replaces a worn or life-limited component. It is consumed by the operation: the fitted part enters its own service life, the old one is removed from service. Stock decreases by one unit at the time of the actual issue.

    Examples: fixing bolt, oil filter, sealing gasket, bearing.

  2. Consumable — consumable

    A product or material discarded after use — it never returns to stock. The consumed quantity corresponds exactly to what was used during the operation.

    Examples: hydraulic fluid, anaerobic sealant, thread locker, flat gasket, cleaning solvent.

  3. Tooling — tooling

    A tool or equipment used and then returned to stock. It is not consumed — it follows a check-out / check-in cycle. A calibrated torque wrench, a rivet jig or a portable test bench are typical examples.

    Only items whose PartType is flagged as tooling (isTool = true) may be declared in this role. The picker filters automatically on this criterion.

Standard duration of the operation

Each operation may carry a standard duration in minutes (estimatedDurationMinutes). This field is optional but recommended whenever the duration is known or sourced from a reference manual (e.g. 90 min for the 500-hour turbocharger inspection).

The standard duration is used to:

  • compute the aggregate duration of a task or a full PEA (sum of operations);
  • compare, after execution, the planned duration against the actual duration recorded on the WO;
  • support workshop scheduling (wave L6, upcoming).

The PartType.isTool flag identifies item families that act as tooling (wrenches, jigs, test benches, lifting equipment…). It works analogously to PartType.isContainer, which marks aircraft containers.

When you declare an item in the tooling role within a BOM, the picker only lists PartNumbers whose PartType has isTool = true. You cannot declare an ordinary part as tooling, or vice versa. This filter guarantees consistency in stock movements at execution time.

PartTypes are managed in the Catalogue module. The tooling type is pre-configured by default with isTool = true.

The mandatory flag

The mandatory flag (true/false per BOM line) indicates whether the physical presence of the item is required before starting the operation, or merely recommended.

  • Mandatory = true: WO execution may be blocked if the item is not available in stock (exact enforcement depends on the instance policy, upcoming in wave L5-F).
  • Mandatory = false: desirable but non-blocking (alternative tooling already on site, for example).

Uniqueness constraint

A given PartNumber may appear only once per role within the same operation. If the same PN can play two roles (e.g. both a consumable and a part on the same operation), two separate lines are required.

Self-target guard on component-level tasks

When the parent task tracks a specific component (« Tracking: Component » + target article X), the same physical exemplar can’t be at once the maintained object and the tool/consumable of the operation. The system therefore checks at save time:

Material role PartNumber = task target Behaviour
tooling same as target rejected (400) — a tool can’t be its own tooling
consumable same as target rejected (400) — you don’t consume the part you’re maintaining
required_part same as target allowed — legitimate LRU swap (remove an M88, install another M88, same PN, different SN)

For Tracking: Aircraft tasks none of those checks applies: the target being the aircraft itself, there is no risk of physical confusion with a PartNumber.

Execution effect (upcoming — wave L5-C)

When a WO is opened against this operation, the system instantiates the BOM template:

BOM instantiation when opening a WO

  1. Pre-fill the materials list

    Each BOM template line generates a preparation line on the WO, carrying the standard quantity and the corresponding role.

  2. Technician adjustment

    The technician confirms or adjusts the quantities actually needed (variations allowed within the limits of the reference manual). Items not in the template may also be added.

  3. Automatic stock issue

    When the operation is closed, the confirmed quantities automatically generate outbound stock movements for required_part and consumable items. tooling items follow a return movement (check-in).

V1 limitations

  • Unit inherited from the PartNumber: the unit of measure (pcs, litre, kg, ml…) is the one defined on the PartNumber. It cannot be overridden line by line within the BOM.
  • No advance stock reservation: the BOM template does not trigger any reservation or picking before the WO is opened. Reservation management is planned for wave L5-F.
  • No kitting or upstream picking: grouping materials into a kit and upstream picking by the storekeeper ahead of the work are planned for wave L5-D.

See also