Shifts, rosters and working calendars

Define the working week, build shifts with breaks, set up fixed or rotating rosters, assign people, and check the schedule.

Required permission: hr.configure, hr.attendance.manage

Before you begin

  • hr.configure creates calendars, shifts and rosters. hr.attendance.manage assigns people to them.
  • Leave pricing uses the working calendar. Attendance reads a person's schedule in this order: roster, then fixed shift, then working calendar. Leave and holidays are applied on top.

Steps

Create a working calendar

  1. Open Employees > Configuration > Time & leave > Working calendars and select New.
  2. Enter a Code (for example STD40), Name, Timezone (an IANA name such as Asia/Dubai) and Hours per week (0.01 to 168).
  3. In the Working schedule, tick the working weekdays. Hours per working day is hours per week divided by ticked days, so 40 hours over five days is 8 hours.
  4. Select Save. Add holidays on Holidays (see Set up leave types, accrual plans and holidays).

Create a shift

  1. Open Shifts and select New shift. Enter the Code, Name, Starts and Ends. If it ends at or before the start, it crosses midnight; Overnight is worked out for you.
  2. Set Grace in and Grace out in minutes, and the overtime rule: choose an Overtime policy, or use the Simple threshold (overtime after a number of hours; 0 means the shift's scheduled hours).
  3. Tick Overtime needs approval if overtime must be decided before it is paid.
  4. Add Breaks. Choose a Fixed break (from and to times) or a Window break (an allowance in minutes somewhere inside the window). Tick Paid break and Deducted automatically as needed.
  5. Select Save.

Assign people to a shift

  1. Open the shift and select Assign employee. Choose the employee, From and optionally Until, then assign. A new assignment ends the earlier open one the day before.

Create a roster

  1. Open Rosters and select New roster. Choose Kind: Weekly (seven days, Monday first) or Rotating.
  2. For a rotating roster, enter Days in the cycle (2 to 366) and Day 1 falls on.
  3. Under Days of the cycle, choose a shift for each day, or leave it blank for a rest day. The number of entries must equal the cycle length.
  4. Select Save, then Assign employee with From, Until and Phase offset (days).
  5. Select Show schedule for an employee and a range of up to 62 days to check what attendance will expect.

Test a shift

  1. On a shift, use the Sample day calculator: clock in and out, the kind of day, regular hours already worked this week. It saves nothing.

What happens next

  • Attendance days are built from the person's schedule. The scheduled hours of a shift are the paid length: a 09:00 to 18:00 shift with an unpaid hour of lunch is 8.00.
  • A rotating roster picks the day with (date - anchor + phase offset) modulo cycle length. With a 3-day cycle DAY, NIGHT, rest anchored on 1 Oct 2026 and an offset of 1, 1 Oct is NIGHT, 2 Oct rest, 3 Oct DAY, 4 Oct NIGHT.
  • A night shift 22:00 to 06:00 with a 02:00 to 03:00 unpaid window break of 30 minutes has 7.50 scheduled hours.

Good to know

  • Codes are unique: 'A shift with that code exists.' 'A roster with that code exists.' A code is up to 30 characters.
  • 'The shift ends before it starts, so it crosses midnight.' appears if you force a contradicting overnight setting.
  • 'A break allowance cannot be longer than its window.'
  • 'That person already has a roster over those dates.'
  • 'Give exactly 3 days: a shift for each, or blank for a rest day.'
  • A calendar in use cannot be switched off or have its code, hours or days changed: 'This master is used by an active position or current/future assignment.' and 'Create a new master for structural changes once this master has active assignments or positions.'
  • The time zone and hours are checked, but error text on a calendar reads 'Use the supported fields and valid values for this master.'
  • A calendar cannot hold different hours for different weekdays or a half-day weekday. Only holidays can be half days.
  • Archived shifts cannot be assigned.
  • Overtime policies and Import batches have their own menu entries and are not described here.