EH HR Service Request
Employees raise ID cards, salary certificates, experience letters and NOCs, and HR fulfils them through a configurable, audited workflow.
Why this module
EH HR Service Request
States and transitions are data
Draft, submitted, in progress, done and rejected come from a workflow definition, not hard-coded Python. The submit, take, complete and reject steps are each gated to the right group, and the two final states refuse any further move.
Every step is on the record
Each transition and assignment is written to the platform append-only, hash-chained audit log and tracked on the chatter. You can show who moved a request and when, and verify the chain has not been edited after the fact.
Thin module, shared foundations
The module adds only the request model and its workflow definition. Workflow, audit and company scoping are inherited from the platform engines it depends on, so behaviour matches the rest of your EH HR modules from day one.
Day in the life
From a bank-letter ask to a closed request
An employee opens a request, picks Salary certificate, and writes a short note about the bank that needs it. They press Submit and the request moves to submitted with their reference number already assigned. An HR officer presses Take to claim it, the request moves to in progress and the officer is recorded as the owner. Once the letter is issued they press Complete and the request reaches done, a final state. Had the request been out of policy, the officer would press Reject instead, sending it to rejected. Every move and the change of owner is on the chatter and in the audit log, scoped to the company the employee belongs to.
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.
Done and rejected are marked final. The engine refuses any further transition out of them, even one a misconfigured definition might declare, so a closed request cannot be quietly reopened.
Submit is allowed to employee self-service, while take, complete and reject are restricted to the HR officer group. A user outside a transition's groups is refused with a clear error rather than silently advancing the state.
The hash chain is serialised with a transaction-scoped Postgres advisory lock, so two simultaneous transitions cannot fork the trail. The lock releases on commit or rollback.
Each audit row stores the sha256 of the previous row plus its own fields. verify_chain walks the log and returns the first row that does not match, catching any edit that did not recompute the whole downstream chain.
Company is required and defaults to the active company. Moving a request into a company the user is not a member of is refused, and any audited cross-company override records every affected id.
References are drawn from a yearly SRV sequence only when the record is still named New, so saving and re-saving never burns a second number, with a safe fallback if the sequence is missing.
What is inside
Built to do the job, end to end.
- Model it adds. eh.hr.service.request, carrying the request type, the employee it is for, a free-text description, the HR assignee and the workflow state. References auto-number from a yearly SRV sequence on save.
- Workflow definition. A draft to submitted to in progress to done flow with a reject branch, shipped as platform workflow data. Submit, take, complete and reject transitions are each scoped to the allowed group, and done and rejected are final.
- Request types. ID card, salary certificate, experience letter, no-objection certificate and a catch-all Other, so the common HR document asks are selectable out of the box and Other covers the rest.
- Security and menu. Access for HR admin, HR officer and employee self-service, with delete reserved to admin. A Service Requests menu sits under the platform Employee Requests area for officers.
- Inherited platform behaviour. Mixins bring the configurable workflow, the hash-chained audit emission on create, write and transition, strict per-company scoping, a correlation id for tracing and mail.thread chatter.
- Automated tests. The module ships unit tests covering default numbering and state, the default request type, the full complete path and the reject path.
Honest about the edges
What this does not do, so nothing surprises you.
- This is a request desk, not a document generator. It records and routes the ask; it does not render the ID card, certificate or letter itself.
- The five request types are a fixed selection. Adding new types is a small code or studio change, not an in-app setting in this release.
- No approval chain is wired onto this workflow. Transitions are gated by group, not by a multi-step approver ladder, even though the platform offers one for modules that need it.
- There is no employee portal or website form here. Requests are created from the Odoo back office by users with the right HR group.
- No SLA timers, escalation or scheduled reminders ship with this module. It does not run any cron of its own.
- The audit log, workflow engine and company-scope rules live in the platform dependencies (eh_hr_core, eh_hr_compat, eh_hr_engine_workflow); this module consumes them and owns none of that code.
HR service request Odoo, employee document request, ID card request Odoo, salary certificate request, experience letter request, no-objection certificate NOC, HR helpdesk documents, employee self-service HR, HR request workflow, HR officer assignment, audited HR requests, multi-company HR Odoo, Odoo 16 HR module, HR ticketing requests
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.
The Australia country pack for the ERP Heritage Employment Hero integration
Sync certifications, qualifications and employee document metadata from the Employment Hero people platform into...
Sync Employment Hero leave categories, leave requests and leave balances into the standard Odoo Time Off app, wit...
Show the Hijri (Umm al-Qura) date alongside Gregorian dates across Odoo 16
Connect Odoo partner records to the Saudi SPL National Address service and the Wathq commercial registry
One click install of the full Employment Hero integration for Odoo Community, covering the connector, two way syn...
| Availability |
Odoo Online
Odoo.sh
On Premise
|
| Odoo Apps Dependencies |
•
Employees (hr)
• Discuss (mail) |
| Community Apps Dependencies | Show |
| Lines of code | 1333 |
| Technical Name |
eh_hr_service_request |
| License | LGPL-3 |
| Website | https://www.erpheritage.com.au/ |
Please log in to comment on this module