EH HR Skills
Required skills per job, then a live gap report per employee.
Why this module
EH HR Skills
A real gap calculation, not a label
The gap engine compares the employee current level progress against the job required level progress and classifies each required skill as missing, below required, or met. It reads the actual hr.skill.level progress values, so the result is a number you can act on, not a checkbox.
Extends Skills, does not replace it
Required skills point at standard hr.skill and hr.skill.level records, and the gap report reads the employee native skill rows. Nothing is duplicated, so your existing Skills data and any reporting on it keep working unchanged.
Yours to keep
LGPL-3 source on disk, self-hosted in your own database. No activation key, no phone-home, no per-user fee. One authored source runs on Odoo 16, 17, 18 and 19 Community with the unit suite green on each.
Day in the life
A manager checks who is ready for a role.
The Developer job lists three required skills with minimum levels: Python at Expert, SQL at Intermediate, Git at Beginner. An HR officer opens an employee, clicks the Skill gaps smart button, and the module rebuilds that employee gap rows in one pass. Python shows below required because the person sits at Beginner against an Expert target, SQL shows missing because it is absent from their skill set, and Git shows met. The smart button reads two unmet, the gap list color codes each line red, amber or green, and the officer groups the whole team by status to see who needs development before the role opens. Re-running the calculation later replaces the rows rather than stacking duplicates, so the report is always current.
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.
Computing skill gaps unlinks the prior rows for that employee before recreating them, so re-running the calculation on the same employee never duplicates lines. The count of unmet skills stays correct across repeated runs.
The gap engine resolves the employee current skills from current_employee_skill_ids on Odoo 19, which exposes active versions only, and falls back to employee_skill_ids on Odoo 16, 17 and 18. One code path reads the right field on each series.
A required skill the employee does not hold at all is classified missing, while a skill they hold but at a lower progress than required is classified below required. The two cases are kept distinct so a development plan can tell a gap in coverage from a gap in depth.
A required skill can be listed with no minimum level. Its required progress is then treated as zero, so simply holding the skill at any level counts as met. Requirements with a level compare against that level progress.
If an employee has no job position assigned, the compute step skips them cleanly and produces no gap rows rather than raising, so a bulk run across mixed records does not fail on the unassigned ones.
Each gap row carries the employee company as a stored, indexed field, so gap reporting can be filtered and grouped per company in a multi-company database.
HR admins and officers can write required skills and gap data, while employee self access is read-only. The gap list view itself blocks create and edit, so the report cannot be hand-altered in the UI.
What is inside
Built to do the job, end to end.
- Required skills per job. A new eh.hr.job.skill line model on hr.job lets you list each skill a position needs, with an optional minimum hr.skill.level. The skill type is pulled through from the chosen skill, so lines stay categorized.
- Per employee skill gap report. A new eh.hr.skill.gap model holds one row per required skill for an employee, with the required level and progress, the current level and progress, and a status of missing, below required, or met.
- Compute action and smart button. An action on hr.employee rebuilds the gap rows against the employee job required skills and opens the gap list. A smart button on the employee form shows the live count of skills not yet met.
- Gap list, filters and grouping. A read-only, color-decorated gap list defaults to showing unmet skills grouped by employee, with filters for missing and unmet and group-by on employee, status and skill type.
- Talent menus and access control. Required Skills and Skill Gaps menus sit under the HR talent section for officers. Access rights give admins and officers full control and employees read-only visibility.
Honest about the edges
What this does not do, so nothing surprises you.
- This module compares employees against their job required skills. It does not score job applicants or recruitment candidates against the matrix; the gap calculation runs on hr.employee records only.
- Gap rows are a snapshot produced when you run the compute action. They are not recomputed automatically when a skill or a job requirement later changes, so re-run the action to refresh the report.
- Status compares numeric level progress, so it is only as meaningful as the level_progress values configured on your hr.skill.type levels in standard Skills.
- There is no scheduled job, no approval workflow and no notification engine wired into this module. It defines the matrix, computes the gaps, and presents them.
- Required skills are defined per job position, not per individual employee, so two people in the same job share the same requirement set.
Odoo HR skills matrix, required skills per job Odoo, skill gap analysis Odoo, competency gap report, employee proficiency levels, hr_skills extension, job required skills Odoo Community, skill level requirements, talent development Odoo, workforce skills tracking, Odoo 19 skills module, missing below met skill status, HR competency management Community, skills matrix Odoo 16 17 18 19, employee skill assessment
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