Generic alert engine for threshold monitoring, expiry tracking, and
deadline management. Evaluates configurable rules on a daily schedule or
on-demand and generates alerts when conditions are met. Consumer modules
(like spp_drims) extend these models to add domain-specific fields.
- Define alert rules with threshold or date conditions against any model
- Evaluate rules via daily cron or "Run Now" button
- Compare numeric fields using 5 operators: <, <=, >, >=, =
- Check date/datetime fields against a days-before window
- Prevent duplicates: skip records with existing active/acknowledged alerts
- Filter monitored records using a visual domain builder
- Track alert lifecycle: active → acknowledged → resolved
- Record resolution details: user, timestamp, and notes
- Navigate from alert to source record via stat button
- Classify alerts by type using
spp.vocabularycodes - Prioritize as low, medium, high, or critical
- Auto-generate references in
ALR-YYYY-NNNNNformat
| Model | Description |
|---|---|
spp.alert |
Alert instance with state tracking and resolution audit |
spp.alert.rule |
Rule configuration with evaluation engine and scheduling |
After installing:
- Navigate to Settings > Technical > Alerts > Alert Rules
- Create rules: select model, rule type (threshold/date), and conditions
- The daily cron "Alerts: Evaluate Alert Rules" is active by default
- Menu: Settings > Technical > Alerts > Alerts
- Configuration: Settings > Technical > Alerts > Alert Rules
- Views: List, kanban (grouped by state), and form
- Alert form tabs: Details, Resolution
- Rule form: Description above tabs; Evaluation tab with settings + domain builder
| Group | Alerts | Rules |
|---|---|---|
spp_alerts.group_alerts_viewer |
Read | Read |
spp_alerts.group_alerts_officer |
Read/Write/Create (no delete) | Read |
spp_alerts.group_alerts_manager |
Full CRUD | Full CRUD |
- Inherit
spp.alertto add domain-specific fields - Inherit
spp.alert.ruleto add custom evaluation criteria - Override
_evaluate_threshold()or_evaluate_date()for custom logic - Override
action_acknowledge()oraction_resolve()for custom workflows - Rules can be configured via UI without code
base, mail, spp_security, spp_vocabulary
Table of contents
- Usage
- UI Testing Guide
- 1. Navigation and Menu Access
- 2. Alert Rules — List View
- 3. Alert Rules — Form View
- 4. Alerts — Creating Manually
- 5. Alerts — List View
- 6. Alerts — Kanban View
- 7. Alert State Transitions
- 8. Alert Form — Rule-Generated Alerts
- 9. Keyboard Shortcuts
- 10. Cron Job
- 11. Security and Access Control
- 12. Multi-Company (if applicable)
- 13. Alert Types (Vocabulary)
- 14. Edge Cases
- Changelog
This guide covers all user-facing functionality in the spp_alerts
module. Follow each section in order. Each test case includes the steps,
what to verify, and the expected result.
Prerequisites:
- Install the
spp_alertsmodule - Log in as admin (has all permissions by default)
- Ensure at least one model is available (e.g.,
res.partner— always present)
TC-1.1: Menu visibility
- Navigate to Settings > Technical
- Scroll down to find the Alerts section
Verify:
- ☐ An Alerts menu group is visible under Settings > Technical
- ☐ It contains two submenus: Alerts and Alert Rules
TC-1.2: URL paths
- Navigate to Settings > Technical > Alerts > Alerts
- Check the browser URL
Verify:
- ☐ URL ends with
/odoo/alerts
- Navigate to Settings > Technical > Alerts > Alert Rules
Verify:
- ☐ URL ends with
/odoo/alert-rules
TC-2.1: Empty state
- Navigate to Settings > Technical > Alerts > Alert Rules
- Remove any active search filters
Verify (if no rules exist):
- ☐ Empty state shows smiley face icon
- ☐ Message reads: "No alert rules configured"
- ☐ Description mentions configuring rules for thresholds, expiry dates, and deadlines
TC-2.2: List view columns
- Create at least one alert rule (see TC-3.1)
- Return to the list view
Verify:
- ☐ Columns visible: drag handle (sequence), Name, Alert Type, Model to Monitor, Rule Type, Priority, Threshold Value, Days Before, Active
- ☐ Rule Type, Threshold Value, and Days Before have "optional column" toggles
- ☐ Rows can be reordered by dragging the handle icon
- ☐ Sample data appears in the background when the list is empty
TC-2.3: Search and filters
- Click the search bar
- Try searching by Name, Alert Type, and Model
Verify:
- ☐ Filters available: Active, Inactive, Critical Priority, High Priority
- ☐ Group By options: Alert Type, Model, Priority, Rule Type
TC-3.1: Create a threshold rule
- Click New on the Alert Rules list
- Fill in:
- Rule Name: "Test Low Color Warning"
- Alert Type: select "Threshold Alert" from the dropdown (cannot type to create new)
- Default Priority: "High"
- Model to Monitor: select "Contact" (res.partner)
- Rule Type: select "Threshold"
- Optionally add a Description in the text area below the main fields
- Observe the Evaluation tab appears after selecting Rule Type
Verify:
- ☐ Alert Type dropdown does NOT show a "Create" option
- ☐ After selecting Model and Rule Type, the Evaluation tab appears
- ☐ Evaluation tab shows Threshold Settings section with: Monitored Field, Comparison, Threshold Value
- In the Evaluation tab:
- Monitored Field: select "Color Index" (or any numeric field)
- Comparison: "Less Than (<)"
- Threshold Value: 5
- Under Record Filter, observe the visual domain builder
Verify:
- ☐ Domain builder shows fields from the selected model (Contact/res.partner)
- ☐ You can add filter conditions visually (e.g., "Active is set")
- Save the rule
Verify:
- ☐ Rule saves without errors
- ☐ Chatter (message log) appears at the bottom of the form
- ☐ An Alerts stat button appears in the top-right showing "0 Alerts"
TC-3.2: Create a date rule
- Create a new rule:
- Rule Name: "Test Deadline Warning"
- Alert Type: "Deadline Alert"
- Model to Monitor: "Contact"
- Rule Type: "Date / Deadline"
Verify:
- ☐ Evaluation tab shows Date Settings section (not Threshold Settings)
- ☐ Date Settings has: Date Field and Days Before
- Fill in:
- Date Field: select "Last Updated on" (write_date) or any date/datetime field
- Days Before: 30
- Save
Verify:
- ☐ Rule saves without errors
TC-3.3: Run Now button
- Open the threshold rule created in TC-3.1
- Click the Run Now button in the header
Verify:
- ☐ A notification appears: "X alert(s) created by rule 'Test Low Color Warning'"
- ☐ The Alerts stat button count updates to reflect created alerts
- ☐ Click the stat button — it opens a filtered list of alerts from this rule
TC-3.4: Archive and unarchive
- Open any rule
- Click Action > Archive
Verify:
- ☐ A red Archived ribbon appears on the form
- ☐ The rule disappears from the default list view (which filters active rules)
- In the list view, add the "Inactive" filter
Verify:
- ☐ The archived rule appears
- ☐ Open it and click Action > Unarchive — ribbon disappears
TC-3.5: Validation errors
- Create a new rule with Rule Type = "Threshold" but leave Monitored Field empty
- Try to save
Verify:
- ☐ Error: "A monitored field is required for threshold rules."
- Create a new rule with Rule Type = "Date / Deadline" but leave Date Field empty
- Try to save
Verify:
- ☐ Error: "A date field is required for date rules."
- Create a rule and set Domain Filter to an invalid expression (e.g.,
type
INVALIDin the domain builder's code editor if available) - Try to save
Verify:
- ☐ Error: "Invalid domain filter: ..."
TC-3.6: Run Now without configuration
- Create a rule with no Rule Type and no Model
- Observe the header
Verify:
- ☐ The Run Now button is NOT visible (it requires both Rule Type and Model)
TC-4.1: Create a manual alert
- Navigate to Settings > Technical > Alerts > Alerts
- Click New
- Fill in:
- Alert Type: "Manual Alert"
- Priority: "Critical"
- Title: "Test Manual Alert"
- Go to the Details tab and add a description
- Save
Verify:
- ☐ Reference auto-generated in format
ALR-YYYY-NNNNN(e.g., ALR-2026-00001) - ☐ State shows "Active" in the statusbar
- ☐ Acknowledge button (blue) is visible in the header
- ☐ Resolve button (green) is visible in the header
- ☐ Priority and Alert Type fields are editable
- ☐ Chatter (message log) appears at the bottom
- ☐ No "View Source" or "Related Alerts" stat buttons (manual alert has no source)
TC-4.2: Unique references
- Create three alerts quickly
Verify:
- ☐ Each alert gets a unique, sequential reference number
TC-5.1: List view appearance
- Navigate to Settings > Technical > Alerts > Alerts
- Ensure some alerts exist (use Run Now on a rule, or create manually)
Verify:
- ☐ Columns visible: Reference, Title, Alert Type, Priority (badge), State (badge), Created On
- ☐ Critical-priority rows have a red tint
- ☐ High-priority rows have an orange/warning tint
- ☐ Resolved rows are muted/grayed out
- ☐ Priority badges: Critical = red, High = orange, Medium = blue
- ☐ State badges: Active = red, Acknowledged = orange, Resolved = green
- ☐ Source Rule and Company columns are hidden by default (use optional column toggle)
- ☐ Default filter shows only Active alerts (check search bar for "Active" filter chip)
TC-5.2: Search panel
- Look at the left side of the list view
Verify:
- ☐ Search panel shows three filter groups: State, Priority, Alert Type
- ☐ Each option shows a count of matching alerts
- ☐ Clicking a filter value narrows the list immediately
TC-5.3: Search filters and Group By
- Click the search bar
Verify:
- ☐ Can search by Reference, Title, Alert Type
- ☐ Filters: Active, Acknowledged, Resolved, Critical, High Priority
- ☐ Group By: State, Priority, Type
TC-6.1: Switch to kanban
- On the Alerts list, click the kanban view icon (grid icon in the view switcher)
Verify:
- ☐ Alerts are displayed as cards grouped into columns by State: Active, Acknowledged, Resolved
- ☐ Each column header shows the state name and alert count
- ☐ A colored progress bar appears at the top of each column showing priority distribution (gray = low, blue = medium, orange = high, red = critical)
- ☐ Quick create is disabled (no "+" button at top of columns)
TC-6.2: Kanban card content
- Examine an alert card
Verify:
- ☐ Card shows: priority stars, reference (bold), title, alert type, creation date
- ☐ A three-dot dropdown menu appears on hover (top-right of card)
TC-6.3: Kanban dropdown actions
- Hover over an Active alert card and click the three-dot menu
Verify:
- ☐ Dropdown shows: Acknowledge and Resolve
- Click Acknowledge
Verify:
- ☐ Card moves to the Acknowledged column
- Hover over the now-acknowledged card, open dropdown
Verify:
- ☐ Dropdown shows only Resolve (Acknowledge is gone)
- Click Resolve
Verify:
- ☐ A dialog or form opens requesting resolution notes (since the action requires notes)
TC-7.1: Active to Acknowledged
- Open an Active alert
- Click the Acknowledge button
Verify:
- ☐ State changes to "Acknowledged"
- ☐ Statusbar updates to highlight "Acknowledged"
- ☐ Acknowledge button disappears
- ☐ Resolve button remains visible
- ☐ Fields (Alert Type, Priority, Title) are still editable
- ☐ Chatter logs a state change message
TC-7.2: Acknowledged to Resolved
- On the acknowledged alert, go to the Resolution tab
Verify:
- ☐ An info banner reads: "Please add resolution notes describing how this alert was addressed, then click Resolve."
- ☐ Resolved By and Resolved At fields are empty
- Enter resolution notes in the text area
- Click the Resolve button
Verify:
- ☐ State changes to "Resolved"
- ☐ Resolved By shows your user name
- ☐ Resolved At shows the current timestamp
- ☐ Resolution Notes are preserved and now read-only
- ☐ Info banner disappears
- ☐ Both Acknowledge and Resolve buttons disappear
- ☐ All main fields (Alert Type, Priority, Title, Description) become read-only
TC-7.3: Active to Resolved directly (skip Acknowledge)
- Create a new alert and leave it in Active state
- Go to the Resolution tab
- Enter resolution notes
- Click Resolve
Verify:
- ☐ Alert goes directly from Active to Resolved (skipping Acknowledged)
- ☐ All resolution fields are populated correctly
TC-7.4: Resolve without notes
- Create a new Active alert
- Click Resolve without entering resolution notes
Verify:
- ☐ Error message: "Please provide resolution notes before resolving the alert."
- ☐ Alert remains in its current state
TC-7.5: Double-acknowledge prevention
- Acknowledge an alert
- Try to acknowledge it again (via API or another browser tab)
Verify:
- ☐ Error: "Only active alerts can be acknowledged."
- ☐ The Acknowledge button is not visible on the form (it only shows for Active alerts)
TC-7.6: Double-resolve prevention
- Resolve an alert
- Try to resolve it again
Verify:
- ☐ Error: "Alert 'ALR-YYYY-NNNNN' is already resolved."
- ☐ The Resolve button is not visible on the form
TC-8.1: Source tracking fields
- Run a rule (via Run Now on an alert rule)
- Open one of the generated alerts
Verify:
- ☐ Right side of the form shows a Source section with: Source Rule, Source Model, Source Record, Source Record Name
- ☐ If the rule is a threshold rule, a Metrics section shows: Current Value, Threshold, Days Until
- ☐ A View Source stat button appears in the top-right
- ☐ A Related Alerts stat button appears (if rule created multiple alerts)
TC-8.2: View Source button
- Click the View Source stat button
Verify:
- ☐ Opens the source record's form view (e.g., a Contact form)
- ☐ The correct record is displayed
TC-8.3: Related Alerts button
- Go back to the alert and click the Related Alerts stat button
Verify:
- ☐ Opens a list of other alerts from the same rule (excluding the current alert)
- ☐ Default filter shows Active alerts
TC-9.1: Hotkeys
- Open an Active alert form
- Press Alt+A (or the platform equivalent for
data-hotkey="a")
Verify:
- ☐ Alert is acknowledged
- Press Alt+R
Verify:
- ☐ Resolve action is triggered (will ask for notes if none provided)
TC-10.1: Scheduled action exists
- Navigate to Settings > Technical > Scheduled Actions
- Search for "Alerts"
Verify:
- ☐ A scheduled action named "Alerts: Evaluate Alert Rules" exists
- ☐ It is active
- ☐ Interval is set to 1 day
TC-10.2: Cron execution
- Ensure at least one active alert rule with matching records exists
- Click Run Manually on the scheduled action
Verify:
- ☐ New alerts are created for matching records
- ☐ No duplicate alerts for records that already have active/acknowledged alerts
Test with three different users. Create them via Settings > Users & Companies > Users and assign the appropriate group under the SPP Admin section.
TC-11.1: Viewer role
- Log in as a user with Alerts Viewer group only
- Navigate to Settings > Technical > Alerts > Alerts
Verify:
- ☐ Can see the Alerts menu and list
- ☐ Can open and read alert details
- ☐ Cannot create new alerts (New button absent or errors on save)
- ☐ Cannot edit existing alerts
- ☐ Cannot acknowledge or resolve alerts (buttons error on click)
- ☐ Alert Rules submenu is NOT visible
TC-11.2: Officer role
- Log in as a user with Alerts Officer group
- Navigate to Settings > Technical > Alerts > Alerts
Verify:
- ☐ Can create new alerts
- ☐ Can edit alerts (change priority, title, etc.)
- ☐ Can acknowledge and resolve alerts
- ☐ Cannot delete alerts
- ☐ Can see Alert Rules submenu but rules are read-only
- ☐ Cannot create or edit alert rules
TC-11.3: Manager role
- Log in as a user with Alerts Manager group
Verify:
- ☐ Full access to alerts: create, read, update, delete
- ☐ Full access to alert rules: create, read, update, delete
- ☐ Can click Run Now on alert rules
- ☐ Can archive/unarchive rules
Only test this section if multi-company is enabled.
TC-12.1: Company isolation
- Create an alert in Company A
- Switch to Company B
Verify:
- ☐ The alert from Company A is not visible in Company B
- ☐ New alerts default to the current company
TC-13.1: Pre-installed types
- Open any alert or rule form
- Click the Alert Type dropdown
Verify the following types are available:
- ☐ Threshold Alert
- ☐ Expiry Alert
- ☐ Deadline Alert
- ☐ Manual Alert
- ☐ System Alert
- ☐ Cannot create new types from the dropdown (no "Create" option)
TC-14.1: Empty state
- Delete or resolve all alerts
- Remove the "Active" default filter
Verify:
- ☐ Empty state shows: "No active alerts" with smiley face
TC-14.2: Sorting
- Create alerts with different priorities (low, medium, high, critical)
- View the list (default sort)
Verify:
- ☐ Alerts are sorted by priority (critical first) then by creation date (newest first)
- ☐ This is semantic ordering: critical > high > medium > low (not alphabetical)
- Initial migration to OpenSPP2
Bugs are tracked on GitHub Issues. In case of trouble, please check there if your issue has already been reported. If you spotted it first, help us to smash it by providing a detailed and welcomed feedback.
Do not contact contributors directly about support or help with technical issues.
- OpenSPP.org
Current maintainers:
This module is part of the OpenSPP/OpenSPP2 project on GitHub.
You are welcome to contribute.





