openBoM fundamentals: Part Numbers, Parts, Bill of Materials, Part Catalog

The Bill-of-Materials (or BOM) is the lifeblood of every engineering and manufacturing process. Regardless of how simple or complex the product is, a BOM is required to define what parts go to manufacturing, what parts are bought or assembled, etc. Because of the high diversity of engineering and manufacturing projects, a BOM can and will vary, and be different from other BOMs. As a result, we designed openBoM to be very flexible. Moreover, you can define many things as you would using a familiar spreadsheet paradigm.

Today, I want to review a few fundamental elements of openBoM which will help you plan and maximize the efficacy of your BOM practices with openBoM.

At the moment, a Part Number is the most fundamental “unit” in openBoM. Everything in openBoM is identified by Part Numbers. You can assign a Part Number to a BOM itself, to every part in an Inventory (by “inventory” we mean a part catalog) as well as to an item in a BOM.

Part Number assigned to a BOM and to Items in the BOM:

BOMs come in various flavors: Single level, Part List, and Multi-level. From the standpoint of a model, a BOM is always single level in openBoM and identified by a Part Number. However, if you reference the BOM’s Part Number in a BOM item, the BOM automatically turns multi-level. You can navigate a multi-level BOM using the “Composed of” command and a Multi-level BOM view.

Single level BOM with assigned Part Numbers:

Part Numbers assigned to parts in an inventory (part catalog):

Part Numbers making up a multi-level BOM:

BOM properties are additional attributes that can be added to a BOM. Use the “+Property” command to add a property to the BOM. But please note, all BOM attributes are defined for a specific BOM (i.e., its scope) and from a model’s standpoint, establish a relationships between an item, a Part Number, and a BOM itself. To define item properties you should use an Inventory (or part catalog). You don’t need to strictly use it if you are working with a simple Part lists or more complex multilevel structures; openBOM is flexible enough to handle these situations. For more complex use cases, you may prefer to define items in an inventory (part catalog). More about this in a separate article coming soon.

An inventory (part catalog) allows you to define a list of all Parts that can be used in BOMs. Each Part is defined by a Part Number and attributes which can be added to each item. Inventories allow you to define Parts (standard or engineered) to be used in BOMs. Item properties can be displayed in BOMs.

Conclusion. I hope you found this quick summary of basic openBoM definitions useful. As you can see openBOM is flexible and simple. I will continue to discuss openBOM fundamentals in future articles. If you have any questions, please let me know.

Best, Oleg @

PS. We should know each other better. If you live in a Greater Boston, please let’s have a meeting (coffee is on me). If you’re located in other places, let’s have a virtual coffee session — I will figure out how to send you a real coffee for our virtual coffee session.