It is not uncommon to hear that BOM (bill of materials) is a list of parts, raw materials, and components required to build a product and by placing them in an Excel spreadsheet, the problem of BOM management can be solved. Well… not really. But when we need to design and build complex products we need to go beyond what Excel can do. A finished product includes multiple components and subsystems. Because a list of parts is just a reflection of a more complex data structure interconnected objects representing products, their relationships, additional characteristics, attributes attached files, etc. A robust product structure with multiple BOMs (xBOM) is needed to build an efficient manufacturing process.
I like to call it a product structure (or product DAG – directed acyclic graph) a complex set of interconnected data objects that define how your product is made. At OpenBOM, we developed a flexible and robust data model that is used to represent product structure and BOM. Although, OpenBOM provides a simple yet powerful user experience, understanding the data model of a product structure is crucial for anyone using OpenBOM for BOM management and production planning.
In this article, I aim to demystify the main elements of the OpenBOM data model to manage product structure information. Here are 3 groups :
- The fundamental data objects of a product structure,
- BOM visualization (Single/Multi-level vs Flattened), and
- The differences between Item Object and Instance Object properties.
The picture below shows you an overall product structure data model in OpenBOM:
OpenBOM Product Structure and Data Model
The core elements of the product structure data model in OpenBOM include three key objects:
- Item
- Item Instance
- BOM
Item
Product structure is built from so-called “item”. This is what we call a basic building block. The Item is the object representing anything that can be used in a product structure. This could be a part, assembly, material, documentation, packaging box, or even a virtual item like a process, labor, or service. Each Item is defined within a catalog, which allows for standardized item definitions across multiple BOMs. Every item has properties (attributes) that hold metadata, such as descriptions, part numbers, costs, and even attached files like CAD drawings or specifications. Once an Item is defined in a catalog, it can be referenced in any BOM structure, meaning the same Item can exist across many different assemblies.
Here are two examples of item catalogs where each item is represented by a Part Number and additional properties.
BOM Object
The BOM itself is a structured piece of information associated with an Assembly Item that references other items, both assemblies and simple parts. Each line in a BOM is an Item Instance, which connects the data about the item with specific details relevant to that BOM. This allows for flexible and comprehensive BOM management, where assemblies and parts can be reused across different products.
Item Instance
The Item Instance represents a specific occurrence of an Item within a BOM. When an item is inserted into a BOM from a catalog, OpenBOM links all the item’s attributes from the catalog but allows for creating instance-specific properties.
Part Number is used as a link key. All item properties (such as part description and others) are linked with the item in the catalog, ensuring consistency across all BOMs where the item is used. This is a s single source of truth for item information. However, Instance Properties (like quantity, location, reference designator, or specific calculated properties) can vary from one instance to another. For example, the same part could appear in different assemblies with different quantities.
BOM Visualizations (Grid)
While product structures are as a DAG (Directed Acyclic Graph). This is a structured way to represent the relationships between components and assemblies. We use different ways to visualize it when it comes to the user interface. This visualization is a projection of complex product structures in a way that is easy to navigate, view, or edit. OpenBOM allows you to visualize this product structure in three distinct ways in a grid – Single-level, Multi-level, and Flattened.
Single Level BOM: Displays only the items at a specific level of the BOM, without showing sub-assemblies or their components.
Multi-level BOM: A hierarchical structure view that starts from a top-level item and expands to show sub-assemblies and their components. It allows you to navigate deeper into the product structure.
Flattened BOM: This view starts from any specific assembly, then takes all the items from the DAG (product structure), counts how many times they are used in different assemblies, and presents them in a single, flat list. In this list, the quantities are rolled up, showing how many total instances of each item exist across the entire structure.
Item vs Instance Properties
Understanding the difference between Item Properties and Instance Properties is key to avoiding confusion, especially when thinking about BOM as a structured DAG.
Items in a BOM are connected through assembly-component relationships, which are defined by the DAG. Each item, when inserted into a BOM, has both Item Properties (which are shared across all instances) and Instance Properties (which can vary).
For example, the part number or material of an item remains the same across all instances. However, the quantity or installation instructions might differ for each instance of that item in different BOMs.
Common Questions Around BOM Representations
Here are some typical questions we receive about BOMs and their different representations in OpenBOM:
Q: Why can’t I create two BOMs with the same part number?
A: When you create objects in OpenBOM, the database requires each item to have a unique part number. Without this, the DAG cannot correctly manage the product structure, as items must be uniquely identifiable.
Q: Why can’t I edit instance properties in a Flattened BOM?
A: In a Flattened BOM, all instances of the same item are consolidated into a single line. Since instance-specific properties are suppressed, it’s not possible to edit those properties when the instances are flattened into one view.
Q: What does ‘circular reference found’ mean?
A: This error occurs when the DAG structure accidentally includes a loop, which is not allowed. A circular reference means that somehow an item has been referenced back to itself, creating a cycle, which breaks the acyclic nature of the graph. Circular references can occur as a result of data imports from multiple Excels or by importing data from CAD system with wrong Part Number settings.
Q: How is the xBOM model different?
A: OpenBOM’s xBOM model is an extended version of the standard BOM model, allowing for multiple types of instances and more complex structures. Essentially, OpenBOM adds more flexibility to the DAG, enabling the creation of different BOM types and supporting a more sophisticated representation of product structures. The xBOM model allows you to create multiple BOM types such as engineering BOM, manufacturing BOM, etc.
Conclusion
OpenBOM provides a flexible, robust, and scalable data model for managing any type of product structure with all the necessary attributes. With a deeper understanding of the data objects and visualizations in OpenBOM, you now have the tools to manage product structures more efficiently, whether working with single-level, multi-level, or flattened BOMs.
OpenBOM product structure data model is a foundation for managing complex multi-disciplinary data about products. It is super critical in modern product development where products are made from multiple sub-systems: mechanical, electronics, and software. Product structure data model is a foundation of lifecycle management we discuss in the next article. In the meantime, sign up for your FREE 14-DAY OpenBOM trial and see first hand how OpenBOM can help.
Best,
Oleg
Join our newsletter to receive a weekly portion of news, articles, and tips about OpenBOM and our community.