Shifts to employees with variable work schedules.
auto_awesome What this module does
AI-generated from the code · Odoo 18.0Lets HR plan weekly employee shifts: create a planning for a week, assign shift templates to employees, and see each day's shift, with automatic detection of leaves and holidays.
This module adds a weekly shift planning tool on top of Employees. Users create a planning for a given year and week, then generate one shift record per employee who has the new "Shift planning" option ticked on their employee form.
- A planning has a status (New, Assignment, Planned) and buttons to generate shifts, regenerate them, or copy the planning to a new week through a wizard.
- Each employee's weekly shift gets a shift template (name, start and end time, timezone, colour, and the weekdays it covers). Changing the template rebuilds the daily lines, except days already marked as leave or holiday.
- Each daily line shows the date, start and end time, duration in hours and days, and a status: Assigned, On leave, Unassigned or Holiday. The status is recalculated automatically when leaves are created or deleted, and assigning a template to a day where the employee is on leave is blocked with an error.
- Plannings can be viewed as a form, a list, a calendar and a kanban board with day buttons; there are counters for shifts and for unresolved issues, and a "reviewed" tick to hide issues that have been checked.
- The company settings let you set the default working week (start and end day).
- Shift times also feed the resource calendar, so an employee's working intervals follow their planned shifts, and an employee currently in a shift is considered working.
Menus appear under Shifts: Planning, My shifts and Shifts (templates). A Shift Manager group and multi-company rules control access.
Depends on
Required by other modules
Menus it adds
Models and fields (9)
- res.company · extends an existing modelshift_end_day, shift_start_day
- hr.employee.base · extends an existing modelshift_planning, current_shift_id
- hr.shift.planning · new modelyear, state, end_date, days_data, shift_ids, company_id, start_date, week_number, shifts_count, issued_shift_ids, issued_shifts_count
- hr.shift.template · new modeltz (Timezone), name, color, active, end_time, company_id, start_time, day_of_week_end, day_of_week_start
- res.config.settings · extends an existing modelshift_end_day, shift_start_day
- shift.planning.wizard · new modelyear, week_number, generation_type, from_planning_id, copy_shift_details
- hr.shift.planning.line · new modelcolor, state, end_hour (End hour), end_time, reviewed, shift_id, company_id, day_number (Day), start_date (Date), start_hour (Start hour), start_time, employee_id, planning_id, resource_id, template_id, duration_days (Duration (Days)), duration_hours (Duration (Hours))
- hr.shift.planning.shift · new modelcolor, state, line_ids, reviewed, image_128, company_id, lines_data, employee_id, planning_id, template_id
- resource.calendar.leaves · extends an existing model
Text generated by AI (DeepSeek) from reading the Odoo 18.0 code on GitHub; it may contain mistakes, so check the code before deciding. The module is very large and only part of the code was read. View the code on GitHub
Availability by version
Reviewed: 2026-11-03Confirmation status: 4 confirmed, 5 with no information of 9 versions.
Sources · Odoo 15.0
Confirmed on 2026-11-03 in branch 15.0 of OCA/shift-planning.
terminal Installation and usage
OCA documentation · Odoo 18.0Configuration
Source · Odoo 18.0In order to configure and create shift plannings you'll need to be in the __Shift Manager__ security group.
Creating shifts
Go to Shifts > Shifts and create a new one. Define a name, a color (it will be used in the shifts assignment cards), a start and end time, a time zone and week days span.
Create as many as you need to.
Setting employees with variable shifts.
Go to Employees > Employees and in the tab Work information go to the Schedule section. There you can set the __Shift planning__ checkbox if this employee should have a shift generated automatically in the weekly plannings.
Setting the default work week
Go to Settings > Employees and in the Work organization section you can define the default working week for your company. By default it goes from Monday to Friday.
Usage
Source · Odoo 18.0After configuring the application we can start making plannings. To create a new one:
- Go to Shifts > Plannings and click on Create.
- Set the year and week number for the planning and click Save.
- Now click on Generate to pre-create the shifts assignments for your employees.
In a multi-company environment, a planning can be restricted to one company: only its employees are planned and only its users see it. The same goes for the shifts: a shift of a company can't be assigned to the employees of another one. Leave the company empty to share them with every company.
You can start assigning shifts click on the Shifts smart button where you'll go to a kanban view with a card per employee that you can drag into the corresponding shift. Once you do it, you'll the color of the week days in the card changes to the color of the shift assigned.
Now if you want to assign a different shift for a specific day of that week to that employee, you can do so clicking on __Shift details__. In the detailed kanban view drag the days to their corresponding shifts.
Going back to the general assignment screen you'll see the difference in the days list colors for the employee's card. Every day is clickable and it will pop up the shift details for that specific day.
Detecting employees issues
An employee could be on leave for one or serveral days of a planning week. In that case when an assignment is made for that employee the overlapping days will be flagged as unavailable and no shift will be assigned.
We can detect those issues from the general plannings view in Shift > Plannings.
To set the issue as reviewed we can click on the checkbox of the employee's assignment card. It won't be counted on the issues summary when is checked.
Generate planning from another one
We can generate plannings from other planning so we can copy the shifts assigments. To do so you can either click on __Generate planning__ from the general plannings view in Shifts > Plannings or click on __Copy to new planning__ from the origin planning form.
In both cases a wizard will open where you can choose to which week will the new planning correspond to and from which planning we'll be copying the assignations.
Regenerate shifts.
We can reset the assignments from the planning form clicking on Regenerate shifts.
My shifts
All the internal users can view their assigned shifts going to Shifts > My shifts.
No verified information in OCA: Installation.
Installation instructions, the distribution package, dependencies and configuration steps are not shown because they have not yet been verified in the module documentation for any version.
Data imported from GitHub: this sheet reflects the latest catalog review, not a live lookup. Always check the module documentation and staging before installing in production.