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

# Plan a project schedule

> Reschedule project tasks, set owners and dependencies, review Smart Schedule proposals, and save changes to your PSA or MSPortal

The **Schedule workspace** lets MSP staff plan one project's tasks as a draft. You can move and resize tasks, assign people, link dependent work, and ask **Smart Schedule** for a proposal. Nothing changes in MSPortal or your PSA until you select **Save schedule**.

**Audience:** MSP staff with project write permission. Company users cannot open the workspace; they read shared dates in [Read a project schedule](/user-guides/projects/read-project-schedule).

## Before you start

| Project source | What saving does |
| - | - |
| ConnectWise, Autotask, Halo | Task start dates, end dates and assigned people sync to the PSA. Anchors, dependencies, durations, effort, skills and the working calendar stay in MSPortal. |
| Native MSPortal project | Everything saves in MSPortal. |
| Any other source | The workspace opens read-only and shows **This project provider does not support schedule writes.** |

Saving also requires an active MSPortal subscription. Completed tasks appear dimmed and cannot be moved or edited.

## Open the workspace

<Steps>
  <Step title="Open a schedule">
    Go to **Projects > Schedule** to plan any open project in the selected company scope, or open a project and select its **Schedule** tab to plan only that project.
  </Step>

  <Step title="Select Plan schedule">
    **Plan schedule** appears above the calendar. From an individual project, the **Project** selector is locked to that project. From **Projects > Schedule**, choose the project in **Project**.
  </Step>

  <Step title="Or start from a task">
    In either calendar, open a task's item menu and select **Reschedule**. The workspace opens on that task's project, jumps to its start date, and selects the task for editing.
  </Step>
</Steps>

The line under the toolbar tells you where changes go. It reads **Native project · saves in MSPortal** for native projects, or **Dates and owners sync to** your PSA **when you save. Scheduling rules stay in MSPortal.** for connected projects. The status beside it shows **No unsaved changes** or the number of task changes in your draft.

<Frame caption="Calendar view of a Demo project in the Schedule workspace.">
  <img src="https://mintcdn.com/msportal/rYkMNeXeoEpsRB-K/images/product/schedule-workspace-fixed.png?fit=max&auto=format&n=rYkMNeXeoEpsRB-K&q=85&s=fa465d51635ddda8d7b9f95c1e1e346a" alt="Project tasks arranged across the selected week in the Schedule workspace" width="2880" height="1920" data-path="images/product/schedule-workspace-fixed.png" />
</Frame>

## Choose a view

Select **Calendar**, **Timeline** or **Dependencies** above the schedule.

| View | What it shows |
| - | - |
| **Calendar** | Seven day columns with a card for each dated task. Non-working days are shaded. |
| **Timeline** | One row per task, with filled cells for the days it spans across the same seven days. |
| **Dependencies** | Task boxes arranged left to right by dependency order, with arrows labeled by link type code, such as FS, and any lead or lag. |

Use **Previous week** and **Next week**, or pick a date in the date field, to change the first day shown. **Find work…** filters both the unscheduled list and the calendar cards by title.

Task cards show the title, assigned person and remaining hours. An anchor icon and amber accent mark anchored tasks. A teal accent marks tasks on the critical path, where any delay pushes out the end of the linked work.

<Frame caption="Timeline view of dated project tasks.">
  <img src="https://mintcdn.com/msportal/rYkMNeXeoEpsRB-K/images/product/schedule-timeline.png?fit=max&auto=format&n=rYkMNeXeoEpsRB-K&q=85&s=9fe6036a195a483e511673aaf4dd677f" alt="Project task rows with bars spanning their scheduled days" width="2880" height="1920" data-path="images/product/schedule-timeline.png" />
</Frame>

## Move and edit tasks

The **Unscheduled work** panel lists open tasks without both dates, with a count beside its title. It reads **All open work has dates.** when nothing is left.

* **Move a task.** Drag its card onto a day in Calendar, or onto a day cell in Timeline. The task keeps its duration in working days.
* **Resize a task.** Drag the handle on the card's last day to a later day to change its end date.
* **Schedule unscheduled work.** Drag a card from **Unscheduled work** onto its start day.
* **Edit a task.** Select its card, row or box. You can also right-click a card and select **Reschedule**.

Anchored and completed tasks cannot be dragged. Drag and selection pause while a Smart Schedule proposal is open.

### Use the task editor

The task editor opens beside the schedule. Date fields wait for **Apply to draft**; the other fields update the draft as you change them.

| Field | Use |
| - | - |
| **Anchor** checkbox | Keeps the task's current dates fixed. The task needs dates first. Clear it before changing those dates. Smart Schedule plans other work around anchors. |
| **Start date**, **End date** | Set new dates, then select **Apply to draft**. |
| **Move by days** | Shift the entered dates forward or back, up to 365 days. **Use working days** skips non-working days and holidays. |
| **Also move** | Choose **Only this task**, **All future tasks in this project** or **Dependent tasks**. |
| **Assigned person** | Pick an assignable person or **Unassigned**. |
| **Duration (working days)** | Sets how many working days Smart Schedule gives the task. |
| **Remaining work (hours)** | Sets the effort counted against daily capacity. It starts as budget hours minus actual hours. |
| **Required skills (comma separated)** | Limits Smart Schedule to people with every listed skill. |
| **Skills for this person (comma separated)** | Records skills for the assigned person. Appears when the task has an owner. |

If you change a date field without applying it, **Save schedule** and **Smart Schedule** stay disabled. Selecting another task shows **Apply to draft** as a reminder.

<Frame caption="A completed task with its date controls disabled.">
  <img src="https://mintcdn.com/msportal/rYkMNeXeoEpsRB-K/images/product/schedule-task-editor.png?fit=max&auto=format&n=rYkMNeXeoEpsRB-K&q=85&s=dca2817362c3ef54ac26c93a5d5688fe" alt="Selected completed project task with dates, assigned person and scheduling fields" width="2880" height="1920" data-path="images/product/schedule-task-editor.png" />
</Frame>

### Link dependencies

Dependencies live on the later task. Select that task, then choose a **Predecessor**, a **Type** and a **Lead / lag (working days)** value, and select **Add dependency**.

| Type | Meaning |
| - | - |
| **Finish → start** | This task starts no earlier than the working day after the predecessor finishes. |
| **Start → start** | This task starts no earlier than the predecessor's start. |
| **Finish → finish** | This task finishes no earlier than the predecessor's finish. |
| **Start → finish** | This task finishes no earlier than the predecessor's start. |

A positive lag adds working days and a negative value creates a lead. Use the remove control beside a listed dependency to delete it. MSPortal rejects a link that creates a loop with **These dependencies form a cycle. Remove a link before scheduling.**

<Frame caption="Dependencies view; this Demo project has no links configured.">
  <img src="https://mintcdn.com/msportal/rYkMNeXeoEpsRB-K/images/product/schedule-dependencies.png?fit=max&auto=format&n=rYkMNeXeoEpsRB-K&q=85&s=ca45b00b3307ed17855c0d61a4c2625e" alt="Task boxes in the Dependencies view beside the selected task editor" width="2880" height="1920" data-path="images/product/schedule-dependencies.png" />
</Frame>

## Use Smart Schedule

Smart Schedule proposes dates, and owners where needed, for open tasks that are not anchored. It uses durations, remaining hours, dependencies, anchors, required skills and daily capacity.

<Steps>
  <Step title="Check the planning settings">
    Expand **Working calendar and skills** below the schedule. Set **Schedule from**, **Daily capacity (hours per person)**, **Holidays / non-working dates (YYYY-MM-DD, comma separated)** and the working weekday checkboxes. New plans start with Monday to Friday and 8 hours per day.
  </Step>

  <Step title="Choose owner handling">
    Unassigned tasks always receive a proposed owner. Select **Recommend different owners to balance workload** to let Smart Schedule reassign tasks that already have owners.
  </Step>

  <Step title="Generate the proposal">
    Select **Smart Schedule**. A panel lists each changed task with its old and new dates and owner, headed by the number of tasks that will change.
  </Step>

  <Step title="Accept or reject it">
    Select **Accept proposal** to copy the changes into your draft, or **Reject proposal** to drop them. Accepting does not save. Review the result, then select **Save schedule**.
  </Step>
</Steps>

If the plan already fits, the workspace shows **The schedule already fits these constraints.** instead of a proposal.

Capacity counts this project's work, the same people's dated tasks in other open projects on the same PSA connection in the selected company scope, and accessible calendar appointments and busy blocks for staff linked to portal users. Unlinked calendars and unscheduled service work are not counted. Smart Schedule plans whole working days within one year of **Schedule from**; it does not book timed appointments.

**Smart Schedule** stays disabled until assignable people and calendar availability load. If either fails, the settings area shows **Calendar availability or assignable people could not be loaded. Smart Schedule is unavailable until these reads succeed.**

| Message | What to do |
| - | - |
| **No available person matches the required skills. Check assignments and skills.** | Add the skill to a person or remove it from the task. |
| **There is not enough capacity before an anchor. Adjust the work, people, or project start.** | Move **Schedule from** earlier, reduce effort, or unpin the anchor. |
| **No available capacity was found within the scheduling horizon.** | Raise daily capacity, add people, or reduce remaining hours. |
| **A predecessor needs dates before this work can be scheduled.** | Give the predecessor dates or anchor it. |
| **The proposal conflicts with a dependency or resource capacity. Adjust the constraints.** | Review dependencies and capacity, then try again. |

## Review schedule checks

The **Schedule checks** count sits beside **Working calendar and skills**. Expand the section to see each check, and select one to open its task.

| Check | Blocks saving |
| - | - |
| **Fixed anchor conflict** | Yes |
| **Dependency dates conflict** | Yes |
| **Daily capacity exceeded** | No |
| **Past the project deadline** | No |
| **Needs scheduling** | No |
| **Falls outside working days** | No |
| **Required skills do not match** | No |

Resolve the two blocking checks before you save. The other checks are warnings you can save with.

## Save your plan

For a ConnectWise, Autotask or Halo project, the sequence is **Smart Schedule → Accept proposal → Save schedule**. Saving updates the actual project tickets or tasks in your PSA with the changed start dates, end dates and assigned people. Generating or accepting a proposal alone does not write to the PSA.

These are date-based task schedules. Saving does not create timed technician appointments or dispatch-board bookings.

<Steps>
  <Step title="Save">
    Select **Save schedule**. The button reads **Saving and syncing…** while MSPortal writes each changed task. You cannot close the workspace during a save.
  </Step>

  <Step title="Confirm the result">
    **Schedule saved** confirms success. The workspace then reloads the latest project data before you can edit again.
  </Step>

  <Step title="Recover from a failure">
    **The schedule could not be saved. Your draft is retained.** reports a failed save. Review the reloaded task dates and owners before retrying: an upstream date change can succeed before a later owner update fails. A message such as **3 tasks saved before a failure. Your remaining changes are retained.** means earlier tasks already synced. After the reload, your unsaved changes return on top of the latest data. Review them and save again.
  </Step>
</Steps>

Only one save can run for a project at a time. If another planner saved the project after you opened it, your save fails without writing. After the reload, your changes return on top of their saved schedule, so review them and save again.

## Protect, discard, print and export

**Discard changes** resets the draft to the last loaded schedule. Closing the workspace, switching **Project**, or using the browser Back button with unsaved changes asks **Discard this schedule draft?** Select **Keep editing** to stay, or **Discard changes** to leave. Closing the browser tab shows your browser's own leave warning.

**Print / save PDF** opens your browser's print dialog with a landscape table of tasks, start dates, end dates and assigned people. **Export XML** downloads `project-schedule.xml` with the task dates, owners and planning rules. Both use the tasks currently shown, including an open proposal.

## FAQs

<AccordionGroup>
  <Accordion title="Why is Plan schedule missing?">
    The button requires an MSP staff account with project write permission. Company users and read-only roles do not see it.
  </Accordion>

  <Accordion title="Do anchors, dependencies and skills appear in my PSA?">
    No. They are MSPortal scheduling rules. Only task dates and assigned people sync to ConnectWise, Autotask or Halo.
  </Accordion>

  <Accordion title="Why is a project missing from the Project list?">
    The list shows open projects in the current company scope. Change the company selector before opening the workspace. Closed projects and projects outside the scope do not load, and the workspace shows **No projects are available in this company scope.** if none match.
  </Accordion>

  <Accordion title="Why is Save schedule disabled?">
    Check for unapplied date fields, an open Smart Schedule proposal, or a **Fixed anchor conflict** or **Dependency dates conflict** check. The button also stays disabled when the draft has no changes.
  </Accordion>

  <Accordion title="Can Smart Schedule book timed appointments?">
    No. It assigns whole working days to tasks. Use your PSA or the Calendar module for timed bookings.
  </Accordion>
</AccordionGroup>

<CardGroup cols={2}>
  <Card title="Project calendar" icon="calendar" href="/user-guides/projects/calendar">Navigate Schedule and reschedule projects, phases and milestones.</Card>
  <Card title="Read a project schedule" icon="calendar-days" href="/user-guides/projects/read-project-schedule">Interpret dated items and their details.</Card>
</CardGroup>
