
Odoo Manufacturing Integration
Odoo's distinctive position
Odoo (formerly OpenERP) is distinctive among manufacturing ERPs in several ways. It's open-source at its core, with a paid Enterprise edition adding advanced features. Its architecture is highly modular — customers run only the modules they need (Manufacturing, Inventory, Sales, Purchase, Quality, etc.). And its PostgreSQL data model is openly documented, making integration patterns transparent.
For Horizon, this transparency simplifies several aspects of integration that are opaque in other ERPs. The data model is visible; the customization patterns are visible; the integration paths are clearly documented.
Odoo versions and editions
- Odoo 17 / 16 / 15 Enterprise — current and recent versions, with full Manufacturing module functionality. Primary integration target.
- Odoo Community Edition — open-source version, similar APIs but reduced functionality in Manufacturing module.
- Odoo.sh (Odoo's hosted offering) — same APIs as on-premise, cloud-hosted by Odoo.
- Self-hosted Odoo deployments — common pattern, with customer-managed PostgreSQL.
Integration through Odoo's RPC APIs
Odoo exposes its functionality through two RPC mechanisms:
- XML-RPC — older but stable and widely used. Method-based access to Odoo models, with CRUD operations on records.
- JSON-RPC — modern alternative with JSON payloads. Same model access patterns.
For Horizon integration, both work; JSON-RPC is preferred for new implementations because of better tooling support.
Direct PostgreSQL access as complement
For bulk historical data extraction, direct PostgreSQL read access is often the fastest path. Odoo's schema follows consistent patterns (product.product, product.template, stock.move, sale.order, purchase.order, mrp.production), making queries straightforward. Customer-provisioned read-only database user with access to the relevant tables.
Odoo-specific data objects Horizon reads
- Product templates and product variants (product.template, product.product) with planning attributes
- Stock locations and warehouses (stock.location, stock.warehouse)
- Stock quants and stock moves for inventory positions and history
- Sales orders (sale.order, sale.order.line) with customer and shipping data
- Purchase orders (purchase.order, purchase.order.line)
- Bills of materials (mrp.bom, mrp.bom.line) with their BOM types
- Manufacturing orders (mrp.production) with their work orders
- Routings (mrp.routing) with operations and work centers
- Work centers (mrp.workcenter) with capacity and time efficiency
Odoo Manufacturing module specifics
Odoo's Manufacturing module supports several manufacturing modes:
- Make-to-stock with reordering rules and procurement automation
- Make-to-order with order-driven manufacturing
- Engineer-to-order with project-driven configurations
- Subcontracting with external manufacturing flows
Horizon's integration captures the manufacturing mode per item-warehouse, so planning math respects the mode rather than treating all production uniformly.
Customization handling
Odoo customers commonly add custom modules — either built in-house or sourced from third-party developers. Custom fields, custom models, and modified business logic are typical. The integration approach captures customer-specific customizations during the discovery phase:
- Custom fields on standard models are read via the RPC API in the same way as standard fields
- Custom modules with their own models are handled through extended API queries
- Modified business logic (overridden methods) is respected by the integration when the customization affects data Horizon reads or writes
Alternative integration path
For Odoo deployments where API consumption is constrained or where the customer prefers file-based integration, scheduled CSV exports from Odoo's reporting layer can be delivered to Horizon via SFTP. Used alongside the RPC API path for some customers.
Authentication and connection
- Odoo.sh and on-premise Odoo: XML-RPC or JSON-RPC with username/password or API key authentication. The customer's Odoo administrator creates the integration user.
- PostgreSQL direct access: Read-only database user with access to relevant tables. Standard PostgreSQL authentication.
- VPN or secure tunnel for on-premise deployments without public API exposure.
Write-back patterns
- Planned purchase orders created through purchase.order RPC methods
- Manufacturing order recommendations created through mrp.production RPC methods
- Reordering rule updates on stock.warehouse.orderpoint records
- Forecast data — Odoo's forecasting module is light; many customers replace it entirely with Horizon's forecasting and update reordering rules based on Horizon's outputs
Common Odoo-specific considerations
- Variants and configurable products — Odoo's product variants (size, color, configuration) require explicit handling. The integration treats each variant as a planning entity rather than aggregating to the template level.
- Multi-company setups — Odoo's multi-company structure shares the database with company-level filtering. The integration respects company boundaries while supporting cross-company planning where appropriate.
- Manufacturing flexibility — Odoo supports multiple manufacturing approaches (kits, phantom BOMs, multi-level BOMs, subcontracting) more flexibly than many ERPs. Integration captures the customer-specific patterns.
- Self-hosted vs Odoo.sh — Same APIs, different operational characteristics. Self-hosted deployments have more configuration variability.
- Version migrations — Odoo customers occasionally upgrade major versions, which can affect API contracts. The integration is designed to handle version differences explicitly.


