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

# The Duty Plan lifecycle

> The stages every PlanMyRounds Duty Plan moves through, from setting up doctors and shifts to publishing and handling changes afterward.

Every Duty Plan, whether you build it by hand or Auto Duty builds it for you, moves through the same stages. This page is the map — use it to see where a specific question fits before you go looking for the answer.

## The stages

<Steps>
  <Step title="Configure doctors">
    Add doctors and keep their [profiles](/docs/team/doctor-profiles) current — department, seniority, hour limits, excluded shift types. The engine reads this on every generation.
  </Step>

  <Step title="Configure shifts">
    Define [Shift Requirements](/docs/shifts/overview) (individual shifts) and, optionally, combine them into a reusable [Shift Schedule](/docs/shifts/shift-schedules).
  </Step>

  <Step title="Configure requirements and rules">
    Set staffing requirements per shift and the work, rest, and fairness rules the engine must respect. See [Roster constraints](/docs/rosters/roster-constraints).
  </Step>

  <Step title="Create a Duty Plan">
    Open the [creation wizard](/docs/rosters/creating-a-roster) and set the dates, shifts, team, and rules for this period. Or let [Auto Duty](/docs/auto-duty-planning/overview) do this on a schedule.
  </Step>

  <Step title="Collect availability and leave">
    Doctors submit [availability, leave, and shifts to avoid](/docs/leave/overview) for the period. Only **Approved** leave is treated as a hard block.
  </Step>

  <Step title="Generate">
    The engine solves the roster against the current doctors, shifts, and rules. This is when [approved leave, excluded shifts, and every constraint](/docs/scheduling-engine) are actually applied — a **Draft** roster comes out, or a **Failed** status if no valid schedule exists.
  </Step>

  <Step title="Review">
    Check coverage, workload, and flagged conflicts on the Draft before anyone else sees it.
  </Step>

  <Step title="Publish">
    The roster becomes visible to your team, with a shareable public link. See [What happens after publishing](/docs/rosters/publishing-a-roster).
  </Step>

  <Step title="Edit, swap, or handle changes">
    Real life happens after publish: [manual edits](/docs/rosters/editing-a-published-roster) for admin exceptions, [duty swaps](/docs/swaps/overview) for doctor-to-doctor changes.
  </Step>
</Steps>

## What can still change, and when

The engine reads doctor profiles, shift definitions, and approved leave **fresh on every generation** — it doesn't watch for changes in between. That has one important consequence:

<Warning>
  Editing a doctor profile, a Shift Requirement, a Shift Schedule, or approving leave does not change a Duty Plan that has **already been generated**. The edit is picked up the next time that Duty Plan is generated or regenerated (for example, via [Retry](/docs/rosters/retrying-a-failed-roster)) — not retroactively.
</Warning>

For example: if you approve a leave request *after* a roster is already published, the roster is not automatically updated. You'll need to [edit it manually](/docs/rosters/editing-a-published-roster) or regenerate. See [Approving leave](/docs/leave/approval-workflow#approve-a-request).

If you're not sure whether a specific change reached a specific Duty Plan, open that Duty Plan and check it directly, rather than assuming.

## Next steps

<CardGroup cols={2}>
  <Card title="Create your first Duty Plan" icon="wand-magic-sparkles" href="/docs/rosters/creating-a-roster">
    Walk through the four-step wizard.
  </Card>

  <Card title="Automate it" icon="robot" href="/docs/auto-duty-planning/overview">
    Let Auto Duty run this lifecycle on a repeating schedule.
  </Card>

  <Card title="PlanMyRounds terminology" icon="book" href="/docs/terminology">
    Look up any term used on this page.
  </Card>

  <Card title="Duty Plan generation failed" icon="rotate" href="/docs/troubleshooting/duty-plan-generation-failed">
    What to check when the Generate step doesn't produce a valid schedule.
  </Card>
</CardGroup>
