Understanding Action Architecture in Odoo 18 for Developers

October 31, 2025 by
Understanding Action Architecture in Odoo 18 for Developers
Alfin Isnain Hariawan

Odoo is known as one of the most flexible and powerful open-source ERP platforms. One of the core elements that enables this flexibility is the Action system — a mechanism that defines how the UI trigge​rs processes, displays views, and runs backend logic.

In Odoo 18, the concept of Actions remains consistent with previous versions, but internal improvements and the new OWL-based UI bring more capabilities and efficiency.

In this article, we'll explore:

  • What Actions are in Odoo
  • Types of Actions in Odoo 18
  • XML & Python examples
  • Debugging tips
  • Key updates in Odoo 18

What Are Actions in Odoo?


Actions tell Odoo what to do when a user interacts with the system — for example, when clicking a menu, button, or smart button.

Actions can:

  • Open views (tree, form, kanban, graph, pivot, etc.)
  • Open pop-up wizards
  • Execute server-side Python logic
  • Generate reports
  • Redirect to a URL
  • Trigger custom UI logic (client actions in OWL)

Actions are stored in the ir.actions.* models and can be triggered from:

  • Menu items
  • Buttons in form views
  • Smart buttons
  • Automated actions
  • Custom UI scripts


📌 Types of Actions in Odoo 18


Action Type

Model

Purpose

Window Action

ir.actions.act_window

Open UI views like form/tree/kanban/etc

Server Action

ir.actions.server

Execute Python code or model logic

Report Action

ir.actions.report

Generate PDF/XLS reports

URL Action

ir.actions.act_url

Redirect to an external or internal link

Client Action

ir.actions.client

Trigger custom UI / JS logic (OWL)

Wizard

via act_window + TransientModel

Display modal pop-up forms


🧩 Example: Window Action in Odoo 18

XML (menu + action)

<record id="action_employee_list" model="ir.actions.act_window">
    <field name="name">Employee List</field>
    <field name="res_model">hr.employee</field>
    <field name="view_mode">tree,form</field>
</record>

<menuitem id="menu_employee_root" name="Employee"/>

<menuitem id="menu_employee_list" parent="menu_employee_root"
          action="action_employee_list" name="Employees"/>


🧩 Example: Server Action Calling Python Method

Python

class HrEmployee(models.Model):
    _inherit = 'hr.employee'

    def action_mark_active(self):
        for rec in self:
            rec.active = True

XML

<record id="server_action_mark_employee_active" model="ir.actions.server">
    <field name="name">Activate Employee</field>
    <field name="model_id" ref="hr.model_hr_employee"/>
    <field name="state">code</field>
    <field name="code">records.action_mark_active()</field>
</record>


🎯 Opening a Wizard 

Python (Wizard model)

class EmployeeWizard(models.TransientModel):
    _name = "employee.wizard"

    message = fields.Char()

    def action_confirm(self):
        print("Wizard confirmed")

Action XML

<record id="action_employee_wizard" model="ir.actions.act_window">
    <field name="name">Employee Wizard</field>
    <field name="res_model">employee.wizard</field>
    <field name="view_mode">form</field>
    <field name="target">new</field> <!-- open as modal -->
</record>


🔍 Debugging Actions


Task

Tools

Enable Developer Mode

Settings → Activate Developer Mode

Inspect Action

Debug menu → View Action

Check server logs

tail -f /var/log/odoo/odoo.log

Test action programmatically

self.env.ref('module.action_id').read()

Common problems & fixes

Issue

Check

Action doesn’t show

Access rights / groups

Not opening correct view

XML ID conflict

Changes not applied

Upgrade module & hard refresh browser (Ctrl+Shift+R)

 What's New in Odoo 18?


Feature

Update

OWL-based Client Actions

Faster, more reactive UI

Better UI Performance

Optimized rendering for large datasets

Cleaner Action Handling

More modular server & client logic

Odoo 18 encourages developers to leverage Client Actions with OWL for dashboards and custom UIs.


💡 Conclusion


Actions are the backbone of navigation and automation in Odoo. By mastering them, you can:

  • Build powerful UI flows
  • Create wizards and automated processes
  • Trigger reports & server logic
  • Integrate modern custom interfaces

If you're developing custom modules in Odoo 18, understanding Actions will dramatically boost your development efficiency and system quality.


Understanding Action Architecture in Odoo 18 for Developers
Alfin Isnain Hariawan October 31, 2025
Share this post
Archive