activity_exception
That small orange or red icon that appears at the end of some list rows is the activity_exception widget: a zero-option renderer for the activity_exception_decoration field that stays invisible until a record needs attention.
August 12, 2026Updated August 12, 20265 min read
| Technical name | activity_exception |
|---|---|
| Field types | selection (activity_exception_decoration) |
| Views | list |
| Module | mail, installed in practically every Odoo database |
| Used in core | 19 occurrences across 14 modules, including hr_holidays, fleet, event, maintenance, mrp, stock |
| Versions | Odoo 20.0, Odoo 19.0, Odoo 18.0 |
| No-code setup | No. Added in list view XML on activity_exception_decoration (core lists ship it already) |
| Alternatives | list_activity, kanban_activity, web_ribbon |
What the Activity Exception widget does
What this means for your team
Working examples
Two fields, one class string
Version compatibility
| Version | Status | Notes |
|---|---|---|
| Odoo 20.0 | In development | Not released. Same behavior, new icon set on the development branch; see below. |
| Odoo 19.0 | Verified | Verified against the shipped source: zero options, one field dependency. |
| Odoo 18.0 | Verified | The 18.0 and 19.0 files are byte-identical. Verified directly. |
What is changing in Odoo 20
Common problems and fixes
| Symptom | Cause and fix |
|---|---|
| No icon although the record has activities | Only exception activities set the decoration field; ordinary planned activities do not. Nothing to fix. Use list_activity to visualize normal activities; this widget is only the alarm. |
| Column shows an empty header space | A string attribute was added to the field element, overriding the descriptor's label: false. Remove the string attribute; the widget is designed to render headerless. |
| Icon color is wrong or unstyled | The decoration value feeds the CSS class directly (text-warning, text-danger); a custom activity type declared a non-Bootstrap decoration. Keep decorations to warning and danger, the two values the selection declares. |
| Icon missing but color square appears | The activity_exception_icon field carries an invalid icon class. Check the activity type's icon value; it must be a FontAwesome class name in Odoo 19. |
| Cannot click the icon to see the activity | The widget is display-only; it renders a div with a tooltip, not a button. Open the record or use the list_activity column, whose popover lists the exception activity. |
Activity Exception widget vs the alternatives
| Widget | Best for | Key difference |
|---|---|---|
activity_exception | A silent alarm column that only appears on troubled records | Renders nothing unless an exception activity exists; zero options, headerless by design |
| list_activity | The full next-activity column with summary text | Always renders; exceptions are just its highest-precedence state |
| kanban_activity | Activity indicators on kanban cards | Same activity system, card rendering, clickable popover |
| web_ribbon | Unmissable record state on forms | View element with a title, not bound to the activity system |
Frequently asked questions
What creates an exception activity in Odoo?+
What do the orange and red icons mean?+
How do I get rid of the icon on a record?+
Can I configure what the widget shows?+
Why does the column have no header?+
Does this widget work on kanban or form views?+
Documents changing behind your team's back?
Exception icons are symptoms. The causes are process: who may edit confirmed orders, what triggers a review, which changes propagate to deliveries and invoices. We audit and rebuild these control points in Odoo, approval flows, tracked fields, automatic exception activities, so surprises become visible and rare.
Book a free consultation