CronWatch - Scheduled Actions Monitor
by Odoo DevHouse https://apps.odoo.com/apps/modules/browse?author=Odoo%20DevHouse$ 99.00
| Availability |
Odoo Online
Odoo.sh
On Premise
|
| Odoo Apps Dependencies |
Discuss (mail)
|
| Lines of code | 1066 |
| Technical Name |
scheduled_actions_watch |
| License | OPL-1 |
| Website | https://apps.odoo.com/apps/modules/browse?author=Odoo%20DevHouse |
| Versions | 18.0 19.0 |
| Availability |
Odoo Online
Odoo.sh
On Premise
|
| Odoo Apps Dependencies |
Discuss (mail)
|
| Lines of code | 1066 |
| Technical Name |
scheduled_actions_watch |
| License | OPL-1 |
| Website | https://apps.odoo.com/apps/modules/browse?author=Odoo%20DevHouse |
| Versions | 18.0 19.0 |
CronWatch - Scheduled Actions Monitor
Watch, log, and diagnose every scheduled action (cron job) in Odoo. Track execution history, catch silent failures, measure performance, and get full Python tracebacks - all without leaving Odoo.
In standard Odoo, scheduled actions run in the background with no built-in execution log. When a cron job fails, the only evidence is buried in server log files - if logging is even configured correctly.
This creates critical blind spots for operations teams:
- Silent failures: A cron job crashes but no one is notified - business processes break quietly
- No execution history: You cannot tell when a job last ran, how long it took, or whether it succeeded
- Server log dependency: Debugging requires SSH access and grepping through raw log files
- No performance baseline: Impossible to detect jobs that are slowing down over time
- Manual vs scheduled confusion: No record of who triggered a job manually or when
CronWatch adds an "Execution Tracking" toggle to any scheduled action. When enabled, every run - scheduled or manual - is recorded with start time, end time, duration, trigger source, status, and full traceback on failure. A live analytics dashboard shows today's success rate, the 7-day execution trend, and an hourly failure heatmap for the last 30 days.
- Per-Job Toggle: Enable tracking only on the cron jobs you care about - zero overhead on others
- Execution Log: Every run is recorded with start time, end time, duration, trigger type, and status
- Full Traceback In-App: Python tracebacks for failed jobs are stored and viewable directly in Odoo - no SSH needed
- Manual vs Scheduled: Logs distinguish automated scheduler runs from manual user triggers, including who triggered it
- Analytics Dashboard: Live summary cards, 7-day bar chart trend, and 30-day hourly failure heatmap
- Smart Buttons: Total executions, successes, and failures shown as stat buttons on each cron form
- Configurable Retention: Set log retention per job in days - auto-purged by a daily garbage-collection cron
- Manual Purge: Purge logs for any single job on demand with one click
- List View Columns: Last run time and last status added directly to the Scheduled Actions list
- Auto-Refresh Dashboard: Dashboard refreshes every 60 seconds automatically - no manual reload needed
1. Scheduled Actions List - New Status Columns
After installation the standard Scheduled Actions list gains two new optional columns: Last Run (timestamp of the most recent execution) and Last Status (color-coded badge - green Success, red Failed, orange Running). Spot unhealthy jobs at a glance without opening each record.
2. Open a Cron Form - Execution Tracking Tab
Open any Scheduled Action and click the Execution Tracking tab. When tracking is off, a blue info banner explains how to activate it. No logs are collected and no overhead exists until you flip the toggle.
3. Enable Execution Tracking & Set Retention
Toggle Enable Execution Tracking on. The Log Retention (days) field appears - set how many days of history to keep (0 = unlimited). The Last Performance group shows last run time, last status badge, and average duration as soon as logs accumulate.
4. Smart Stat Buttons - Executions, Successes, Failures
Once tracking is active, three stat buttons appear at the top of the cron form: total Executions, Successes (green), and Failures (red). Click any button to jump directly to the filtered execution log for that job.
5. Execution Logs List - Color-Coded Status Rows
Navigate to CronWatch → Execution Logs. Every captured run appears as a row - green for Success, red for Failed, orange for Running. Columns show job name, start time, human-readable duration, trigger type badge, and status badge. A Traceback button appears on failed rows for instant error access.
6. Execution Log Detail - Timing & Run Information
Open any log entry to see the full detail form: Run Information (model, trigger type, triggered by user) and Timing & Performance (started at, finished at, total duration, duration in seconds). A status bar at the top shows the lifecycle state.
7. Error Traceback Popup - Full Python Traceback In-App
For failed runs, click the Traceback button to open a popup showing the complete Python traceback. Action name, execution date, status, and duration are displayed alongside the raw traceback - no SSH or server log access required.
8. Analytics Dashboard - Live Overview
Open CronWatch → Dashboard for a real-time health overview. Three summary cards show total runs today, success rate, and slowest job. A 7-day stacked bar chart trends successes vs failures per day, and an hourly failure distribution chart (last 30 days) reveals which hours are most failure-prone. The dashboard auto-refreshes every 60 seconds.
Installation & Configuration
- Install the Module: Install through Odoo Apps or copy to your addons path and update the app list
- Dependencies: Requires only
baseandmail- no extra modules needed - Restart & Update: Restart Odoo and upgrade the module list
- Enable Tracking: Go to Settings → Technical → Scheduled Actions, open any action, and enable the toggle in the Execution Tracking tab
- View Results: Navigate to CronWatch → Dashboard or Execution Logs after the next run
Step 1: Activate Tracking on a Job
Go to Settings → Technical → Scheduled Actions. Open the job you want to monitor. Click the Execution Tracking tab and toggle Enable Execution Tracking on. Set Log Retention (days) - e.g. 30 days - to control automatic cleanup.
Step 2: Let Jobs Run (or Trigger Manually)
Once tracking is enabled, the next scheduled execution is automatically captured. You can also click Run Manually to generate an immediate log entry marked as a manual trigger.
Step 3: Review Execution Logs
Go to CronWatch → Execution Logs. Failed jobs appear in red, succeeded jobs in green. Click the Traceback button on any failed row to see the complete Python error traceback in a popup - no server access required.
Step 4: Use the Dashboard
Navigate to CronWatch → Dashboard for a real-time overview:
- Total Runs Today: How many jobs executed in the current day (user timezone)
- Success Rate: Percentage of successful runs today
- Slowest Job Today: Name and duration of the longest-running job
- 7-Day Trend: Stacked bar chart of successes vs failures per day
- Hourly Heatmap: Line chart showing which hours of the day see the most failures (last 30 days)
Step 5: Manage Log Retention
A built-in daily cron job automatically purges logs older than each job's retention setting. You can also manually purge logs for any job using the Purge Logs Manually button in the Execution Tracking tab. Set retention to 0 to keep logs indefinitely.
Pro Tip - Common Monitoring Scenarios
Invoice auto-confirmation: Track if the nightly job succeeds or errors on specific invoice batches
Stock reordering rules: Detect if procurement cron is slow or failing silently
Email send queues: Monitor mail queue flusher execution time and failure rate
Data sync jobs: Catch integration crons that time out or raise API errors
Important - Performance Note
Tracking is opt-in per job to keep overhead minimal. Only enable it on jobs where visibility matters. The log write happens in the same database transaction as the job itself - on failure, the log entry is committed in a separate transaction so the failure record is never lost.
Accounting Automation
Monitor invoice confirmation, payment matching, and reconciliation crons - catch silent failures before they affect month-end closing.
Inventory & Logistics
Track reordering rules, stock valuation, and delivery route jobs - know immediately when procurement automation breaks.
Email & Communication
Watch mail queue flusher, bounce tracking, and digest crons - detect email delivery problems before users notice.
External Integrations
Capture API sync job failures with full tracebacks - debug third-party integration errors without needing server log access.
Performance Monitoring
Track average execution time per job over time - identify performance regressions before they cause timeouts.
Audit & Compliance
Maintain a full execution history for compliance requirements - know exactly when automated processes ran and who triggered them.
Faster Incident Response
See failures immediately in Odoo - no waiting for a developer to SSH in and dig through server logs.
Operational Confidence
Know that your automations are running on schedule and succeeding - not just assumed to be working.
Reduced Debugging Time
Full tracebacks stored in Odoo let functional users report exact errors - developers fix faster with precise context.
Zero Configuration Overhead
Toggle tracking per job - no global impact, no performance cost on jobs you don't need to monitor.
Do You Need Assistance or Have a Feature Request?
Odoo Proprietary License v1.0 This software and associated files (the "Software") may only be used (executed, modified, executed after modifications) if you have purchased a valid license from the authors, typically via Odoo Apps, or if you have received a written agreement from the authors of the Software (see the COPYRIGHT file). You may develop Odoo modules that use the Software as a library (typically by depending on it, importing it and using its resources), but without copying any source code or material from the Software. You may distribute those modules under the license of your choice, provided that this license is compatible with the terms of the Odoo Proprietary License (For example: LGPL, MIT, or proprietary licenses similar to this one). It is forbidden to publish, distribute, sublicense, or sell copies of the Software or modified copies of the Software. The above copyright notice and this permission notice must be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Please log in to comment on this module