Employee Insurance Register
Track employee insurance policies, beneficiaries, and validity on a hash-chained, multi-company HR workflow engine.
Why this module
Employee Insurance Register
A register, not a claims system
It tracks the policy, the cover, the premium, and who is named on it. It records the lifecycle and the audit trail. It does not process claims or post premiums to payroll, and it does not pretend to.
Every edit is hash-chained
Create, write, and delete on a policy emit rows into an append-only SHA-256 hash-chained audit log with a verify_chain check. Quiet tampering with a single row breaks the chain downstream and is caught.
Owns no engine of its own
Workflow, audit, and company scoping come from shared platform mixins, so insurance behaves exactly like every other EH HR document and inherits the same guardrails rather than reimplementing them loosely.
Day in the life
An HR officer registers a new health policy and names two beneficiaries.
The officer opens Insurance, picks the employee, and enters the provider, policy number, health cover type, coverage amount, and monthly premium. A reference like INS/2026/00001 is assigned on save. They add a spouse at 60 percent and a child at 40 percent; the beneficiary share total rolls up to 100. With an end date set, the record shows days to expiry and flags as expiring soon inside the last 30 days. They click Activate, which is gated to the HR Officer group, and the policy moves draft to active. Every field captured and the state change land in the hash-chained audit log under the owning company, and the chatter records who did it.
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 takes a Postgres transaction-scoped advisory lock before each append, so concurrent writes cannot read the same chain tail and fork the hash chain.
Expired and cancelled are marked is_final. The engine refuses any further transition out of a final state even if a misconfigured definition declares one.
Policies are required to carry a company and default to the active one. Moving a record into a company the user does not belong to is rejected even under sudo, unless an explicit audited override context is set, and that elevation is itself logged.
Activate, expire, and cancel are each restricted to the HR Officer group at the workflow-transition level, not just hidden in the view, so a non-officer cannot fire them server-side.
A write whose captured fields do not actually change emits no audit row, keeping the chain free of empty no-op events.
A database CHECK constraint pins every beneficiary share between 0 and 100 percent, so an out-of-range value is rejected at the row level.
Policy references draw from a yearly INS sequence and fall back to INS/AUTO if the sequence is missing, so a record is never left without a reference.
What is inside
Built to do the job, end to end.
- Insurance policy record. Provider, policy number, type (health, life, dental, disability, other), coverage amount, premium and frequency (monthly, quarterly, annual), and start and end dates, with key fields tracked in the chatter.
- Named beneficiaries. An ordered list of beneficiaries per policy with relationship, percentage share, and a contact, plus a rolled-up total share that should add to 100 percent.
- Expiry signals. Computed days to expiry and an expiring-soon flag for cover ending within 30 days, surfaced on the form and list for quick scanning.
- Lifecycle workflow. Draft, active, expired, and cancelled states driven by the shared workflow engine, with HR Officer gated Activate, Expire, and Cancel actions and a status bar.
- Audit and company scope. Inherited hash-chained append-only audit log on create, write, and delete, and strict multi-company scoping that refuses cross-company writes without an audited override.
- Access and menu. Records menu under HR with role-based access for admin, manager, and self-service employee groups, and a dedicated beneficiary access set.
Honest about the edges
What this does not do, so nothing surprises you.
- No automated expiry reminders. The expiring-soon flag and days-to-expiry are on-screen signals only; there is no scheduled job that emails or notifies on upcoming expiry.
- No premium accounting. Premium and frequency are recorded for reference; nothing is posted to payroll, invoices, or the general ledger.
- No approval routing for insurance. Transitions are direct HR Officer actions; the platform approval engine is available but no approval chain is wired to insurance out of the box.
- No claims processing. This is a policy and beneficiary register, not a claims intake or settlement workflow.
- Beneficiary total is informational. The 100 percent rollup is shown but not enforced; individual shares are bounded 0 to 100 but the sum is not constrained.
- Document storage is via chatter only. There is no dedicated attachment slot for policy certificates beyond standard chatter.
odoo 18 employee insurance, hr insurance management odoo, employee insurance policy tracking, insurance beneficiary management, policy expiry tracking odoo, hr audit trail odoo, multi company hr odoo, employee benefits register, insurance coverage premium odoo, hr workflow engine odoo 18
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.
Sync attendance clock events from the Employment Hero people platform into the stock Odoo Attendances app, keyed...
The Singapore country pack for the ERP Heritage Employment Hero integration
The complete ERP Heritage Employment Hero integration in one install
Sync timesheet entries from the Employment Hero people and payroll platform into the standard Odoo Timesheets app...
Real-time MRA fiscalisation for Point of Sale receipts in Odoo 18 Community, mapping each paid POS order to the M...
| Availability |
Odoo Online
Odoo.sh
On Premise
|
| Odoo Apps Dependencies |
•
Employees (hr)
• Discuss (mail) |
| Community Apps Dependencies | Show |
| Lines of code | 1407 |
| Technical Name |
eh_hr_insurance |
| License | LGPL-3 |
| Website | https://erpheritage.com.au |
Please log in to comment on this module