HADOOPT
TECHNOLOGIES
Schedule a Tech Consultation
Home
Services
Odoo ERP implementation Rollout, custom modules, migration and support. Web application development SaaS products, portals and internal platforms. Mobile application development Offline-first field apps and customer apps. AI development & automation LLM assistants, document processing, forecasting. Odoo version upgrades ↗ Move to a newer release, scoped and priced on its own site.
Products
OrgExp ↗ Budget, CAPEX and OPEX management.
Blog About Contact Schedule a Tech Consultation
Blog / Odoo 19: Complete Guide for Businesses
Odoo 19 7 min read

Employee records, departments and contracts in Odoo 19

How Odoo 19 Employees stores people, departments and dated contract versions, who can see private data, and what to set up before payroll.

· ERP practice 22 Sep 2026

In Odoo 19 the Employees app keeps each person as an hr.employee record whose job, department, schedule, private details and contract terms live in dated versions (hr.version). The separate Contracts app of earlier releases is gone: a salary change or promotion is now a new version with an effective date on the employee itself. Set up departments, working schedules and access groups first, then load employees with their current version, and only then switch on payroll.

What changed in Odoo 19: versions replace contracts

If you have used Odoo 16, 17 or 18, you will remember hr_contract, a module with its own contract records, stages and a Contracts menu. That module does not exist in 19.0. Its fields have moved into hr.version, which the employee inherits directly. Contract start and end date, end of trial period, wage, contract type, the salary structure type (labelled Pay Category on the form) and working hours all sit on the version.

So does a lot more than the old contract ever held. Department, job position, job title, work address and work location, private address, marital status, dependent children and identification numbers are also versioned. The practical effect is a real history: when someone moves from Coimbatore to the Chennai office on 1 April, you create a new version dated 1 April instead of overwriting the old address and losing it.

On the employee form the versions appear as a timeline in the header. The + button (tooltip "New Employee Record") asks for an effective date and copies the current values into a new version. The History smart button lists every version. A scheduled action updates each employee's current version as dates pass, so a version dated next month becomes current on its own.

The employee form, tab by tab

The form is organised into these tabs:

  • Work: department, job position, manager and coach, work address and work location, with an organisation chart panel on the right.
  • Resume: resume lines and skills, filled in once the Skills Management module is installed. We cover that in part 29.
  • Personal: private contact, emergency contact, visa and work permit, family and education. HR officers only.
  • Payroll: the contract overview (start and end date, wage, employee type, contract type, pay category) and working schedule. HR administrators only.
  • Settings: the linked user, time zone, HR responsible, and the PIN and badge barcode used by Attendance and Point of Sale.

The Employee Type field has six values out of the box: Employee, Worker, Student, Trainee, Contractor and Freelancer. Decide early which of these you will use. Payroll structures and reports often filter on it, and contractors paid through vendor bills should not end up in a pay run.

Under Payroll there is a Load a Template link. Contract templates, maintained under Configuration > Recruitment > Contract Templates, are versions without an employee. Building three or four of them (say, full-time staff, trainee, fixed-term) saves typing the same schedule, contract type and pay category for every new joiner.

Departments, managers and the org chart

Departments are a tree: each has a parent department, a manager and a colour. The employee's Manager field is what builds the reporting line, and it drives approvals in other apps (time off, expenses, appraisals). The Coach field follows the manager automatically unless you set it to someone else. Unlike department and job, Manager and Coach sit on the employee itself and are not versioned.

The HR Org Chart module (Community) adds two things: the small chart on each employee's Work tab, and a hierarchy view on the Directory and on Departments where you can see the whole structure. Department hierarchy supports drag and drop; the employee chart is read-only and reflects the Manager field.

Our advice is to model departments the way approvals actually flow, not the way the organisation chart on the office wall looks. If a plant head approves leave for three production departments, make sure every employee's Manager field says so. A tidy department tree with wrong managers produces wrong approval routing.

Who can see private information

Odoo 19 has two access levels on Employees beyond ordinary users:

GroupSeesTypical holder
(no Employees right)The Directory: names, work contact details, department, manager, org chartEvery internal user
Officer: Manage all employeesPersonal tab, private address, identification numbers, bank accounts, version historyHR executives
AdministratorEverything above plus the Payroll tab: wage, contract dates, contract type, pay category; configuration menusHR head, finance controller

Ordinary users never read hr.employee directly; the Directory is built on a restricted public model. Record rules also stop non-officers from seeing employees' bank accounts. That is a sensible default, but check who you give the Officer group to. In many Indian SMEs the office manager who books travel ends up with it, and with it every employee's Aadhaar and PAN.

Employees who have a user can maintain some of their own details, such as private address, private phone, emergency contact and bank account, from their user preferences. That is worth enabling in the onboarding message rather than having HR retype everything.

Onboarding and offboarding plans

Under Configuration > Employee > Onboarding / Offboarding Odoo ships two activity plans, Onboarding and Offboarding, each a list of activities with an assignee. For employee plans the assignee can be the employee, their manager or their coach, as well as a fixed user. The Launch Plan button on the employee form creates all the activities at once, with due dates.

Plans can be tied to a department, so the factory can have a different onboarding list from the sales office. Keep the plans short. Ten activities that actually get done are better than thirty that sit overdue.

When someone leaves, the departure wizard records a departure reason (Fired, Resigned and Retired are provided), the date, and optionally sets the contract end date and archives the linked user. Archive rather than delete: payroll, timesheets and accounting entries still point at the employee.

A sensible setup order

  1. Company details and the default working schedule in Settings > Employees. Add other schedules (six-day week, shifts) under Configuration > Employee > Working Schedules.
  2. Work locations and the department tree with managers.
  3. Job positions and two or three contract templates.
  4. Access groups: decide who is Officer and who is Administrator before anyone imports data.
  5. Import employees with one current version each: department, job, manager, schedule, contract start date. Add older versions only if you need the history for payroll or reports.
  6. Create users only for employees who will log in. Odoo warns that new users may increase your subscription cost, and on Enterprise it does.
  7. Set the expiry notice periods (defaults are 7 days for contracts and 60 days for work permits) and review the onboarding plans.
Employees > Configuration > Employee > Working Schedules
Employees > Configuration > Recruitment > Contract Templates
Employees > Configuration > Employee > Onboarding / Offboarding
Settings > Employees > Contract Expiration Notice Period
Where the pieces live in Odoo 19

Employees is a Community app, and so is everything in this post. Payroll, appraisals and some reporting are Enterprise; we mark those as we go. Next in the series is recruitment and onboarding. If you are moving employee data out of Tally, spreadsheets or an older Odoo with hr_contract, we can plan the migration with you.

Questions we get asked

Does Odoo 19 still have a Contracts app?

No. The hr_contract module was removed in Odoo 19. Contract fields such as start and end date, wage, contract type and salary structure type now live on employee versions (hr.version). A new contract, raise or transfer is recorded by creating a new version with an effective date from the timeline on the employee form, and older versions stay in the History list.

Is the Odoo 19 Employees app free in Community?

Yes. Employees (hr), HR Org Chart, departments, versions, contract templates and onboarding plans are all LGPL Community modules. Payroll and Appraisals are Enterprise-only. Community is free to use; if you run Enterprise, each user you create for an employee counts towards your subscription, so check odoo.com/pricing before creating users for everyone.

Who can see employee salaries in Odoo 19?

Wage, contract dates, contract type and pay category are restricted to the Employees Administrator group. The Officer group sees private details such as address, identification numbers and bank accounts but not the Payroll tab. Ordinary internal users see only the Directory, which shows work contact details, department and reporting line from a restricted public model.

How do I record a salary change or promotion in Odoo 19?

Open the employee, click the plus button on the version timeline in the header, and pick the date the change takes effect. Odoo copies the current version; change the wage, job or department on the new one. The old version stays in History, and the new one becomes current automatically on its effective date.

← Previous Financial reports, assets and month-end closing in Odoo 19 Next → Recruitment and onboarding in Odoo 19
Keep reading
Odoo 19 Time off, accruals and attendance in Odoo 19 7 min read Odoo 19 Appraisals, goals and skills in Odoo 19 6 min read Odoo 19 Getting started with Odoo 19: what changed and where to begin 6 min read