EH HR Skills
Define the skills each job needs, then see exactly where every employee falls short.
Why this module
EH HR Skills
Built on standard Skills
Required skills hang off the native hr.job position and read the employee's own standard skill records. No parallel competency tables to keep in sync, and your existing Skills data carries straight through.
Gap analysis on demand
Press the button on an employee and the module rebuilds their gap rows against the job's required skills, marking each one missing, below required, or met by comparing level progress. Re-run it any time; rows are replaced, never duplicated.
A register you can trust
The gap list is read-only and colour-coded, grouped by employee and status, with required and current versions of the matrix gated to HR officers. What you see is computed from the records, not hand-edited.
Day in the life
From a role definition to a hiring and development plan
An HR officer opens a job position and lists the skills it needs, each with an optional minimum level, in an inline editable matrix. The skill type fills in automatically from the skill. Later they open an employee on that job and press Skill gaps: the module compares the person's current skills against the role's requirements and writes one row per required skill, flagged missing, below required, or met. The smart button shows how many are unmet at a glance. The same register, filtered to unmet and grouped by employee, tells a manager where to focus training, what a candidate is short on, and which roles are ready to fill.
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.
action_compute_skill_gaps unlinks the employee's existing gap rows before recreating them, so running the analysis repeatedly never produces duplicates. A re-run on the same employee yields the same row count.
An employee with no record of a required skill is classified missing; one whose current level progress sits under the required level's progress is below required; equal or higher is met. The unmet counter sums missing and below.
When a required skill carries no minimum level, its required progress is treated as zero, so any held level meets it and only a total absence of the skill shows as missing.
On Odoo 17 the module reads current_employee_skill_ids (active skill versions only); on 16, 17 and 18 it falls back to employee_skill_ids, so the same code computes correct gaps across series.
If an employee holds no job position, the compute skips them cleanly and writes no gap rows rather than erroring.
Each gap row carries an indexed company derived from the employee, so the register honours company record rules in a multi-company database.
What is inside
Built to do the job, end to end.
- Models this module adds. eh.hr.job.skill, the required skill (with optional level) on a job position, and eh.hr.skill.gap, a computed row per employee per required skill.
- Standard Odoo models it extends. hr.job gains a required-skills matrix; hr.employee gains the gap rows, an unmet-gap counter, and the Skill gaps smart button and action.
- Views and navigation. An inline editable required-skills list and form, a read-only colour-coded gap register with status, employee and skill-type grouping, and Talent menu entries gated to HR officers.
- Security and access. Three-tier access on both models: HR admin and officer read and write, employee self-service read-only. Menus restricted to the HR officer group.
- Tests in the box. Automated tests cover the required-skills matrix on a job, the missing/below/met classification, the unmet counter, and the idempotent recompute that replaces rather than duplicates rows.
- Built on. Depends on eh_hr_core and eh_hr_compat, plus standard Odoo hr_skills and hr. No external services.
Honest about the edges
What this does not do, so nothing surprises you.
- This module records required skills and computes gaps. It does not propose, book, or track training to close those gaps; pair it with a training module for that.
- Gap rows are computed on demand from the Skill gaps button or action. There is no scheduled job that recomputes them automatically as skills change.
- Gap classification compares the level progress values defined on your skill levels. If your skill types carry no levels, every held skill simply counts as met.
- It does not score or rank candidates, drive recruitment stages, or write to the recruitment pipeline; it reports the gap, the hiring decision stays with you.
- There is no tamper-evident or hash-chained audit log in this module; it relies on standard Odoo logging and record rules.
- Required skills and gaps live on standard hr.job and hr.employee records, so the module follows the access and multi-company rules already in your database.
odoo skills gap analysis, required skills per job odoo, job competency matrix odoo, employee skill matrix, hr_skills extension, odoo 17 skills, skill gap report odoo, talent capability mapping odoo, minimum skill level per role, odoo community hr skills, workforce skills matrix, recruitment skill comparison odoo
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