EH HR Policy Ack
Company policies, published on a workflow and acknowledged on record.
Why this module
EH HR Policy Ack
Acknowledgement you can prove
Every policy publish, archive and edit to its title, category or version is written to an append-only, sha256 hash-chained audit log shared by the whole platform. You can show who published a policy and when, and verify the chain has not been altered after the fact.
The workflow is data, not code
Draft, published and archived, and the publish and archive transitions between them, are defined as records, not Python. An administrator can adjust which HR group is allowed to publish or archive without a developer or a billable day.
One company, one register
Each policy is owned by a single company and that scope is enforced on create and write by the platform company-aware mixin. Cross-company writes are refused unless an explicitly audited override is set, so one company never sees or edits another's policies.
Day in the life
From a draft to a signed-off register
An HR officer drafts a code of conduct, sets it to the HR category and version 2024-Q1, and clicks Publish. The record moves to published, picks up its POL/2024/00001 reference, and the transition is logged. Staff records are added under Acknowledgements, and each employee clicks Acknowledge to stamp the date they confirmed they read it. When the policy is superseded the officer archives it, which is final and locks it from further transitions while the acknowledgement history stays on the record.
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.
Archived is marked as the terminal state. The workflow engine refuses any further transition out of it, even one a misconfigured definition might declare, so an archived policy cannot be quietly reopened.
Publish and archive are restricted to the HR Officer group. A user outside the allowed groups, and not an administrator, is blocked from advancing the policy with a clear error rather than a silent no-op.
Audit rows are serialized by a transaction-scoped Postgres advisory lock and each row hashes the previous one, so concurrent publishes cannot interleave into a broken chain and a later edit to any row is detectable by re-verifying the chain.
Changing a policy's company to one the user does not belong to is rejected, and any permitted cross-company write is itself recorded in the audit log with every affected record id.
The POL reference is drawn from a sequence only when the name is still the placeholder, and falls back to POL/AUTO if the sequence is unavailable, so a record is never left without a name on create.
What is inside
Built to do the job, end to end.
- Models this module adds. Two: eh.hr.company.policy (the policy, composing the workflow, audited and company-aware mixins plus mail.thread) and eh.hr.policy.acknowledgement (a plain child record linking an employee to a policy with an acknowledged flag and date).
- What it installs. List and form views with a status bar and Publish and Archive buttons, an Acknowledgements tab with an inline Acknowledge action, a Company Policies menu under HR records, a policy sequence, the workflow definition with its states and transitions, and access rules for HR admin, officer and self-service employee.
- What it stands on. It owns no workflow, audit or company-scope code of its own. Those come from eh_hr_core, eh_hr_compat and eh_hr_engine_workflow, alongside standard Odoo hr. It composes the shared engines rather than duplicating them.
Honest about the edges
What this does not do, so nothing surprises you.
- The acknowledgement child record is deliberately plain: it is not workflow-driven, not hash-chained in the audit log, and carries no company_id or e-signature. It records that an employee confirmed they read a policy and the date, not a signed legal attestation.
- Acknowledging is not idempotency-guarded against a second click, and nothing stops an officer from un-ticking it; treat it as an HR record, not a tamper-proof consent capture.
- Policy versions are a free-text label on a single record. Publishing a new version does not auto-create fresh acknowledgement rows or reset prior sign-offs, and there is no portal or email reminder that chases employees who have not yet acknowledged.
- Policy transitions are not routed through the approval engine in this module, so there is no multi-step approval ladder on publishing; the publish and archive steps are single group-gated actions.
- Acknowledgements are entered through the back-office form, not a public employee portal, and the module ships no cron, no automated digest and no reporting dashboard.
Odoo policy acknowledgement, Odoo 18 HR policy management, employee policy sign-off, company policy register Odoo, HR policy acknowledgement tracking, IT and safety policy publishing, policy version control HR, HR compliance audit trail, multi-company HR policies, Odoo Community HR policy module, policy publishing workflow, employee acknowledged policies record
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.
Modules teams pair with this one.
Premium ERP Heritage modules that extend the same stack, each built to the same engineering bar.
Bring Employment Hero onboarding workflows, employee goals and contractor flags into Odoo Community as real recor...
End to end French B2B and B2G electronic invoicing for the DGFiP reform, generating Factur-X PDF/A-3 with embedde...
Accept ZainCash wallet payments in Iraq at your Odoo checkout, on the ZainCash Payment Gateway v2 with OAuth2, re...
Sync Employment Hero ATS recruitment job openings into the standard Odoo Recruitment app, mapping each opening on...
The New Zealand country pack for the ERP Heritage Employment Hero integration
| Availability |
Odoo Online
Odoo.sh
On Premise
|
| Odoo Apps Dependencies |
•
Employees (hr)
• Discuss (mail) |
| Community Apps Dependencies | Show |
| Lines of code | 1346 |
| Technical Name |
eh_hr_policy_ack |
| License | LGPL-3 |
| Website | https://www.erpheritage.com.au/ |
Please log in to comment on this module