Skip to content

Check a schedule against the DCMA 14-point assessment

All plans Anyone who can see the project

The DCMA 14-point assessment is a set of fourteen checks for telling whether a schedule is built well enough to trust. The Defense Contract Management Agency, part of the US Department of Defense, published it for reviewing contractors’ schedules, and it has since become a common yardstick well beyond defense work. Owners, agencies and PMOs use it to review a schedule before relying on it, and some ask for a schedule that passes it.

Onplana runs all fourteen checks on any project, on every plan, in the Schedule Quality view.

  1. Open the project, open the Plan tab under the project header, and select Schedule Quality.

  2. Read the one-line verdict at the top, then the fourteen checks below it. Each shows its result, the threshold it was measured against, and how many tasks it flagged.

  3. Select a check that flagged tasks to list them. Each task name opens that task, so you can fix it and come back.

Anyone who can see the project can open the view. It is read-only: it computes the assessment each time you open it and changes nothing in the plan.

At the top of the view, two chips say what the assessment was measured against: the Status date, and the Baseline it compared with (or No baseline saved).

A single sentence above the checks says what the results add up to. It is decided in this order, and the first that applies is the one you see:

The verdict saysWhen
There is nothing to assess yet: the project has no tasks.The project has no tasks.
This is a task list, not a schedule. Nothing is linked, so no date moves when work slips.Two or more tasks are open and not one dependency leads into an open task.
This plan will not tell you when it slips.Logic, the Critical path test, or Milestones with nothing leading in failed.
This plan is already behind what it committed to.Negative float, CPLI, Missed tasks or BEI failed.
N checks failed. The plan still reads as a schedule.Any other check failed.
Every check that could run passed.Nothing failed. A check that could not run does not count against it.

A tag above the sentence gives the tone: Needs attention for the task list, will-not-warn and already-behind verdicts, Worth a look when other checks failed, and Holds up when everything that ran passed. For the two verdicts with a cause, Decided by names the failed checks behind it. “Will not tell you when it slips” outranks “already behind” because float and CPLI computed on broken logic are not figures to trust: fix the links first, then read the rest.

The verdict counts the Structure checks as well as the fourteen. The three tiles below it, Passed, Failed and Not assessed, count only the fourteen. Select a tile to show only those checks, and select it again (or Show all) to bring the rest back.

#CheckWhat it flagsCounted againstPasses when
1LogicOpen tasks with no predecessor, no successor, or neitherOpen tasksAt most 5%
2LeadsDependencies with a negative lagDependencies into open tasksNone
3LagsDependencies with a positive lagDependencies into open tasksAt most 5%
4Relationship typesDependencies that are not finish-to-startDependencies into open tasksAt least 90% are finish-to-start
5Hard constraintsOpen tasks set to Must Start On, Must Finish On, Start No Later Than or Finish No Later Than, with a dateOpen tasksAt most 5%
6High floatOpen tasks with more than 44 working days of total floatOpen tasksAt most 5%
7Negative floatOpen tasks with total float below zeroOpen tasksNone
8High durationOpen tasks longer than 44 working daysOpen tasks that are not milestonesAt most 5%
9Invalid datesPlanned dates before the status date on unfinished work, or actual dates after itAll tasksNone
10ResourcesOpen tasks with no assigneeOpen tasks that are not milestonesNone
11Missed tasksTasks the baseline said would finish by the status date that are not done, or finished after their baseline finishTasks with a baseline finish on or before the status dateAt most 5%
12Critical path testAdds 600 working days to one open critical task and reschedulesOne testThe project finish moves by exactly 600 working days
13Critical Path Length Index (CPLI)(remaining critical path + float to the project end date) divided by the remaining critical pathThe whole projectAt least 0.95
14Baseline Execution Index (BEI)Tasks completed by the status date, divided by the tasks the baseline said would be done by thenTasks with a baseline finish on or before the status dateAt least 0.95

Percentages are shown to one decimal place and the two indexes to two.

  • Working days come from the project’s working calendar, or your organization’s default calendar when the project has none. See Configure working calendars.
  • Logic counts a dependency on a task in another project as a link. A dependency on a summary task does not give the tasks inside it a predecessor or a successor.
  • Leads, lags and relationship types look at dependencies whose successor is an open task.
  • Hard constraints count only the four constraints that pin or cap a date, and only when a date is set. Start No Earlier Than and Finish No Earlier Than are not counted, and neither is a Hard Deadline.
  • Float, the critical path test and CPLI come from Onplana’s scheduler, run over the plan as it would schedule now. If automatic scheduling is off and the dates on the chart have drifted from their links, these three read the network, not the dates on screen.
  • High duration uses a task’s duration in the chosen baseline when the baseline records one, and its current duration otherwise. A task with nothing to measure a duration from (no duration, no start and due date pair, no estimate) is not flagged.
  • Invalid dates compares the dates saved on each task with the status date. It flags an unfinished task whose due date is before the status date, an unstarted task whose start date is before it, and an actual start or a completion date after it. A due date is a plan, not an actual, so only a completion date counts as an actual finish.
  • Resources has no DCMA percentage, so it passes only when every open task that is not a milestone has an assignee.
  • Missed tasks reports how many calendar days late each flagged task is. For a finished task it compares the day the task was completed (its due date when there is no completion date) with its baseline finish.
  • The critical path test delays one open critical task that is not a milestone, preferring one that has not started, and reschedules a copy of the plan. On an intact critical path the finish moves by the full 600 working days. The view names the task it delayed and how far the finish actually moved.
  • CPLI measures the remaining critical path in working days from the status date to the computed finish, and the float as working days from the computed finish to the project’s End date. When the computed finish is later than the end date, that float is negative and CPLI falls below 1.
  • BEI counts every completed task, baselined or not, as DCMA counts it, so it can be above 1.
  • Summary tasks are left out of every check. A summary is any task that has subtasks.
  • A task counts as open until its status is Done. Review and Blocked tasks are open.
  • The status date is the project’s status date, or today when the project has none. When today is used, the view says so above the verdict. To set one, choose Edit in the project header, open More, and set Status date. See The project status date.
  • The baseline is the newest one saved on the project. When a project has more than one, pick another under Compare with baseline. Only three checks read it: high duration, missed tasks and BEI. CPLI measures against the project’s end date, not a baseline.

A check that cannot run shows Not assessed with the reason, and counts neither as a pass nor as a failure.

ReasonWhat to do
The project has no tasks.Add tasks.
Every task is done.Nothing to do: there is no open work left to assess. High duration and resources also show this when the only open tasks are milestones.
No open task has a dependency.Link the tasks that depend on each other.
The dependencies form a loop, so the schedule cannot be computed.Remove the dependency that closes the loop.
Save a baseline on the Baseline view to run this check.Capture a baseline.
No baselined task was due by the status date.Nothing is wrong yet. The check runs once the baseline says something should have finished.
No open task is on the critical path.The critical path test needs an open task on the critical path that is not a milestone.
The project has no end date.Set End date in Edit on the project header. CPLI needs a target to measure against.
The computed finish is before the status date.Check the status date, and whether the remaining work has dates.

Below the fourteen, a Structure section runs four checks of Onplana’s own on how the plan is built. They use the same thresholds as the Schedule Health Check, they are not part of the DCMA assessment, and they do not change the fourteen’s pass and fail count. They do feed the verdict.

CheckWhat it flagsCounted againstPasses when
Milestones with nothing leading inOpen milestones with no predecessor. A milestone on the plan’s first day is not counted, since nothing can lead into the start.Open milestonesNone
Tasks with too many predecessorsOpen tasks waiting on more than 5 different tasksOpen tasksAt most 5%
Milestone shareMilestones among all tasks. Not assessed with fewer than 20 tasks.All tasksAt most 15%
Outline depthTasks more than 5 outline levels deep (a top-level task is level 1)All tasksNo task deeper than level 5

Most failures trace back to a handful of causes.

  • Logic and high float usually mean a missing link. A task with no successor has all the time until the project finish as float, so a loose task early in a long plan tends to fail both. Link each task to what waits on it. Every plan has a first task with nothing before it and a last task with nothing after it, which the 5% allowance covers; a start milestone and a finish milestone make those two obvious. See Link task dependencies.
  • Leads: replace a negative lag with a start-to-start link and a positive lag, or split the predecessor so the successor can follow a finished piece.
  • Lags: keep them for real waiting time. If a lag is long, model the wait as its own task.
  • Relationship types: default to finish-to-start, and keep the other types for the cases that genuinely need them.
  • Hard constraints: sequence with dependencies and pin only the dates the outside world sets. For a promised date you want to watch rather than pin, use a Hard Deadline, which this check does not count (a deadline the plan cannot meet still shows up as negative float). See Scheduling constraints.
  • Negative float means the plan cannot reach a date it has promised, through a “no later than” or “must” constraint or a deadline. See Reading float, including below zero.
  • High duration: break a task longer than about two months into pieces that finish and report progress on their own.
  • Invalid dates: bring the plan up to the status date. Mark finished work Done, correct actual starts, and move unfinished work so it starts or finishes after the status date. If the whole list is flagged, check that the status date is the one you meant. See Duration, remaining work and actual start.
  • Resources: assign someone to every open task. See Work with tasks.
  • Missed tasks and BEI say the plan is behind its baseline. Recover the work, or, after a real approved change of scope, capture a new baseline and compare against that. See Capture and compare baselines.
  • The critical path test fails when something between the delayed task and the finish absorbs the delay: a constraint that pins a date, or a task on the path with no link to what follows it. Start from the task the view names and walk forward. The critical path highlight on the Gantt shows the chain.
  • CPLI below 0.95 means the computed finish lands after the end date by more than DCMA’s 5% tolerance. Recover time on the critical path, or change the end date through your change process.

Onplana Schedule, the free desktop app, runs the same fourteen checks on your computer on a Project XML file, with nothing uploaded and no account. It reads the status date and the baselines saved in the file rather than a project’s.

If you have to run the assessment in a tool you already use, export the project with Export MS Project from the ⋯ menu in the project header. See Export a project to Microsoft Project.

The file carries the tasks, the hierarchy, the dependencies with their type and lag, progress and assignments. It does not carry constraints, deadlines, baseline dates or the project status date. Another tool’s hard constraints, missed tasks and BEI checks will therefore not match what this view shows, and it will apply its own status date.

Is this an official DCMA certification? No. Onplana implements the published fourteen checks and their thresholds. It is not a DCMA product, and a passing result is not an approval from DCMA or from anyone who reviews your schedule. It is the same test a reviewer is likely to run, run first by you.

Does it check my contract’s scheduling specification? No, only the DCMA fourteen. A government agency or an owner often adds its own scheduling rules to a contract, such as activity coding, update cadence or a required file format. Those rules usually cover some of the same ground, such as logic, constraints and long durations, so passing here is a good start rather than the whole review.

Why does my result differ from another tool’s? DCMA leaves some choices to the tool, and tools make them differently. The ones Onplana makes are listed under How this is measured at the bottom of the view and in What each check reads above: summaries left out, open until Done, float from the scheduler, resources passing only at zero, and BEI counting every completed task.

Why is CPLI negative? CPLI is (remaining critical path + float to the end date) divided by the remaining critical path. When the computed finish is later than the project’s end date, the float is negative, and when it is later by more working days than the remaining critical path is long, CPLI drops below zero. It usually means the end date has already passed, or was set well before the plan can finish. Set the end date you are really committed to, or recover time on the critical path.

Why is a check not assessed? It needs something the project does not have yet, most often a baseline, a dependency or an end date. The reason is written on the check. See When a check is not assessed.

Does it change my plan? No. The view is read-only. The critical path test delays a task on a copy of the plan, not the plan itself, and nothing is saved.

Is it on the Free plan? Yes, on every plan.

Can I share the view? Yes. The view has its own address, so you can copy the page link and send it to anyone who can see the project.