A construction project manager's desk: a laptop showing an MSP-style Gantt chart with the critical path highlighted in red, a printed programme to the side with hand-drawn open-end circles and constraint flags, hard hat and partly unrolled blueprint nearby
Educational Guide 14 min read

MS Project Schedule Check: The Complete Guide to Quality Checking in Microsoft Project

Step-by-step MS Project schedule quality checklist: how to check open ends, constraints, float, critical path, and run DCMA 14-Point in Microsoft Project.

You’ve received a contractor’s schedule in MPP format, opened it in Microsoft Project, and you’re looking at 800 tasks in Gantt view. The critical path is highlighted in red, but is it real? Are the dates logic-driven or constraint-driven? And why are half the tasks marked “Manually Scheduled”?

MS Project is widely used on construction projects that don’t run Primavera P6. It’s also the tool most likely to produce misleading schedules if you don’t know what to check. Manually-scheduled tasks that ignore logic, summary tasks with their own predecessors, and constraints that override the network all create the appearance of a schedule without the substance. For the broader discipline of construction schedule analysis, these tool-specific checks are the practical implementation.

This guide provides a complete, step-by-step checklist for checking schedule quality in Microsoft Project using only built-in features. No paid add-ins required. The methodology mirrors what you would run in Primavera P6, adapted for MSP’s specific risks: manually-scheduled tasks, summary-task logic, and a different constraint default.

What we found: Three of the DCMA 14-Point checks map directly onto MS Project’s structural quality risks: missing logic (Check 1, capped at 5% of activities), relationship types (Check 4, target ≥90% Finish-to-Start), and hard constraints (Check 5, capped at 5%). On an MSP schedule, manually-scheduled tasks compound Check 1 by carrying logic links that don’t function; summary-task logic inflates the critical path beyond what Check 4 contemplates; and hard constraints land more easily because MSP allows them on any task. The DCMA thresholds aren’t gold-plated for MSP: they’re the floor.

What it means: A schedule that looks complete in Gantt view can still fail Checks 1, 4, and 5 in ways that are specific to MSP’s design. A systematic check (DCMA thresholds applied to MSP-specific risks) is the only reliable way to know whether the network is logic-driven before you accept the dates.

Why Schedule Quality Matters in MS Project

Every schedule quality problem that exists in a P6 schedule also exists in MSP, plus problems that are unique to MS Project’s design.

The DCMA 14-Point Assessment applies regardless of which tool produced the schedule. But MS Project introduces specific risks:

  • Manually-scheduled tasks bypass the scheduling engine entirely. Dates are typed in, not calculated. Logic links to manually-scheduled tasks are respected only if they don’t conflict with the manually entered dates.
  • Summary tasks with logic are allowed in MSP but create circular networks and distort the critical path. P6 does not permit logic on summary activities.
  • Constraint defaults differ from P6. MSP defaults to “As Soon As Possible” for auto-scheduled tasks, but manually-scheduled tasks have no constraint; they sit wherever they’re placed.

For the quality framework that underpins schedule checking, see our guide to the DCMA 14-Point Assessment.

MS Project vs Primavera P6: Key Differences for Schedule Checking

If you’ve reviewed schedules in P6, here’s what’s different in MSP:

FeatureMS ProjectPrimavera P6
Task scheduling modesAuto-scheduled or manually-scheduled; user choosesAll activities logic-driven (no manual mode)
Logic on summary tasksAllowed (but shouldn’t be used)Not permitted
Constraint typesSoft (SNET, FNET, SNLT, FNLT) and hard (MSO, MFO)Soft (SNET, FNET) and hard (MSO, MFO)
Default constraintAs Soon As PossibleNone (logic-driven)
Schedule logTask Inspector (limited)Full schedule log with warnings
DCMA macroRequires third-party macro (DAU) or add-inBuilt-in macro available
Open ends detectionManual filter requiredBuilt-in filter available

MS Project gives you more rope to hang yourself with. P6 enforces logic-driven scheduling by default; MSP allows you to opt out. That flexibility is useful during planning but dangerous in a schedule that’s supposed to be a reliable basis for decisions.

The MS Project Schedule Quality Checklist

The following 10 steps cover every major schedule quality check. Work through them in order.

graph TD A[1. Enable Auto-Scheduling\nand Check Task Modes] --> B[2. Check for\nOpen Ends] B --> C[3. Review Logic\nand Relationships] C --> D[4. Check Lags\nand Leads] D --> E[5. Review\nConstraints] E --> F[6. Check Float\nDistribution] F --> G[7. Validate\nCritical Path] G --> H[8. Check Activity\nDurations] H --> I[9. Review\nResources] I --> J[10. Run DCMA\n14-Point Assessment]

Step 1: Enable auto-scheduling and check task modes

Manually-scheduled tasks are the single biggest quality risk in MS Project. They override the scheduling engine: dates are entered directly, logic links are ignored when they conflict with manually entered dates, and the critical path calculation skips them.

To identify manually-scheduled tasks:

  1. Go to View > Task Views > Gantt Chart
  2. Look at the Task Mode column. Tasks marked “Manually Scheduled” have a pushpin icon
  3. Alternatively, apply the filter: View > Filter > Manually Scheduled to isolate them

To convert all tasks to auto-scheduled:

  1. Select all tasks (Ctrl+A)
  2. Go to Task > Schedule > Task Mode > Auto Scheduled
  3. Verify that all task modes have changed and the schedule recalculates

Key insight: If converting to auto-scheduled causes dates to shift dramatically, the manually-scheduled tasks were overriding the logic. The shifted dates are the logic-driven dates. That’s what the schedule should show.

Step 2: Check for open ends

Open ends (tasks with no predecessor or no successor) create phantom float and make the critical path unreliable.

To find open ends in MSP:

  1. Go to View > Task Views > Gantt Chart
  2. Apply the filter: View > Filter > Tasks with no predecessors
  3. Note every task with no predecessor (except the project start)
  4. Clear that filter and apply: View > Filter > Tasks with no successors
  5. Note every task with no successor (except the project finish)

The DCMA 14-Point Assessment, Check 1 (Logic), targets 5% or fewer activities with missing logic. In MSP, manually-scheduled tasks can have logic links that don’t function, so check open ends after converting all tasks to auto-scheduled.

Step 3: Review logic and relationships

To check relationship types:

  1. Go to View > Task Views > Gantt Chart
  2. Switch to a table that shows predecessors: View > Table > Schedule
  3. Add the Predecessors column if not visible: right-click the column header row > Insert Column > Predecessors
  4. Review relationship types for each predecessor

The DCMA 14-Point Assessment, Check 4 (Relationship Types), targets 90% or more Finish-to-Start relationships. In MSP, excessive Start-to-Start or Finish-to-Finish relationships indicate preferential sequencing rather than hard logic.

Check for logic on summary tasks: Summary tasks should not have predecessors or successors in MSP. Go to View > Filter > Summary Tasks, then check the Predecessors column. If any summary task has logic, remove it. Logic on summary tasks creates circular networks that distort the critical path.

Step 4: Check lags and leads

Lags are positive delays between tasks. Leads (negative lags) are overlaps.

To find lags:

  1. Insert the Lag column: right-click column header > Insert Column > Lag
  2. Filter for tasks with Lag > 0**
  3. Review each lag: does it represent actual work that should be an activity?

To find leads (negative lags):

  1. Filter for tasks with Lag < 0
  2. The DCMA targets zero leads. Every lead should be replaced with a restructured logic sequence

The DCMA 14-Point Assessment, Check 2 (Leads), targets zero leads, and Check 3 (Lags), targets 5% or fewer relationships using lags. A lag that represents work (such as concrete curing) should be converted to an activity.

Step 5: Review constraints

Hard constraints in MSP (Must Start On, Must Finish On) override the scheduling engine. The task dates become fixed regardless of logic.

To find constrained tasks:

  1. Insert the Constraint Type column: right-click column header > Insert Column > Constraint Type
  2. Review all tasks with constraints other than “As Soon As Possible”
  3. Flag any task with Must Start On (MSO) or Must Finish On (MFO)

The DCMA 14-Point Assessment, Check 5 (Hard Constraints), targets 5% or fewer activities with hard constraints. The SCL Protocol, paragraph 1.47, states that “manually applied constraints such as ‘must start’ or ‘must finish’ fixed dates, ‘zero float’ and other programming techniques that can have the effect of inhibiting a programme from reacting dynamically to change should be avoided.”

In MSP, the default constraint for auto-scheduled tasks is “As Soon As Possible”, which is a soft constraint. Any task with MSO or MFO should have a contractual justification.

Step 6: Check float distribution

To display total float (slack) in MSP:

  1. Insert the Total Slack column: right-click column header > Insert Column > Total Slack
  2. Sort by Total Slack descending
  3. Review tasks with high slack (> 44 working days per DCMA Check 6)
  4. Review tasks with negative slack (schedule behind contractual dates)

Negative slack means the task is behind schedule. If the entire project shows negative slack, the completion date is later than the contractual deadline.

Step 7: Validate the critical path

To display the critical path in MSP:

  1. Go to View > Task Views > Gantt Chart
  2. Under Format, check the Critical Tasks checkbox in the Gantt Chart Style group
  3. Critical tasks are highlighted in red on the Gantt chart
  4. Verify the critical path makes construction sense: does the sequence of critical tasks reflect the actual work sequence?

To check near-critical activities:

  1. Apply a custom filter: View > Filter > New Filter
  2. Set conditions: Total Slack >= 0 days AND Total Slack <= 5 days
  3. Review the filtered list for activities that could become critical with small delays

For the critical path method that underpins this check, see our guide to the critical path method in construction.

Step 8: Check activity durations

To find long-duration activities:

  1. Insert the Duration column: right-click column header > Insert Column > Duration
  2. Sort by Duration descending
  3. Flag any activity with duration greater than 20 working days (construction) or 44 working days (defence per DCMA Check 8)
  4. Review each long-duration activity: should it be subdivided into component tasks?

The SCL Protocol, paragraph 1.46, suggests that “no activity or lag (other than a summary activity) should exceed 28 days in duration.” This is a tighter threshold than DCMA’s 44-day target and is more appropriate for construction programmes.

Step 9: Review resources

To check resource assignments:

  1. Go to View > Resource Views > Resource Sheet
  2. Look for resources with overallocation indicators (red icons)
  3. Switch to View > Resource Views > Resource Usage for detailed allocation timing

To check for unassigned resources on critical tasks:

  1. Filter for critical tasks (Format > Critical Tasks checked)
  2. Insert the Resource Names column
  3. Flag any critical task with no resource assigned

Not all schedules require resource loading, but if your contract mandates it, every critical task should have resource assignments.

Step 10: Run the DCMA 14-Point assessment

The DAU (Defence Acquisition University) provides a free DCMA 14-Point macro for MS Project. Here’s how to use it:

Installing the DAU macro:

  1. Download the DAU macro from the DCMA website
  2. In MSP, go to View > Macros > Macro to run or manage the macro
  3. Once installed, the macro adds a toolbar or ribbon entry for running the 14-Point check

Running the assessment:

  1. Open the schedule in MSP
  2. Run the DCMA macro via the custom toolbar or View > Macros
  3. Review each of the 14 metrics against the thresholds
  4. Flag any failing metrics for correction

If the macro isn’t available, you can perform the five most critical checks manually using the steps above:

CheckHow to Check Manually in MSPDCMA Target
Missing logic (open ends)Filter: Tasks with no predecessors/successors5% or fewer
Hard constraintsInsert Column: Constraint Type; filter for MSO, MFO5% or fewer
LagsInsert Column: Lag; filter for values > 05% or fewer of relationships
High durationSort by Duration descending5% or fewer > 44 working days
Negative floatSort by Total Slack ascending; filter for < 00 tasks

MS Project Views and Filters for Schedule Checking

Set up these custom views once and reuse them across every review.

Set up a custom review view

Create a custom view (we suggest calling it “Schedule Quality Review”) with these columns:

ColumnPurpose
Task ModeIdentify manually-scheduled tasks
Activity NameCheck for descriptive naming
DurationVerify realistic durations
Start / FinishCheck dates are logic-driven
PredecessorsVerify logic links exist and are correct
Total SlackIdentify high-float and negative-float tasks
Constraint TypeFlag hard constraints
LagCheck for excessive lags
Resource NamesVerify resource assignments on critical tasks

To create: View > New View > Single View. Add columns, set grouping and sorting, then save.

Custom filters

FilterCriteriaPurpose
Open Ends (No Predecessor)Predecessors is emptyFind tasks with no incoming logic
Open Ends (No Successor)Successors is emptyFind tasks with no outgoing logic
Hard ConstraintsConstraint Type = MSO or MFOFind tasks overriding logic
High DurationDuration > 20 daysFind bundled work
High FloatTotal Slack > 44 daysFind tasks with excessive float
Manually ScheduledTask Mode = Manually ScheduledFind tasks bypassing the scheduler

To create a custom filter: View > Filter > New Filter. Set field, test, and value. Save with a descriptive name.

  • Group by Critical: Quickly identify all critical tasks
  • Group by Constraint Type: See how many tasks have hard constraints
  • Sort by Total Slack ascending: See the most constrained tasks first
  • Sort by Duration descending: Find the longest activities

Baseline vs Current Schedule Comparison in MS Project

If you’re reviewing a schedule update (not the initial baseline), comparison is essential.

Set the baseline

  1. Go to Project > Set Baseline > Set Baseline
  2. Choose “Set Baseline” (entire project) or select specific tasks
  3. This saves the current Start, Finish, Duration, Work, and Cost as baseline values

View baseline vs actual

  1. Switch to View > Task Views > Tracking Gantt
  2. This shows both the baseline (grey bars) and current schedule (blue bars)
  3. Variance is visible where the bars diverge

Variance table

  1. Go to View > Table > Variance
  2. This displays Start Variance, Finish Variance, Cost Variance, and Work Variance for each task
  3. Sort by Finish Variance descending to see which tasks are running furthest behind baseline

For detailed comparison methodology, see our guide to baseline vs current schedule comparison.

Built-in MSP Tools vs Third-Party Add-ins

MS Project can perform all essential schedule quality checks using built-in features. Third-party add-ins save time but aren’t required.

CapabilityBuilt-in MSPBPC Logic FilterSchedule Analyzer forProjectBarbecana Inspector
Open ends detectionYes (filter)Yes (automated)YesYes
Constraint checkingYes (filter)Yes (automated)YesYes
Logic path highlightingLimitedYes (toggle)YesYes
DCMA 14-Point macroRequires DAU downloadYes (built-in)Yes (built-in)Yes (built-in)
Baseline comparisonYes (Tracking Gantt)LimitedYesYes
CostFreeCommercialCommercialCommercial

If you don’t have MS Project and need to check an MPP file, you can upload it to analysis tools without installing software. For a broader comparison of schedule analysis options, see our guide to schedule analysis software.

Common MS Project Schedule Issues and How to Fix Them

IssueHow to Identify in MSPHow to Fix
Manually-scheduled tasks hiding logic breaksFilter: Task Mode = Manually ScheduledConvert to Auto Scheduled; review date shifts
Summary task logic distorting the critical pathFilter: Summary Tasks; check Predecessors columnRemove all logic from summary tasks
Excessive constraints overriding network logicInsert Column: Constraint Type; filter for MSO, MFORemove hard constraints; replace with relationships
Open ends creating phantom floatFilter: Tasks with no predecessors / no successorsAdd missing predecessors and successors
Incorrect calendar assignmentsView > Task Views > Gantt Chart; check Task Calendar columnVerify calendar against contract requirements
Out-of-sequence progressFilter for tasks with Actual Start before predecessor finishRestructure logic or apply retention logic settings

Deliberate manipulation (as distinct from the structural issues above) shows up through different signatures: schedule logic that changes between updates with no contractual basis, activities that swap between critical and non-critical without explanation, and progress that doesn’t reconcile to contemporaneous records.

Pre-Submission Checklist for MS Project Schedules

Before submitting a schedule for review, run through this pre-submission checklist:

#CheckPass Criteria
1All tasks auto-scheduled0 manually-scheduled tasks
2No logic on summary tasks0 summary tasks with predecessors or successors
3No open endsDCMA target: 5% or fewer
4Hard constraints justified5% or fewer hard constraints (MSO, MFO)
5No leads (negative lags)0 leads
6Lags minimised5% or fewer relationships with lags
7Durations realisticNo activities > 44 working days (DCMA) or > 28 days (SCL) without justification
8Critical path makes senseVerify sequence reflects construction logic
9Resources assigned on critical tasksNo unassigned critical tasks if contract mandates resource loading
10Baseline setProject > Set Baseline has been run

What to include in your submission package:

  • The MPP file with all tasks set to auto-scheduled
  • A PDF of the Gantt chart showing the critical path highlighted
  • A summary of any constraints with contractual justifications
  • A note on any lags and why they represent legitimate delays rather than work
  • The DCMA 14-Point results if the macro has been run

For the broader process of reviewing a contractor’s programme, see our guide to how to review a contractor programme.

Key Takeaways

  1. Always convert manually-scheduled tasks first. This is the single biggest quality risk in MSP. Do nothing else until every task is auto-scheduled.
  2. Remove logic from summary tasks. MSP allows it; P6 doesn’t. Logic on summary tasks distorts the critical path.
  3. Use built-in filters and views. Every essential schedule quality check can be performed without paid add-ins.
  4. Set up a reusable “Schedule Quality Review” view. Create it once with the columns outlined in this guide and use it for every review.
  5. Run the DCMA 14-Point macro. If the DAU macro is available, use it. If not, the manual checks above cover the five most critical metrics.
  6. Compare against baseline. Set the baseline before submission; use Tracking Gantt and the Variance table for updates.
  7. Know the MSP-specific risks. Manually-scheduled tasks, summary task logic, and constraint defaults are problems that don’t exist in P6.

Quick reference: Where to check what in MSP:

What to CheckWhere in MSP
Manually-scheduled tasksView > Filter > Manually Scheduled
Open endsView > Filter > Tasks with no predecessors / no successors
Relationship typesView > Table > Schedule; Insert Column > Predecessors
Lags and leadsInsert Column > Lag
ConstraintsInsert Column > Constraint Type
FloatInsert Column > Total Slack
Critical pathFormat > Critical Tasks checkbox
DurationsInsert Column > Duration; Sort descending
ResourcesView > Resource Views > Resource Sheet
Baseline varianceView > Table > Variance