Skip to content

What is Odoo?

Odoo (formerly known as OpenERP and originally TinyERP) is a comprehensive suite of open-source business applications. The name "Odoo" doesn't stand for anything - it was chosen in 2014 as a distinctive, easy-to-pronounce brand name when the company rebranded from OpenERP.

Overview

Odoo is an all-in-one business management software that covers:

  • CRM - Customer Relationship Management
  • Sales - Quotations, orders, and customer portal
  • Inventory - Stock management, warehousing, and logistics
  • Manufacturing - MRP, work orders, and BOMs
  • Accounting - Invoicing, payments, and financial reports
  • HR - Employees, recruitment, expenses, and timesheets
  • Website & eCommerce - Website builder and online store
  • Project Management - Tasks, timesheets, and planning
  • And 40+ more apps - All integrated seamlessly

Editions

EditionDescriptionLicensing
CommunityFree and open-source with core featuresLGPL v3
EnterpriseAdds advanced features like Studio, IoT, mobile appsProprietary (paid)
Odoo.shCloud hosting platform with CI/CD and stagingSubscription-based
Odoo OnlineSaaS version hosted by Odoo SASubscription-based

A Brief History

YearMilestone
2005TinyERP founded by Fabien Pinckaers in Belgium
2009Renamed to OpenERP
2014Rebranded to Odoo with version 8
2024Odoo 18 released
2025Odoo 19 (current version covered in this guide)

Odoo SA is headquartered in Belgium with offices worldwide and has over 12 million users globally.


The Technology Stack

Understanding what powers Odoo helps you troubleshoot issues and communicate with developers.

LayerTechnologyWhat It Does
DatabasePostgreSQL (psql)Stores all your data - customers, orders, products, everything. Each Odoo database is a separate PostgreSQL database.
BackendPython 3The brain of Odoo. All business logic, calculations, workflows, and data processing happen in Python.
FrontendJavaScript (OWL Framework)What you see in the browser. OWL (Odoo Web Library) is Odoo's own reactive framework, similar to React or Vue.
Web ServerWerkzeug (Python)Handles HTTP requests. Odoo runs its own web server - no Apache or Nginx required (though often used as proxy).
APIXML-RPC / JSON-RPCHow external systems talk to Odoo. Used for integrations, mobile apps, and automation scripts.
TemplatingQWeb (XML)Odoo's template engine for reports, website pages, and email templates. Similar to Jinja2 but XML-based.

How It All Connects

┌─────────────────────────────────────────────────────────────────────────┐
│                          YOUR BROWSER                                    │
│  ┌─────────────────────────────────────────────────────────────────┐   │
│  │                 JAVASCRIPT FRONTEND (OWL)                        │   │
│  │     OWL Components  │  Web Client  │  Widgets  │  Actions       │   │
│  └─────────────────────────────────────────────────────────────────┘   │
└─────────────────────────────────┬───────────────────────────────────────┘
                                  │ JSON-RPC / HTTP

┌─────────────────────────────────────────────────────────────────────────┐
│                       ODOO SERVER (Python)                               │
│  ┌─────────────────────────────────────────────────────────────────┐   │
│  │  Werkzeug (HTTP)  │  Controllers  │  Authentication             │   │
│  └─────────────────────────────────────────────────────────────────┘   │
│  ┌─────────────────────────────────────────────────────────────────┐   │
│  │     Models (ORM)  │  Business Logic  │  Reports (QWeb)          │   │
│  └─────────────────────────────────────────────────────────────────┘   │
└─────────────────────────────────┬───────────────────────────────────────┘
                                  │ SQL (via ORM)

┌─────────────────────────────────────────────────────────────────────────┐
│                       POSTGRESQL DATABASE                                │
│     res_partner  │  sale_order  │  product_product  │  account_move     │
│      (Contacts)  │   (Sales)    │    (Products)     │    (Invoices)     │
└─────────────────────────────────────────────────────────────────────────┘

Key Terminology

TermWhat It MeansExample
Module / AppA self-contained package of features that can be installed or uninstalledsale, stock, hr
ModelA database table that stores a specific type of datares.partner (contacts), sale.order (quotations)
RecordA single row in a model (one customer, one order)Customer "Acme Corp" with ID 42
FieldA column in a model that stores a specific piece of dataname, email, amount_total
ViewHow data is displayed to users (form, list, kanban, etc.)The sales order form you fill out
ORMObject-Relational Mapping - Python code that talks to the databaseself.env['res.partner'].search([])
XML-ID / External IDA unique identifier for records, used in data files and codebase.main_company, sale.action_orders
ContextA dictionary of parameters passed around to control behavior{'default_partner_id': 5, 'lang': 'en_US'}
DomainA filter condition written as a list of tuples[('state', '=', 'sale'), ('amount_total', '>', 1000)]

Common File Types

ExtensionPurposeWhere You'll See It
.pyPython code - models, business logic, controllersmodels/sale_order.py
.xmlViews, actions, menus, demo data, security rulesviews/sale_order_views.xml
.jsJavaScript - custom widgets, frontend logicstatic/src/js/my_widget.js
.scss / .cssStyling - colors, layouts, fontsstatic/src/scss/style.scss
.csvData import files (demo data, initial records)data/res.country.csv
.po / .potTranslation filesi18n/fr.po