How does MS Project leveling decide which task to put first?

Which task to put first?

When solving overallocation, MS Project chooses which task to put first and uses a certain logic (algorithm) to achieve this. For each task in the schedule, a score value is calculated based on all factors that have an impact on the leveling process:
  • Tasks are scheduled in the order of the calculated value. Tasks with a lower score are pushed out further in time
  • Resource leveling only splits and delays (!) tasks
  • Tasks will never be scheduled to start earlier than initially planned, even if possible. It is even so, that leveling twice without clearing leveling will result in introducing more delay.

The leveling 'score' for each task is calculated based on:

  • Task ID: this is the order in the schedule from top to bottom. Tasks with a lower ID get a better score (very little impact on the score though).
  • Duration: tasks with a longer duration get a higher score.
  • Constraints and Dependencies: they have a negative impact on the score, as MS Project will honour constraints and dependencies (if set in options > schedule > task will always honor their constraint dates).
  • Priorities: have a big impact on the score. A higher priority has a higher score. (Priorities are only a 'hint' for MS Project, and are NOT always honoured). Priorities can be set in Task information > General > Priority. Of course, this field can also be added as a column to the task views.
Note that you do not need to set priorities for every individual task; the network logic will set the correct order as well. How does MS Project leveling decide which task to put first?1

How confident are you?

How confident are you in using the resource leveling functionality in MS Project? Share it in the comments below.
Back to blog