Other ERPsFree referencePDF, Excel, Word exportOdooDiscrete Manufacturing

Odoo Manufacturing Technical Model Names Reference

Every Odoo screen is backed by a model with a technical name, and every integration, report or import eventually needs those names. This reference lists the manufacturing, inventory, purchase and sales models you meet most often, with the fields people query.

Download:
Technical modelWhat it holdsOdoo appCommonly used fields
mrp.production
Manufacturing order
Manufacturing
product_id, product_qty, bom_id, state, date_start
mrp.bom
Bill of materials header
Manufacturing
product_tmpl_id, product_qty, type, bom_line_ids
mrp.bom.line
BOM component line
Manufacturing
bom_id, product_id, product_qty, product_uom_id
mrp.bom.byproduct
By-product line on a BOM
Manufacturing
bom_id, product_id, product_qty
mrp.routing.workcenter
BOM operation (routing step), Odoo 13 and later
Manufacturing
bom_id, workcenter_id, name, time_cycle_manual
mrp.workcenter
Work center
Manufacturing
name, capacity, time_efficiency, costs_hour
mrp.workorder
Work order generated from a BOM operation
Manufacturing
production_id, workcenter_id, state, duration_expected
mrp.workcenter.productivity
Time tracking entries on a work center
Manufacturing
workcenter_id, workorder_id, date_start, date_end, loss_id
mrp.unbuild
Unbuild order
Manufacturing
mo_id, product_id, product_qty, state
product.template
Product template (the item as users see it)
Inventory
name, type, uom_id, tracking, standard_price
product.product
Product variant (the stockable record)
Inventory
default_code, product_tmpl_id, barcode
uom.uom
Unit of measure
Inventory
name, category_id, factor, uom_type
stock.warehouse
Warehouse
Inventory
name, code, lot_stock_id
stock.location
Stock location
Inventory
complete_name, usage, location_id
stock.picking.type
Operation type (receipt, delivery, manufacturing)
Inventory
name, code, warehouse_id
stock.picking
Transfer (receipt, delivery, internal)
Inventory
picking_type_id, partner_id, state, scheduled_date
stock.move
Planned or done stock movement
Inventory
product_id, product_uom_qty, location_id, location_dest_id, state
stock.move.line
Detailed operation line with lot and location
Inventory
move_id, lot_id, quantity (qty_done before Odoo 17)
stock.quant
On-hand quantity per product, location and lot
Inventory
product_id, location_id, lot_id, quantity, reserved_quantity
stock.lot
Lot or serial number (stock.production.lot before Odoo 17)
Inventory
name, product_id
stock.scrap
Scrap order
Inventory
product_id, scrap_qty, location_id, scrap_location_id
stock.warehouse.orderpoint
Reordering rule (min/max)
Inventory
product_id, location_id, product_min_qty, product_max_qty
stock.route
Route such as Buy or Manufacture
Inventory
name, rule_ids
stock.rule
Procurement rule inside a route
Inventory
route_id, action, picking_type_id
stock.valuation.layer
Inventory valuation layer
Inventory (accounting)
product_id, quantity, value, stock_move_id
purchase.order
Purchase order
Purchase
partner_id, state, date_planned, order_line
sale.order
Sales order
Sales
partner_id, state, commitment_date, order_line
res.partner
Customer, vendor or contact
Contacts
name, supplier_rank, customer_rank

Field names shift between Odoo versions. Confirm in Settings > Technical > Models with developer mode on, or with fields_get, before relying on a field in code.

Want Odoo data answered in plain English?

Optional: a short call on read-only natural-language access to your ERP data.

Optional. The tool and every export work without this. No spam.

How to use this reference

Search by model name, plain-language meaning or field. Use the technical name in XML-RPC and JSON-RPC calls, in import templates (the Import button accepts model field names), in automated actions, and when you write custom reports in the database. Switch on developer mode in Odoo and open Settings, Technical, Models to confirm the exact fields in your version before you code against them.

  • Search the list for mrp to see all manufacturing models
  • Use product.template for item master data and product.product for variants
  • Check the Odoo version column notes for renamed models
  • Export the table to Excel to share with a consultant

How the models connect

A manufacturing order (mrp.production) points to a BOM (mrp.bom), whose lines (mrp.bom.line) become raw material stock.move records. Operations on the BOM (mrp.routing.workcenter) become work orders (mrp.workorder) on a work center (mrp.workcenter). Physical stock lives in stock.quant, one row per product, location and lot. Moves change quants when they reach the done state. Understanding that chain tells you where to look when a number looks wrong.

Version differences that bite

Odoo renames things between releases. Lots moved from stock.production.lot to stock.lot in Odoo 17, and the done quantity field on move lines changed from qty_done to quantity. Routings were a separate model in older releases and became BOM operations in Odoo 13. Always test a query on a copy of your database for your exact version, and keep the version in the name of any script you share.

Common mistakes

Querying product.template when you need the variant, so stock numbers come back wrong. Writing to stock.quant directly instead of using inventory adjustments, which skips valuation and moves. Assuming a quant quantity is available; reserved_quantity must be subtracted. Treating draft moves as stock. Each of these produces plausible numbers that do not match what the warehouse sees.

Frequently Asked Questions

How do I find a model's technical name in Odoo?

Turn on developer mode, then open any record and use the bug icon menu to view fields, or go to Settings, Technical, Models and search. The Model column shows the technical name such as mrp.production, and the Fields tab lists every field with its type.

Is there a database table for each model?

Yes. Odoo stores each model in PostgreSQL with dots replaced by underscores, so mrp.production becomes the mrp_production table. Direct SQL is fine for read-only reporting, but use the ORM or the external API for any write so computed fields and stock logic still run.

Which model holds on-hand inventory?

stock.quant holds on-hand quantity per product, location and lot or serial. Available quantity is quantity minus reserved_quantity. Stock moves record the history, but quants are the current state, so inventory reports and reorder logic read from them.

Do these names work in Odoo Online and Odoo.sh?

Yes for the standard apps, since the models are the same. Odoo Online restricts custom code and direct database access, so use the external API there. Enterprise-only apps such as Quality add their own models that are not in this list.

If you want to ask questions of your Odoo or other ERP data in plain English instead of writing RPC calls, Netray can set that up read-only and on-prem.