# Shifts, working hours and planned downtime (/docs/settings/shifts-and-calendar)

Planning, due dates and acknowledgement timers count against operating hours minus planned downtime. The Org
admin (Grace Ooi) and the Planner (Priya Menon) keep this up to date. Open **Settings > Shifts & schedule**.

<GuideStep
  title="Operating schedule"
  description="The 24-hour coverage bar, the shifts table and planned downtime."
  src="/guide/shifts-and-calendar/1.png"
  alt="Shifts and schedule page on desktop with the 24-hour coverage bar and the shifts table"
  width={1440}
  height={1000}
  callouts={[
    { x: 40, y: 25, caption: "24-hour coverage: each shift as a bar, with a summary of hours a day." },
    { x: 85, y: 40, caption: "Add shift." },
    { x: 50, y: 60, caption: "Shifts table: shift, applies to, factory, start, end, days, active, actions." },
  ]}
/>

## Add or edit a shift [#add-or-edit-a-shift]

<Steps>
<Step>

Choose **Add shift**, or **Edit shift** on a row.

</Step>
<Step>

Fill in **Shift**, **Applies to** (**Production** or **Office**), **Start (HH:MM)**, **End (HH:MM)**,
**Factory**, **Days** and **Break (min)**. A shift that ends before it starts runs past midnight.

</Step>
<Step>

Choose **Sign · Save**. A shift is a controlled record, so the app asks for a reason and your e-signature.

</Step>
</Steps>

## Switch days and shifts on or off [#switch-days-and-shifts-on-or-off]

In the table, tap a day to switch it on or off, and use **Activate** or **Deactivate** for the shift. These
quick changes are logged as `Shift days changed`, `Shift activated` and `Shift deactivated`. A shift must
keep at least one active day.

Day presets read **Mon–Fri**, **Mon–Sat**, **Every day**, **Sat–Sun**, **Sat only** and **Sun only**. The
summary line reads `Production shifts cover {hours} a day` and names days with no production shift.

## Planned downtime [#planned-downtime]

Under **Planned downtime** record holidays, maintenance windows and meetings taken out of operating hours.
Each entry gets its **Ref** (for example `PD-2026-037`) when you save it. It has a **Type** (**Holiday**, **Maintenance**, **Meeting / training**), **Start** and
**End** dates, an optional **Machine** or **Job order**, and a **Reason**. It is a controlled record.

## If the system refuses [#if-the-system-refuses]

Every message is in [Settings refusals](/docs/settings/refusals#shifts).

| Message | What to do |
|---|---|
| `Start must be a time like 08:00.` | Enter the start as hours and minutes. |
| `End must be a time like 17:30.` | Enter the end as hours and minutes. |
| `A shift must keep at least one active day.` | Leave at least one day on. |
| `This is a controlled record. Enter the reason for the change.` | Type a reason of at least 4 characters. |
| `Shift {name} already exists.` | Choose a different shift name. |

<NextSteps>

<NextStep href="/docs/settings/organization" title="Organization profile and standards" description="Operating hours and factories." />

<NextStep href="/docs/settings/refusals" title="Settings refusals" description="Every message and the fix." />

<NextStep href="/docs/settings/master-data" title="Master data" description="Other reference tables." />

</NextSteps>
