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

# Assign a work schedule

> Assign a schedule to the whole workspace, a group or one person over a date range, and see how person beats group beats workspace.

Assigning is what makes a schedule real. Until a schedule is assigned to someone,
it changes nothing.

Assign schedules in the **Assignments** panel on **Settings → Schedules**.

## What an assignment is

An assignment binds one schedule to one target over a date range.

| Part            | Options                                                 |
| --------------- | ------------------------------------------------------- |
| Schedule        | Any active schedule.                                    |
| Applies to      | One person, a group, or everyone in the workspace.      |
| Effective start | The first date the schedule applies.                    |
| Effective end   | The last date, or no end at all.                        |
| Note            | Optional. Free text, such as `covering parental leave`. |

## The precedence rule

Only one schedule can apply to a person on a date. The most specific assignment
wins.

```
person ▷ group ▷ workspace
```

* A person assignment beats their group's.
* A group assignment beats the workspace default.
* A person with no assignment of their own falls back to their group, and then
  to the workspace.

<Note>
  A group assignment uses a person's **primary** group. A person can belong to
  several groups, but their working week has to be one unambiguous thing. See
  [/team/groups](/team/groups).
</Note>

## How to assign a schedule

<Steps>
  <Step title="Open the Assignments panel">
    Go to **Settings → Schedules** and scroll to **Assignments**.
  </Step>

  <Step title="Click Assign">
    The **Assign a schedule** dialog opens.
  </Step>

  <Step title="Pick the schedule">
    **Schedule** lists your active schedules. Deleted ones are not offered.
  </Step>

  <Step title="Choose who it applies to">
    **Applies to** offers **One person**, **A group**, or
    **Everyone (workspace)**. Picking a person or a group reveals the matching
    picker.
  </Step>

  <Step title="Set the effective dates">
    Set **Start**. Leave **No end date – runs forever** ticked for an ongoing
    schedule, or untick it and set **End** for a temporary one.
  </Step>

  <Step title="Deal with any clash">
    If the target already has a schedule covering those dates, the dialog shows
    it and asks **End the current schedule on**. The new schedule takes over the
    next day.
  </Step>

  <Step title="Check the impact and save">
    The dialog reports "This affects N people." Add an optional **Note**, then
    click **Assign schedule**.
  </Step>
</Steps>

## Replacing an existing schedule

You cannot have two assignments covering the same date for the same target. When
the dialog spots a clash it shows a panel like:

> Already on **Standard week** (Always).
> **End the current schedule on** – *The new schedule takes over the next day.*

The date defaults to the day before your new start date. Change it if you want a
different cutover. The old assignment gets that end date, and the new one takes
over.

If you try to save an overlap without ending the old one, you see:

> This target already has a schedule covering those dates. End or remove that one
> first.

## The Assignments table

| Column         | What it shows                                                     |
| -------------- | ----------------------------------------------------------------- |
| **Schedule**   | The schedule name.                                                |
| **Applies to** | `Everyone`, the group name, or the person's name.                 |
| **Level**      | A badge – **Workspace**, **Group** or **Person**.                 |
| **Effective**  | `Always`, `Until {date}`, `{start} → {end}`, or `{start} → open`. |

Each row has a delete button. Removing an assignment asks you to confirm:

> The members it covers fall back to their next-most-specific schedule (group or
> workspace default). This does not delete the schedule itself.

When there are no assignments at all the panel reads *"No assignments yet.
Everyone is on the workspace default schedule."*

## Example

Northwind Studio is 12 people.

<Steps>
  <Step title="Set the workspace default">
    Tom Whitfield assigns `Standard week` to **Everyone (workspace)** with no end
    date. The row reads **Always**, level **Workspace**. Everyone now has 40
    expected hours a week.
  </Step>

  <Step title="Give the support group its rota">
    He assigns `Support rota` to the group **Support**, starting 1 September, no
    end date. Anyone whose primary group is Support now follows the rota instead.
  </Step>

  <Step title="Put Ana on part-time">
    Ana Ferreira is a contractor working Monday, Wednesday and Friday. Tom
    assigns `Part-time Mon/Wed/Fri` to **Ana Ferreira**, starting 1 September.
    The dialog reports "This affects 1 person."
  </Step>

  <Step title="Cover a temporary change">
    Sarah Lin drops to four days for three months. Tom assigns
    `Four-day week` to **Sarah Lin** from 1 October to 31 December, with the note
    `agreed short hours`. On 1 January she falls back to the workspace default
    automatically, because the assignment ends.
  </Step>
</Steps>

## Assigning from a person's record

You can also do this from one person's page. Open **Settings → Team members**,
pick the person, then the **Schedule** tab. It shows two sections:

* **Their own schedule** – assignments aimed directly at this person. You can add
  and remove them here.
* **Inherited** – what they fall back to, from their groups and then the
  workspace default. Read-only, changed on **Settings → Schedules**.

This is the fastest way to answer "what does this person actually follow?" See
[/team/member-record](/team/member-record).

## What happens next

* Their expected hours change from the effective start date.
* **My Schedule** shows the new pattern for the next 14 days.
* Timesheets compare tracked hours against the new expectation.
* The Planner shades their days off from the new pattern.
* Time-off requests start counting against the new working days.

## Permissions

Assigning and removing an assignment needs `schedule.manage` – Owner and Admin by
default. The person picker uses the full workspace roster, so an admin can assign
a schedule to themselves.

Reading another person's resolved schedule needs `schedule.manage` or
`time.viewOthers`, and the person must be inside your supervision scope. Holding
`schedule.manage` does not bypass scope. See
[/concepts/supervision-scope](/concepts/supervision-scope).

## Common questions

<AccordionGroup>
  <Accordion title="What does 'Always' mean in the Effective column?">
    The assignment has no meaningful start date and no end date, so it covers
    every date. This is what the workspace default looks like.
  </Accordion>

  <Accordion title="Can I schedule a change in advance?">
    Yes. Set the **Start** to a future date. The old schedule keeps applying
    until the day before.
  </Accordion>

  <Accordion title="What happens when a temporary assignment ends?">
    The person falls back to their next-most-specific assignment – their group's,
    then the workspace default. Nothing else is needed.
  </Accordion>

  <Accordion title="Someone is in two groups. Which group's schedule applies?">
    Their primary group's. Group schedules only ever match the primary group, so
    a working week is never ambiguous.
  </Accordion>

  <Accordion title="Can a client-portal contact be given a schedule?">
    No. Schedules apply to workspace members. Portal contacts are never counted.
  </Accordion>
</AccordionGroup>

## Troubleshooting

| Message                                                                                  | What it means                                                                                                 |
| ---------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------- |
| "This target already has a schedule covering those dates. End or remove that one first." | An overlap at the same level. Use the **End the current schedule on** field.                                  |
| "The current schedule has to end before the new one starts."                             | Your cutover date is on or after the new start date. Move it earlier.                                         |
| "That schedule has been deleted. Pick an active one."                                    | The schedule is in Trash. Restore it or pick another.                                                         |
| "A workspace-wide schedule applies to everyone, so it takes no group or person."         | Switch **Applies to** back to a person or a group.                                                            |
| Someone's hours did not change                                                           | Check the effective start date, and check whether a more specific assignment is outranking the one you added. |

## Related guides

<CardGroup cols={2}>
  <Card title="Create a schedule" href="/schedules/create-a-schedule">
    Build the pattern first.
  </Card>

  <Card title="Schedules overview" href="/schedules/overview">
    How a day is resolved for one person.
  </Card>

  <Card title="Groups" href="/team/groups">
    Primary groups and why they matter here.
  </Card>

  <Card title="Member record" href="/team/member-record">
    Assign a schedule from a person's page.
  </Card>

  <Card title="Schedule permissions" href="/schedules/schedule-permissions">
    Who can see and change schedules.
  </Card>
</CardGroup>
