EH HR Reminder
Date-based HR reminders that surface themselves, every morning, inside Odoo.
Why this module
EH HR Reminder
Every change on the record
The reminder model rides the platform audit mixin, so create, write and delete are written to an append-only, hash-chained log you can verify on demand. You can show who changed a due date, and when, without bolting on extra tooling.
One reminder, one company
Each reminder is locked to a company by the strict company-aware mixin. Cross-company writes are refused by default, even under sudo, unless an explicit audited override is in play. No null-company records leaking across the group.
It surfaces itself daily
A daily cron searches for every reminder that is due and not yet done, then posts a chatter note on each one. You work from the list, not a side spreadsheet, and the due items light up on their own.
Day in the life
A Tuesday on the HR desk
An officer logs three reminders: a contract renewal in 60 days, a probation review next week, and a visa document follow-up. Each gets a category and a due date. Overnight the daily cron runs, finds the probation review has come due, and posts a chatter note on it. The next morning the officer opens the Reminders list, sees the due item highlighted, handles it, and clicks Done. The record drops to muted, the audit log keeps the full history, and nothing fell through the cracks.
Edge cases
The cases most modules quietly ignore.
In the shipped code today, each one a place where a cheaper module silently does the wrong thing.
The audit log serializes chain appends with a transaction-scoped Postgres advisory lock, so two reminders saved at once cannot fork the hash chain. The lock releases automatically on commit or rollback.
Each reminder requires a company and defaults to the active one. Moving a reminder to a company the user does not belong to is refused with an AccessError, and any permitted cross-company move is written to the audit trail.
verify_chain walks the log forward in bounded batches and returns the first row whose recomputed sha256 does not match, so a silently edited due date is detectable rather than invisible.
A reminder is due only when it has a date, that date is today or earlier, and it is not yet marked done. Marking it done clears the due flag immediately and mutes the row in the list.
The daily cron posts a chatter note on each due, not-done reminder and returns the count it touched. It re-notifies on each run while an item stays due, so the cron is a surfacing aid rather than a one-shot deduplicated alert.
What is inside
Built to do the job, end to end.
- Models this module adds. One model, eh.hr.reminder, with a title, optional employee, due date, category (contract, document, probation, review, other), free-text note, a done flag and a computed is_due flag. It inherits the platform audited and company-aware mixins plus mail.thread for chatter.
- Automation it installs. A single ir.cron, EH HR: fire due reminders, set to run once a day. It calls _cron_fire, which finds every due and not-done reminder and posts a chatter note on each. The cron is active on install.
- Views and access. A list view with due-date highlighting and a muted style for done items, a form with a Mark done button and chatter, and a Reminders menu under the platform records section. Access is three-tier: HR admin and officer read and write, employee-self is read-only.
Honest about the edges
What this does not do, so nothing surprises you.
- The daily cron notifies through chatter notes only. It does not send email or SMS, does not create activities, and has no escalation or reminder-of-a-reminder ladder.
- There is no per-run deduplication flag, so a reminder that stays due is re-notified each day the cron runs until it is marked done.
- Reminders are standalone records you create by hand. The module does not auto-generate reminders from contract end dates, document expiry or probation periods.
- The is_due field is computed, not stored, so it is shown and used for list highlighting but is not directly searchable or groupable.
- There is no recurrence, repeat or snooze. A handled reminder is marked done; a new occurrence is a new record.
- This module uses no approval chains, workflow states or policy rules, so there are no approval, escalation or self-approval features here despite those engines existing elsewhere on the platform.
HR reminders Odoo 16, contract renewal reminder, probation review reminder, employee follow-up tracker, HR due date alerts, document expiry follow-up, HR task reminder, daily cron reminder, audited HR records, multi-company HR, Odoo Community HR add-on, self-hosted HR reminders, ERP Heritage HR Platform, hash-chained audit log, HR compliance reminders
Need this fitted to the way you work?
ERP Heritage delivers end to end Odoo work: Odoo Implementation, Customization and Development, Integration, Migration, Consultation, Support and Training. We help teams put this module into production, shape it to their process, and keep it running.
We work with businesses across Australia (Melbourne, Sydney, Brisbane, Perth, Adelaide, Canberra) and the Middle East (Dubai, Abu Dhabi, Riyadh, Jeddah, Doha, Kuwait City, Muscat). Start a conversation at erpheritage.com.au or email info@erpheritage.com.au.
Languages
Available in 19 languages
The interface ships translated out of the box. Switch language in Odoo and the fields, menus, and messages follow.
Please log in to comment on this module