Check a schedule against the DCMA 14-point assessment
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.
Open the view
Section titled “Open the view”-
Open the project, open the Plan tab under the project header, and select Schedule Quality.
-
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.
-
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).
The verdict
Section titled “The verdict”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 says | When |
|---|---|
| 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.
The fourteen checks
Section titled “The fourteen checks”| # | Check | What it flags | Counted against | Passes when |
|---|---|---|---|---|
| 1 | Logic | Open tasks with no predecessor, no successor, or neither | Open tasks | At most 5% |
| 2 | Leads | Dependencies with a negative lag | Dependencies into open tasks | None |
| 3 | Lags | Dependencies with a positive lag | Dependencies into open tasks | At most 5% |
| 4 | Relationship types | Dependencies that are not finish-to-start | Dependencies into open tasks | At least 90% are finish-to-start |
| 5 | Hard constraints | Open tasks set to Must Start On, Must Finish On, Start No Later Than or Finish No Later Than, with a date | Open tasks | At most 5% |
| 6 | High float | Open tasks with more than 44 working days of total float | Open tasks | At most 5% |
| 7 | Negative float | Open tasks with total float below zero | Open tasks | None |
| 8 | High duration | Open tasks longer than 44 working days | Open tasks that are not milestones | At most 5% |
| 9 | Invalid dates | Planned dates before the status date on unfinished work, or actual dates after it | All tasks | None |
| 10 | Resources | Open tasks with no assignee | Open tasks that are not milestones | None |
| 11 | Missed tasks | Tasks the baseline said would finish by the status date that are not done, or finished after their baseline finish | Tasks with a baseline finish on or before the status date | At most 5% |
| 12 | Critical path test | Adds 600 working days to one open critical task and reschedules | One test | The project finish moves by exactly 600 working days |
| 13 | Critical Path Length Index (CPLI) | (remaining critical path + float to the project end date) divided by the remaining critical path | The whole project | At least 0.95 |
| 14 | Baseline Execution Index (BEI) | Tasks completed by the status date, divided by the tasks the baseline said would be done by then | Tasks with a baseline finish on or before the status date | At least 0.95 |
Percentages are shown to one decimal place and the two indexes to two.
What each check reads
Section titled “What each check reads”- 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.
Who counts, and as of when
Section titled “Who counts, and as of when”- 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.
When a check is not assessed
Section titled “When a check is not assessed”A check that cannot run shows Not assessed with the reason, and counts neither as a pass nor as a failure.
| Reason | What 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. |
Structure checks
Section titled “Structure checks”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.
| Check | What it flags | Counted against | Passes when |
|---|---|---|---|
| Milestones with nothing leading in | Open milestones with no predecessor. A milestone on the plan’s first day is not counted, since nothing can lead into the start. | Open milestones | None |
| Tasks with too many predecessors | Open tasks waiting on more than 5 different tasks | Open tasks | At most 5% |
| Milestone share | Milestones among all tasks. Not assessed with fewer than 20 tasks. | All tasks | At most 15% |
| Outline depth | Tasks more than 5 outline levels deep (a top-level task is level 1) | All tasks | No task deeper than level 5 |
Fixing what fails
Section titled “Fixing what fails”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 runs the same checks
Section titled “Onplana Schedule runs the same checks”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.
Run the assessment in your own tool
Section titled “Run the assessment in your own tool”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.
Related
Section titled “Related”- Link task dependencies, the links, constraints and float most checks read
- Capture and compare baselines, what missed tasks and BEI measure against
- Duration, remaining work and actual start, including the project status date
- Plan on the Gantt chart, where the critical path is drawn
- Install Onplana Schedule, the same checks on a file on your computer
- Read your Schedule Health Check, a separate, broader report on a schedule file
Was this helpful?
Thanks for your feedback!