What Is an Odoo Module? A Complete Beginner’s Guide
Odoo is one of the most powerful open-source ERP platforms in the world, and the reason behind its flexibility is its modular architecture. Every feature you see in Odoo—Sales, Inventory, Accounting, HR, Website—is built using modules.
In this article, we’ll explore what an Odoo module is, how it works, its structure, and why modules are the backbone of Odoo development.
What Is an Odoo Module?
An Odoo module is a self-contained package that adds a specific feature or business functionality to the Odoo system.
Each module can:
- Add new database models
- Modify existing functionality
- Create screens, menus, and reports
- Define security and access rules
Odoo modules are plug-and-play components that extend Odoo’s capabilities.
Why Odoo Uses Modules
Odoo is designed to be 100% modular, which means:
- You install only what you need
- Features can be added or removed easily
- Custom business logic stays isolated
- Easier upgrades and maintenance
- Clean separation of concerns
This makes Odoo suitable for small businesses to large enterprises.
Examples of Odoo Modules
Core (Official) Modules
Provided by Odoo itself:
- sale – Sales Management
- purchase – Purchase Orders
- account – Accounting
- stock – Inventory
- hr – Human Resources
Custom Modules
Developed for specific business needs:
- school_management
- custom_invoice
- mlm_system
- warehouse_tracking
Third-Party Modules
Built by the community or vendors:
- OCA (Odoo Community Association) modules
- Payment gateways
- Shipping integrations
Odoo Module vs Odoo App
Many beginners get confused between modules and apps.
| Module | App |
|---|---|
| Technical concept | Marketing concept |
| Code + folder | Installable feature |
| Can be hidden | Shown in Apps menu |
| Core development unit | User-facing package |
📌 Every App is a module, but not every module is visible as an App.
Basic Structure of an Odoo Module
my_module/
├── __init__.py
├── __manifest__.py
├── models/
│ ├── __init__.py
│ └── model.py
├── views/
│ └── views.xml
├── security/
│ ├── ir.model.access.csv
│ └── security.xml
├── data/
│ └── data.xml
└── static/
└── description/
└── icon.png
Each folder has a specific purpose, making modules easy to manage and extend.
Key Files in an Odoo Module
1. __manifest__.py
This file defines the module’s identity.
{
'name': 'My First Module',
'version': '1.0',
'category': 'Sales',
'depends': ['base'],
'data': [
'views/views.xml',
'security/ir.model.access.csv',
],
'installable': True,
}
It tells Odoo:
- Module name and version
- Dependencies
- Which files to load
2. Models (models/)
This is where business logic lives.
from odoo import models, fields
class MyModel(models.Model):
_name = 'my.model'
name = fields.Char(string="Name")
Models automatically map to database tables.
3. Views (views/)
Defines how data is shown in the UI.
Includes:
- Forms
- Lists
- Kanban
- Calendars
4. Security (security/)
Controls who can access what.
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink access_my_model,my.model,model_my_model,,1,1,1,1
Security is mandatory for custom models.
Module Dependencies in Odoo
Modules can depend on other modules:
'depends': ['sale', 'stock']
This means:
- Your module will install only after these modules
- You can reuse their models and features
How Odoo Loads Modules
- Reads __manifest__.py
- Installs dependencies
- Loads security rules
- Creates database tables
- Loads views, menus, and data
This happens automatically when you install or upgrade a module.
Installing an Odoo Module
From Odoo UI
- Enable Developer Mode
Go to Apps
- Search the module
- Click Install
From Command Line
./odoo-bin -u my_module -d my_database
Real-World Use Case of Odoo Modules
Let’s say you want to build an MLM system based on product purchases:
- Create a module: mlm_system
- Depends on: sale, account
- Add:
- Commission logic
- Referral tree
- Bonus calculation
- Payout reports
All logic stays inside one clean module.
Benefits of Odoo Modules
- Clean and organized code
- Easy customization
- Reusable functionality
- Upgrade-friendly
- Scalable architecture
Conclusion
An Odoo module is the foundation of everything in Odoo. Whether you are installing Sales, building a custom ERP solution, or developing advanced business logic, modules make Odoo powerful, flexible, and scalable.