Skip to content

How Microsoft Project Schedules Tasks

Microsoft Project does more than store task dates. In automatic scheduling, it calculates dates from the project direction, task information, links, constraints, calendars, and resource assignments. This page explains the calculation model documented for Project Online Desktop Client and Project Professional or Project Standard 2016, 2019, 2021, and 2024.1 For the introductory task workflow, see Create and Edit Tasks.

Project schedules forward from a start date or backward from a finish date. Start-date scheduling is usually the most flexible choice; see Set the project start or finish date for the project-level setting.

You can schedule backward from a required finish date when the end date is fixed or the start is unknown. In that mode, automatically scheduled tasks use As Late As Possible (ALAP) by default. For automatically scheduled tasks, changing a project from start-date to finish-date scheduling removes existing leveling delays and splits. If you use automatic leveling in finish-date mode, Project places a leveling delay after the affected task rather than before it. Manually scheduled tasks are not recalculated by this setting in the same way.

For an automatically scheduled task, Project combines several inputs:

  • Duration — how long the work is expected to take.
  • Dependencies — relationships that limit when a successor can start or finish.
  • Constraints — rules that set an earliest, latest, or fixed start or finish.
  • Calendars — working and non-working time for the project, task, and assigned resources.
  • Assignments — the resources, work, units, availability, and work patterns used to perform the task.

Changing one input can move downstream tasks. A date that looks surprising is often the visible result of another task’s link, a non-working period, a constraint, or an assignment calculation.

Project Plan 365 is a separate planning tool with its own scheduling engine. Its scheduling-engine overview explains how that product uses task relationships, calendars, constraints, and resources to calculate dates, slack, project duration, and critical path.

Task links describe timing relationships between a predecessor and a successor. The default link is finish-to-start: the successor waits for the predecessor to finish. For the link types and editing steps, see Task Links and Dependency Editing; Task Dependencies, Lead, and Lag explains timing offsets and cross-project links.

Lead and lag can adjust the separation between linked tasks. The critical path is the sequence of tasks that determines the project finish.

A constraint restricts automatic scheduling. Flexible constraints such as As Soon As Possible (ASAP) and As Late As Possible (ALAP) give Project more flexibility when calculating dates. Semi-flexible constraints require an earliest or latest date, while inflexible constraints such as Must Start On or Must Finish On anchor a task to a date. Entering a task’s Start or Finish date can also add a constraint; see Create and Edit Tasks for that task-entry distinction.

Use a constraint when a date is a scheduling rule. Use a deadline when a date is a target that should be reported if missed. A deadline normally does not move the task, although it can change total slack and can affect the finish of a task using an ALAP constraint.

For automatically scheduled tasks, the task type determines which value Project recalculates when you edit duration, work, or assignment units.

Task typeWhat stays fixed when an input changes
Fixed unitsAssignment units stay fixed; Project recalculates duration or work as needed.
Fixed workWork stays fixed; Project recalculates duration or units.
Fixed durationDuration stays fixed; Project recalculates work or units.

Summary tasks are always fixed-duration because their dates are calculated from their subtasks. Task type is not a substitute for outlining or constraints: indent tasks to create hierarchy, and set a constraint when you need a date rule.

After a work resource is assigned, Project uses this relationship by default for a Fixed Units task:

Duration = Work / Units

Task type determines which part of this relationship Project solves for. Effort-driven scheduling keeps the task’s total work constant when resources are added or removed and redistributes that work among the assignments. On a fixed-unit or fixed-work task, adding resources can shorten duration; on a fixed-duration task, it can reduce each resource’s units instead. The setting is normally off for new tasks, and fixed-work tasks are always effort-driven.

Scheduling modes, calendars, resources, and slack

Section titled “Scheduling modes, calendars, resources, and slack”

Automatic scheduling recalculates dates from schedule inputs; manually scheduled tasks generally preserve entered values. Manual and Automatic Scheduling covers the difference. Project, task, and resource calendars define available working time, while assignments contribute work, units, and availability; see Calendars in Microsoft Project and Resources in Microsoft Project for those details.

Slack summarizes flexibility in the resulting schedule: total slack is measured against the project finish, while free slack is measured against delay to a successor. For the practical procedures that affect dates, follow the linked topic guides above before editing calculated dates directly.

  1. Project desktop scheduling model and supported editions