Odoo 19.0 Community · Persistent

mrp.bom: fields, relations and API

The mrp.bom model ("Bill of Material") is a persistent model declared by the Manufacturing module, then extended by 4 other modules. It exposes 45 fields, 26 of them declared directly on the model; 16 fields from other models point to it. Below you will find every field with its technical name, type, label and relations, followed by an Odoo 19 JSON-2 API call.

Model identity

Technical name
mrp.bom
Label
Bill of Material
Type
Persistent (models.Model)
SQL table
mrp_bom
Origin module
Manufacturing (mrp)
Extended by
mrp_subcontracting, purchase_mrp, project_mrp, sale_mrp
Default order (_order)
sequence, id
Display field (_rec_name)
product_tmpl_id
Inherits from (mixins)
mail.threadproduct.catalog.mixin

Model fields

26 own fields, 13 inherited from mixins and 6 automatic ORM fields. Click a name to get a direct link to that field.

45 of 45 fields shown

Technical nameLabelTypeDetails
activeActiveboolean
allow_operation_dependenciesOperation Dependencies

Create operation level dependencies that will influence both planning and the status of work orders upon MO confirmation. If this feature is ticked, and nothing is specified, Odoo will assume that all operations can be started simultaneously.

boolean
batch_sizeBatch Size

All automatically generated manufacturing orders for this product will be of this size.

float
bom_line_idsBoM Linesone2many

inverse: bom_id

byproduct_idsBy-productsone2many

inverse: bom_id

codeReferencechar
company_idCompanymany2one
consumptionFlexible Consumption

Defines if you can consume more or less components than the quantity defined on the BoM: * Allowed: allowed for all manufacturing users. * Allowed with warning: allowed for all manufacturing users with summary of consumption differences when closing the manufacturing order. Note that in the case of component Highlight Consumption, where consumption is registered manually exclusively, consumption warnings will still be issued when appropriate also. * Blocked: only a manager can close a manufacturing order when the BoM consumption is not respected.

selection
required

Values: flexible (Allowed), warning (Allowed with warning), strict (Blocked)

days_to_prepare_moDays to prepare Manufacturing Order

Create and confirm Manufacturing Orders this many days in advance, to have enough time to replenish components or manufacture semi-finished products.

integer
enable_batch_sizeEnable Batch Sizeboolean
operation_countOperations Countinteger
computed
operation_idsOperationsone2many

inverse: bom_id

picking_type_idOperation Type

When a procurement has a ‘produce’ route with a operation type set, it will try to create a Manufacturing Order for that product using a BoM of the same operation type.If not,the operation type is not taken into account in the BoM search. That allows to define stock rules which trigger different manufacturing orders with different BoMs.

many2one
possible_product_template_attribute_value_idsPossible Product Template Attribute Valuemany2many
computed
produce_delayManufacturing Lead Time

Average lead time in days to manufacture this product. In the case of multi-level BOM, the manufacturing lead times of the components will be added. In case the product is subcontracted, this can be used to determine the date at which components should be sent to the subcontractor.

integer
product_idProduct Variant

If a product variant is defined the BOM is available only for this product.

many2one
product_qtyQuantity

This should be the smallest quantity that this product can be produced in. If the BOM contains operations, make sure the work center capacity is accurate.

float
required
product_tmpl_idProductmany2one
required
product_uom_idUnit

Unit of Measure (Unit of Measure) is the unit of measurement for the inventory control

many2one
required
project_idProjectmany2one

added by MRP Project (project_mrp)

ready_to_produceManufacturing Readinessselection
required

Values: all_available ( When all components are available), asap (When components for 1st operation are available)

sequenceSequenceinteger
show_copy_operations_buttonShow Copy Operations Button

Technical field used to control the visibility of the 'Copy Existing Operations' button.

boolean
computed
show_set_bom_buttonShow Set Bom Buttonboolean
computed
subcontractor_idsSubcontractorsmany2many

added by MRP Subcontracting (mrp_subcontracting)

typeBoM Typeselection
required

Values: normal (Manufacture this product), phantom (Kit)

has_messageHas Messageboolean
computed

inherited from mail.thread

message_attachment_countAttachment Countinteger
computed

inherited from mail.thread

message_follower_idsFollowersone2many

inverse: res_id

inherited from mail.thread

message_has_errorMessage Delivery error

If checked, some messages have a delivery error.

boolean
computed

inherited from mail.thread

message_has_error_counterNumber of errors

Number of messages with delivery error

integer
computed

inherited from mail.thread

message_has_sms_errorSMS Delivery error

If checked, some messages have a delivery error.

boolean
computed

inherited from mail.thread

message_idsMessagesone2many

inverse: res_id

inherited from mail.thread

message_is_followerIs Followerboolean
computed

inherited from mail.thread

message_needactionAction Needed

If checked, new messages require your attention.

boolean
computed

inherited from mail.thread

message_needaction_counterNumber of Actions

Number of messages requiring action

integer
computed

inherited from mail.thread

message_partner_idsFollowers (Partners)many2many
computed

inherited from mail.thread

rating_idsRatingsone2many

inverse: res_id

inherited from mail.thread

website_message_idsWebsite Messages

Website communication history

one2many

inverse: res_id

inherited from mail.thread

create_dateCreated ondatetime
read-onlyautomatic
create_uidCreated bymany2one
read-onlyautomatic
display_nameDisplay Namechar
read-onlycomputedautomatic
idIDinteger
read-onlyautomatic
write_dateLast Updated ondatetime
read-onlyautomatic
write_uidLast Updated bymany2one
read-onlyautomatic

Relations

Models linked from this model

Fields of other models pointing here

Reading this model through the API

Odoo 19 JSON-2 API call reading the first five records with real fields of the model. Replace the instance, database and API key with your own.

curl
curl -X POST "https://your-instance.odoo.com/json/2/mrp.bom/search_read" \
  -H "Authorization: bearer $ODOO_API_KEY" \
  -H "X-Odoo-Database: your-db" \
  -H "Content-Type: application/json" \
  -d '{"domain":[],"fields":["product_tmpl_id","consumption","product_qty","product_uom_id","ready_to_produce"],"limit":5}'
Python (requests)
import requests

BASE_URL = "https://your-instance.odoo.com/json/2"
headers = {"Authorization": f"bearer {API_KEY}", "X-Odoo-Database": "your-db"}

res = requests.post(
    f"{BASE_URL}/mrp.bom/search_read",
    headers=headers,
    json={"domain": [], "fields": ["product_tmpl_id","consumption","product_qty","product_uom_id","ready_to_produce"], "limit": 5},
)
res.raise_for_status()
print(res.json())
  • External API access requires Odoo's Custom plan.
  • XML-RPC and JSON-RPC will be removed in Odoo 22 (fall 2028): use JSON-2.
  • The access rights and record rules of the key's user apply.

Cite this tool

Writing a tutorial, internal documentation or a forum answer? Copy this link to send your readers to the up-to-date reference.

<a href="https://aidoo.ai/en/outils/explorateur-modeles-odoo/mrp-bom">mrp.bom (Odoo 19.0)</a>

Sources

Data verified on September 23, 2026 · Odoo 19.0 Community

Have an Odoo project, or want to put your ERP to work with AI? Let's talk

Implementation, custom module development, connecting Claude or ChatGPT to your data: tell us about your context and we will reply within 24 business hours.