HR Announcements with Audit Trail
Publish company announcements through a governed draft, published, archived workflow with a tamper-evident audit trail.
Why this module
HR Announcements with Audit Trail
Workflow, not a free-for-all
Announcements advance through draft, published and archived states defined in the platform workflow engine. Publish, archive and cancel transitions are each restricted to the HR officer group, so only authorised staff change what is live.
Every change is on the record
State moves and edits to title, category, dates, audience and pin are written to an append-only, sha256 hash-chained audit log with advisory-lock serialised appends and a verify_chain check. Edits that skip the chain are detectable.
Reaches the right people
Aim a notice at the whole company, selected departments or named employees. The audience set and a headcount are resolved automatically, and a publish and expiry window with a pin flag controls how prominently and how long it shows.
Day in the life
From draft to noticed
An HR officer drafts an urgent notice that the office closes Friday, picks the affected departments, sets a publish date and a one week expiry, and pins it. The audience and headcount fill in automatically. They hit Publish; the record moves to Published, becomes live within its date window, and the transition lands in the audit log against their user. A week later it expires from the live set, and when the officer archives it the move is recorded too. Nobody outside the officer group could have published, archived or cancelled it, and the chatter plus audit trail show exactly who did what and when.
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.
Each audit row stores the sha256 of the previous row's hash plus its own fields. Any edit that does not recompute the whole downstream chain is caught by verify_chain, so the trail is tamper-evident rather than just logged.
The audit chain is serial by nature: each row depends on the current tail. Appends take a transaction-scoped Postgres advisory lock so two concurrent transactions cannot read the same tail and fork the chain.
Archived and cancelled are marked final in the workflow definition. The engine refuses any further transition out of a final state, even one a misconfigured definition might declare, so a closed announcement stays closed.
Publish, archive and cancel each carry an allowed group. A user outside the HR officer group is blocked from firing the transition, independent of their record write access.
Announcements are company-aware and a whole-company audience resolves against the record's company. Audit rows carry the owning company id so per-company audit-log rules can isolate reads.
An announcement is live only while it is published and today falls on or after the publish date and before any expiry date, so future-dated and expired notices drop out of the live set automatically.
The ANN/year reference is drawn from a sequence only when the name is still New, so imports or duplicates that already carry a reference keep it instead of consuming a new number.
What is inside
Built to do the job, end to end.
- Workflow definition. Data-defined draft, published, archived and cancelled states with publish, archive and cancel transitions, each gated to the HR officer group. States and ordering live in the platform engine and can be reconfigured without code.
- Audited fields. The model captures state, title, category, publish date, expiry date, audience and pinned into the shared audit log on create, write and unlink, with before and after snapshots on edits.
- Audience model. An audience selection of whole company, selected departments or selected employees, with a computed resolved employee set and a live headcount that updates as the targeting changes.
- Views and access. List and form views with a status bar, audience group, pin and live indicator, plus chatter. Four access rules from self-service read up to HR admin full control, and a menu under HR records for officers.
Honest about the edges
What this does not do, so nothing surprises you.
- Notices are managed inside Odoo; this module does not send email or push notifications or render a public bulletin board. Audience targeting governs who a notice is aimed at, not delivery.
- Approval-gated transitions are not configured for announcements in this module. The platform engine supports approval chains, but publish, archive and cancel here are direct, HR officer gated transitions.
- Requires the EH HR Platform engine modules (eh_hr_core, eh_hr_compat, eh_hr_engine_workflow) and the standard Odoo HR app; it is a consumer of the shared workflow and audit engine, not a standalone app.
- The audit trail records announcement state changes and tracked field edits; it is not a full read-access or view log.
- Built and tested for Odoo 18 Community.
odoo hr announcement, odoo company announcements, odoo staff notice board, hr communication odoo 18, odoo policy announcement, odoo urgent staff alert, pinned announcement odoo, announcement audience targeting, odoo hr audit trail, tamper evident audit log, odoo publish archive workflow, multi company hr announcement, department announcement odoo, employee notice odoo, odoo internal communication
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