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:
| Feature | MS Project | Primavera P6 |
|---|---|---|
| Task scheduling modes | Auto-scheduled or manually-scheduled; user chooses | All activities logic-driven (no manual mode) |
| Logic on summary tasks | Allowed (but shouldn’t be used) | Not permitted |
| Constraint types | Soft (SNET, FNET, SNLT, FNLT) and hard (MSO, MFO) | Soft (SNET, FNET) and hard (MSO, MFO) |
| Default constraint | As Soon As Possible | None (logic-driven) |
| Schedule log | Task Inspector (limited) | Full schedule log with warnings |
| DCMA macro | Requires third-party macro (DAU) or add-in | Built-in macro available |
| Open ends detection | Manual filter required | Built-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.
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:
- Go to View > Task Views > Gantt Chart
- Look at the Task Mode column. Tasks marked “Manually Scheduled” have a pushpin icon
- Alternatively, apply the filter: View > Filter > Manually Scheduled to isolate them
To convert all tasks to auto-scheduled:
- Select all tasks (Ctrl+A)
- Go to Task > Schedule > Task Mode > Auto Scheduled
- 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:
- Go to View > Task Views > Gantt Chart
- Apply the filter: View > Filter > Tasks with no predecessors
- Note every task with no predecessor (except the project start)
- Clear that filter and apply: View > Filter > Tasks with no successors
- 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:
- Go to View > Task Views > Gantt Chart
- Switch to a table that shows predecessors: View > Table > Schedule
- Add the Predecessors column if not visible: right-click the column header row > Insert Column > Predecessors
- 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:
- Insert the Lag column: right-click column header > Insert Column > Lag
- Filter for tasks with Lag > 0**
- Review each lag: does it represent actual work that should be an activity?
To find leads (negative lags):
- Filter for tasks with Lag < 0
- 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:
- Insert the Constraint Type column: right-click column header > Insert Column > Constraint Type
- Review all tasks with constraints other than “As Soon As Possible”
- 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:
- Insert the Total Slack column: right-click column header > Insert Column > Total Slack
- Sort by Total Slack descending
- Review tasks with high slack (> 44 working days per DCMA Check 6)
- 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:
- Go to View > Task Views > Gantt Chart
- Under Format, check the Critical Tasks checkbox in the Gantt Chart Style group
- Critical tasks are highlighted in red on the Gantt chart
- Verify the critical path makes construction sense: does the sequence of critical tasks reflect the actual work sequence?
To check near-critical activities:
- Apply a custom filter: View > Filter > New Filter
- Set conditions: Total Slack >= 0 days AND Total Slack <= 5 days
- 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:
- Insert the Duration column: right-click column header > Insert Column > Duration
- Sort by Duration descending
- Flag any activity with duration greater than 20 working days (construction) or 44 working days (defence per DCMA Check 8)
- 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:
- Go to View > Resource Views > Resource Sheet
- Look for resources with overallocation indicators (red icons)
- Switch to View > Resource Views > Resource Usage for detailed allocation timing
To check for unassigned resources on critical tasks:
- Filter for critical tasks (Format > Critical Tasks checked)
- Insert the Resource Names column
- 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:
- Download the DAU macro from the DCMA website
- In MSP, go to View > Macros > Macro to run or manage the macro
- Once installed, the macro adds a toolbar or ribbon entry for running the 14-Point check
Running the assessment:
- Open the schedule in MSP
- Run the DCMA macro via the custom toolbar or View > Macros
- Review each of the 14 metrics against the thresholds
- 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:
| Check | How to Check Manually in MSP | DCMA Target |
|---|---|---|
| Missing logic (open ends) | Filter: Tasks with no predecessors/successors | 5% or fewer |
| Hard constraints | Insert Column: Constraint Type; filter for MSO, MFO | 5% or fewer |
| Lags | Insert Column: Lag; filter for values > 0 | 5% or fewer of relationships |
| High duration | Sort by Duration descending | 5% or fewer > 44 working days |
| Negative float | Sort by Total Slack ascending; filter for < 0 | 0 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:
| Column | Purpose |
|---|---|
| Task Mode | Identify manually-scheduled tasks |
| Activity Name | Check for descriptive naming |
| Duration | Verify realistic durations |
| Start / Finish | Check dates are logic-driven |
| Predecessors | Verify logic links exist and are correct |
| Total Slack | Identify high-float and negative-float tasks |
| Constraint Type | Flag hard constraints |
| Lag | Check for excessive lags |
| Resource Names | Verify resource assignments on critical tasks |
To create: View > New View > Single View. Add columns, set grouping and sorting, then save.
Custom filters
| Filter | Criteria | Purpose |
|---|---|---|
| Open Ends (No Predecessor) | Predecessors is empty | Find tasks with no incoming logic |
| Open Ends (No Successor) | Successors is empty | Find tasks with no outgoing logic |
| Hard Constraints | Constraint Type = MSO or MFO | Find tasks overriding logic |
| High Duration | Duration > 20 days | Find bundled work |
| High Float | Total Slack > 44 days | Find tasks with excessive float |
| Manually Scheduled | Task Mode = Manually Scheduled | Find tasks bypassing the scheduler |
To create a custom filter: View > Filter > New Filter. Set field, test, and value. Save with a descriptive name.
Recommended grouping and sorting
- 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
- Go to Project > Set Baseline > Set Baseline
- Choose “Set Baseline” (entire project) or select specific tasks
- This saves the current Start, Finish, Duration, Work, and Cost as baseline values
View baseline vs actual
- Switch to View > Task Views > Tracking Gantt
- This shows both the baseline (grey bars) and current schedule (blue bars)
- Variance is visible where the bars diverge
Variance table
- Go to View > Table > Variance
- This displays Start Variance, Finish Variance, Cost Variance, and Work Variance for each task
- 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.
| Capability | Built-in MSP | BPC Logic Filter | Schedule Analyzer forProject | Barbecana Inspector |
|---|---|---|---|---|
| Open ends detection | Yes (filter) | Yes (automated) | Yes | Yes |
| Constraint checking | Yes (filter) | Yes (automated) | Yes | Yes |
| Logic path highlighting | Limited | Yes (toggle) | Yes | Yes |
| DCMA 14-Point macro | Requires DAU download | Yes (built-in) | Yes (built-in) | Yes (built-in) |
| Baseline comparison | Yes (Tracking Gantt) | Limited | Yes | Yes |
| Cost | Free | Commercial | Commercial | Commercial |
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
| Issue | How to Identify in MSP | How to Fix |
|---|---|---|
| Manually-scheduled tasks hiding logic breaks | Filter: Task Mode = Manually Scheduled | Convert to Auto Scheduled; review date shifts |
| Summary task logic distorting the critical path | Filter: Summary Tasks; check Predecessors column | Remove all logic from summary tasks |
| Excessive constraints overriding network logic | Insert Column: Constraint Type; filter for MSO, MFO | Remove hard constraints; replace with relationships |
| Open ends creating phantom float | Filter: Tasks with no predecessors / no successors | Add missing predecessors and successors |
| Incorrect calendar assignments | View > Task Views > Gantt Chart; check Task Calendar column | Verify calendar against contract requirements |
| Out-of-sequence progress | Filter for tasks with Actual Start before predecessor finish | Restructure 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:
| # | Check | Pass Criteria |
|---|---|---|
| 1 | All tasks auto-scheduled | 0 manually-scheduled tasks |
| 2 | No logic on summary tasks | 0 summary tasks with predecessors or successors |
| 3 | No open ends | DCMA target: 5% or fewer |
| 4 | Hard constraints justified | 5% or fewer hard constraints (MSO, MFO) |
| 5 | No leads (negative lags) | 0 leads |
| 6 | Lags minimised | 5% or fewer relationships with lags |
| 7 | Durations realistic | No activities > 44 working days (DCMA) or > 28 days (SCL) without justification |
| 8 | Critical path makes sense | Verify sequence reflects construction logic |
| 9 | Resources assigned on critical tasks | No unassigned critical tasks if contract mandates resource loading |
| 10 | Baseline set | Project > 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
- Always convert manually-scheduled tasks first. This is the single biggest quality risk in MSP. Do nothing else until every task is auto-scheduled.
- Remove logic from summary tasks. MSP allows it; P6 doesn’t. Logic on summary tasks distorts the critical path.
- Use built-in filters and views. Every essential schedule quality check can be performed without paid add-ins.
- Set up a reusable “Schedule Quality Review” view. Create it once with the columns outlined in this guide and use it for every review.
- 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.
- Compare against baseline. Set the baseline before submission; use Tracking Gantt and the Variance table for updates.
- 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 Check | Where in MSP |
|---|---|
| Manually-scheduled tasks | View > Filter > Manually Scheduled |
| Open ends | View > Filter > Tasks with no predecessors / no successors |
| Relationship types | View > Table > Schedule; Insert Column > Predecessors |
| Lags and leads | Insert Column > Lag |
| Constraints | Insert Column > Constraint Type |
| Float | Insert Column > Total Slack |
| Critical path | Format > Critical Tasks checkbox |
| Durations | Insert Column > Duration; Sort descending |
| Resources | View > Resource Views > Resource Sheet |
| Baseline variance | View > Table > Variance |