> ## Documentation Index
> Fetch the complete documentation index at: https://docs.ontime.hosai.app/llms.txt
> Use this file to discover all available pages before exploring further.

# Rosters

> Assign people to shifts week by week, copy and auto-generate weeks, resolve conflicts, and publish.

export const PermissionNote = ({perm}) => <Info>
    Requires the <code>{perm}</code> permission. Ask your administrator if an
    action described here is missing from your screen — see
    [Roles & permissions](/help/concepts/roles-and-permissions).
  </Info>;

A **roster** says who works which shift on which day. The week grid is the working surface; publishing is what makes it real.

**Shifts & rosters → Roster planner.**

## The week grid

<PermissionNote perm="roster:write" />

Employees down the side, seven days across the top, one cell per person per day. A cell is one of three states:

| State       | Meaning                                                          |
| ----------- | ---------------------------------------------------------------- |
| **Working** | Assigned to a named shift template.                              |
| **Off**     | A rest day.                                                      |
| **Leave**   | Covered by approved leave — set by the leave system, not by you. |

### Assigning

Two equivalent ways:

* **Click a cell** and pick a template from the popover.
* **Drag a template chip** from the legend onto a cell.

Both write the same draft assignment. Use whichever suits the shape of what you are doing — dragging is faster for filling a row with one shift, clicking is better for precision.

## Other views

<CardGroup cols={3}>
  <Card title="Week" icon="columns-3">
    The editable grid. This is where assignment happens.
  </Card>

  <Card title="Month" icon="calendar">
    A per-day staffing-count calendar. Useful for spotting thin weeks at a glance.
  </Card>

  <Card title="List" icon="list">
    A flat agenda, with unassigned employees grouped together.
  </Card>
</CardGroup>

<Note>
  **Month view is a staffing calendar, not an editable grid.** You cannot assign a cell from it — switch to the week to make changes.
</Note>

Team and location filter chips narrow every view.

## Conflicts and projection

The planner computes two things live as you assign:

### Conflicts

| Conflict        | Raised when                                                                                                |
| --------------- | ---------------------------------------------------------------------------------------------------------- |
| **Leave clash** | A cell is set to Working on a date the employee has approved leave.                                        |
| **Weekly off**  | A cell is set to Working on the employee's template weekly off, or on an organization or location holiday. |

Conflicts do not block you — sometimes working a rest day is exactly what you intend, and that is what earns comp-off. They exist so the choice is deliberate.

### Projection

An estimate of what the week will cost: projected overtime hours and projected payroll.

<Warning>
  **The projection is an estimate, not payroll.** Overtime is schedule-driven only — a planned week has no punches yet, so it counts scheduled work on rest days, not hours actually worked. The cost figure uses a flat hourly rate derived from annual compensation, not the real payroll engine. Use it for relative comparison between draft weeks, not as a budget number.
</Warning>

## Copy a week

**Copy week** takes an existing week's assignments and lays them into another week as a **draft**. This is the normal way to build next week — copy the last one, then adjust.

## Auto-generate

Drafts a whole week automatically.

<Steps>
  <Step title="Run the generator">
    It produces a **preview**, not a saved roster. Nothing is written yet.
  </Step>

  <Step title="Review the preview">
    Quality scores accompany it — fairness, coverage, preference fit, and a comparison to the previous week.
  </Step>

  <Step title="Apply it">
    Applying persists the preview as the week's **draft** cells. You can then edit them like any other draft before publishing.
  </Step>
</Steps>

<Note>
  **What the generator actually enforces:** holidays, approved leave, and weekly offs. The constraint lists and sliders shown alongside the inputs are representative of the intended model — they do not currently change the generated result, and the quality scores are heuristics rather than the output of an optimizer. Treat auto-generate as a fast first draft you then correct, not as a scheduler you can trust unattended.
</Note>

## Publishing

<PermissionNote perm="roster:publish" />

Assignments are drafts until the week is **published**. Publishing is a separate permission from editing, deliberately — building a draft roster and committing the organization to it are different decisions.

<Warning>
  Until a week is published, **employees and managers do not see it**, and the day engine has no shift to judge those days against. A carefully built but unpublished roster does nothing.
</Warning>

## Holidays on the grid

Days on the organization's holiday calendar are marked as holiday columns. Assigning work on one is allowed and raises a conflict flag — which is correct, because working a holiday is what earns comp-off when the resulting overtime is approved. See [Holidays](/help/scheduling/holidays).
