internal_resume_lines
New in Odoo 19: internal_resume_lines writes the employee's internal career history for you, computed from version records, no manual resume entry required. It is the block titled with your company name above the editable resume.
| Technical name | internal_resume_lines |
|---|---|
| Views | form (view widget, |
| Module | hr_skills (installed with Skills Management) |
| Used in core | 2 occurrences in hr_skills: the employee form and the user profile form, both right above resume_one2many |
| Versions | Odoo 20.0, Odoo 19.0 |
| No-code setup | No. The block appears automatically with hr_skills; Studio cannot add or configure it |
| Alternatives | resume_one2many, skills_one2many, hr_org_chart |
What the internal resume widget does
What this means for your team
Working examples
How versions become resume entries
Version compatibility
| Version | Status | Notes |
|---|---|---|
| Odoo 20.0 | Verified | Not released. Rewritten onto asyncComputed reactive state; same contract. See below. |
| Odoo 19.0 | Verified | Introduced in 19.0 alongside the hr.version rework. Verified against the shipped source. |
| Odoo 18.0 | Not available | Does not exist; the resume tab shows only manual resume lines. |
| Odoo 17.0 | Not available | Does not exist. |
| Odoo 16.0 | Not available | Does not exist. |
Upgrade note. Coming from 18 or earlier there is nothing to migrate: the widget did not exist and appears automatically with hr_skills on 19. The quality of the timeline is entirely a function of your version data, so a migration that collapses contract history into a single version yields a one-line resume.
What is changing in Odoo 20
Common problems and fixes
| Symptom | Cause and fix |
|---|---|
| The Experience block is empty for an employee with years of history | The timeline is computed from hr.version records; missing or collapsed versions yield no entries. Check the employee's version history; entries need job titles and dates on the versions. |
| AccessError when opening the resume tab | The server method requires read access to hr.employee.public for the target employee. Grant the user the base employee visibility or restrict the form instead. |
| The block header shows the wrong company | The header prints the record's company_id display name, auto-loaded by the widget. Correct the employee's company; multi-company setups show the employee's own company. |
| One long stint shows where two roles existed | Consecutive versions share the same job title, so they merge into one entry by design. Give the versions distinct job titles; the split follows title changes and contract gaps. |
| Widget shows nothing on a custom model's form | The server method only understands hr.employee and res.users (mapped to its employee). Keep the widget on employee or user forms, or extend get_internal_resume_lines. |
Internal resume widget vs the alternatives
| Widget | Best for | Key difference |
|---|---|---|
internal_resume_lines | The automatic in-company experience timeline on the resume tab | Read-only and computed from hr.version history; nothing is typed or stored |
| resume_one2many | Manually maintained resume entries, external experience and education | An editable one2many grouped by line type; users create and edit rows |
| skills_one2many | The skills matrix on the same tab | Editable skills grouped by skill type, with levels and progress |
| hr_org_chart | The reporting hierarchy rather than the career history | Fetches the manager chain live from its own controller |
Frequently asked questions
Where does internal_resume_lines get its data?+
Why did this widget only appear in Odoo 19?+
Can employees see their own computed resume?+
Can I edit or hide individual computed entries?+
What does Current mean on an entry?+
Why does the no-resume-lines message not show even though this block is empty?+
Getting real value out of Odoo 19's employee versioning?
The new version model powers timelines like this widget, but only if your migration carries contract history over cleanly. We plan hr.version data mapping during Odoo migrations so features like the automatic resume work on day one instead of rendering empty.
Plan your HR data migration