Odoo Manufacturing Integration

Horizon integrates with Odoo Manufacturing through Odoo's XML-RPC and JSON-RPC APIs, plus PostgreSQL database access for bulk data. Odoo's open-source foundation and modular architecture make integration patterns particularly flexible.
Odoo's open-source heritage and modular structure make it unusual among ERPs — customers can extend, modify, and customize extensively, and the data model is openly documented. The integration approach takes advantage of this transparency.

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.