Skip to main content
iVentureTeam

Odoo 20 Time Off Release Notes

All 4 Time Off changes from the official Odoo 20 release notes, explained in plain words with a screenshot from a live Odoo 20 database, plus where to find each one and what it means for your upgrade.

Planning the move? See our Odoo upgrade services, the Odoo 20 upgrade guide or get a number from the migration cost calculator.

New feature 1Enhancement 2Security 1In Community 3Enterprise only 1
Type
Edition

Change 1 of 4

Calendar day vs working day deductions

New featureCommunity

The amount of time off taken can now be calculated based on either working days or calendar days.

Official Odoo 20 release note

In plain words

A time type has a Count Days as option: Working Days (the duration depends on the employee's working schedule, as before) or Calendar Days (a full week always counts 7 days, weekends included).

Time Off > Configuration > Time Types > type > Time Off tabThe new Count Days as choice, set to Calendar Days on a demo time type created for this shot.

Where to find it

  1. Time Off > Configuration > Time Types, open a type.
  2. Time Off tab > Configuration > Count Days as.

For users

Long leaves such as parental or sabbatical leave can be deducted in calendar days.

For developers

New selection hr.work.entry.type.count_days_as (working, calendar); hr.leave._compute_date_from_to() and the duration computation branch on it. Note that hr.leave.type is now part of hr.work.entry.type (time types).

Upgrading from Odoo 19

Existing types keep Working Days. Custom code referring to hr.leave.type must be moved to hr.work.entry.type.

Change 2 of 4

Minimal amount for time-off requests

EnhancementCommunity

Partly confirmed in the Odoo 20 source code. Parts of this note could not be traced.

Define a minimum amount of time when a time off is requested.

Official Odoo 20 release note

In plain words

The Duration Type of a time type (Full Day, Half-Day or Custom Hours) now works as the smallest amount an employee can request: with Full Day only whole days can be asked, with Half-Day the request form offers Full Day, Morning or Afternoon, and with Custom Hours any duration. No separate minimum quantity field was found in the supplied source code.

Time Off > Configuration > Time Types > typeDuration Type on a time type; its help text (a native tooltip, not captured) describes it as the minimum time off duration an employee can request.

Where to find it

  1. Time Off > Configuration > Time Types, open a type.
  2. Set Duration Type; then create a request of that type and check the offered durations.

For users

The request form only shows the durations allowed by the time type.

For developers

hr.work.entry.type.request_unit (help: minimum time off duration) drives hr.leave.allowed_request_durations and the new request_duration field (full, am, pm, specific) shown with the selection_badge_with_filter widget.

Upgrading from Odoo 19

The old request_unit_half and request_unit_hours booleans on hr.leave are replaced by request_duration.

  • Not verified from the supplied source code: a dedicated minimum amount field; only the Duration Type minimum behaviour was found.

Change 3 of 4

Overview: all employees

EnhancementEnterprise only

The Time Off overview now displays all employees, including those without active leave requests.

Official Odoo 20 release note

In plain words

The Overview gantt now lists every employee, including those who have no time off in the displayed period, as long as the search only filters on employees.

Time Off > OverviewAll employees are listed in the Overview, even those without any time off this month.

Where to find it

  1. Time Off > Overview (gantt view).

For users

Managers see who is present as well as who is away, with progress bars for everyone.

For developers

hr.leave.report.calendar.get_gantt_data() and hr.leave.get_gantt_data() call _get_gantt_data_with_empty() when grouped by employee_id with an employee only domain.

Upgrading from Odoo 19

None.

Change 4 of 4

Prevent app use

SecurityCommunity

Assign users the new "No" user right for Time Off to prevent them from accessing the application.

Official Odoo 20 release note

In plain words

Time Off has a new Employee access level and the user form offers No for Time Off. A user set to No cannot open the Time Off application anymore; before, every internal user could see it.

Settings > Users > user > Access RightsThe Time Off right with the options No, Employee, Officer and Administrator. Demo user created for this shot.

Where to find it

  1. Settings > Users, open a user > Access Rights.
  2. Human Resources > Time Off: choose No.

For users

Administrators can hide Time Off from users who should not use it (external staff, technical accounts).

For developers

New group hr_holidays.group_hr_holidays_employee (implied by the default user template, HR officers and Time Off Responsible); access rights are now attached to it instead of base.group_user.

Upgrading from Odoo 19

Users created with custom group sets may lose Time Off access unless the Employee group is added.

See all 585 Odoo 20 changes across 52 apps

Odoo 20 Time Off: common questions

What is new in Odoo 20 Time Off?

The official Odoo 20 release notes list 4 Time Off changes (1 new feature, 2 enhancements, 1 security). They include Calendar day vs working day deductions, Minimal amount for time-off requests, Overview: all employees, Prevent app use.

Are the Odoo 20 Time Off changes available in Community edition?

3 of the 4 changes are in Odoo 20 Community (and Enterprise). 1 is Enterprise only. Each change on this page is labeled with its edition.

Do Odoo 20 Time Off changes affect my customizations when upgrading from Odoo 19?

3 of the 4 changes have something to check when upgrading from Odoo 19, for example Calendar day vs working day deductions, Minimal amount for time-off requests, Prevent app use. Each change on this page has an "Upgrading from Odoo 19" note. Test custom modules on a copy of your database before moving production.

How do I upgrade Time Off to Odoo 20?

Restore a copy of your database, run the Odoo 20 upgrade on the copy, fix any custom modules that extend Time Off, then test your main Time Off flows with real users before switching production. iVentureTeam runs Odoo upgrades end to end, including custom module migration and user testing.

Odoo services for this

More Odoo 20 release notes

Planning your Odoo 20 move

Want these Time Off changes in your database?

We upgrade Odoo databases with their customizations and data intact, and test every custom module against the new version before go-live.