This endpoint is used to perform the DCMA 14-Point Assessment against the specified Schedule. The entire Schedule must be rescheduled before performing the assessment.
V10 Endpoint
This endpoint is only supported by v10 schedules. The schedule type can be identified by querying the /schedules/{scheduleId} endpoint.
DCMA 14-Point Assessment
The DCMA (Defense Contract Management Agency) 14-point assessment is a schedule quality evaluation framework that applies 14 industry-recognized metrics to analyze the integrity and performance of a project schedule. It helps identify common issues such as missing logic, unrealistic constraints, excessive leads/lags, or insufficient progress tracking.
The assessment produces quantitative results that indicate whether the schedule meets recommended thresholds. These results can be used to flag risks, improve schedule quality, and support better forecasting and decision-making.
The assessment consists of the following metrics:
- Missing Logic
- Description: Measures the percentage of incomplete tasks that are missing predecessors or successors.
- Default threshold: <5%.
- Leads
- Description: Identifies the use of negative lag (leads) in task links.
- Default threshold: 0%.
- Lags
- Description: Measures the percentage of task links that use positive lag.
- Default threshold: <5%.
- Relationship Types
- Description: Measures the percentage of non finish-to-start task links.
- Default threshold: <10%.
- Hard Constraints
- Description: Measures the percentage of tasks with hard constraints.
- Default threshold: <5%.
- Note: Hard constraints include: cannot reschedule, mandatory start, mandatory finish.
- High Float
- Description: Measures the percentage of tasks with excessive total float.
- Default threshold: <5%.
- Negative Float
- Description: Measures the percentage of tasks with negative float.
- Default threshold: 0%.
- High Duration
- Description: Measures the percentage of incomplete tasks with long durations (e.g., > 44 working days).
- Default threshold: <5%.
- Note: By default tasks are considered high duration if their durations are longer than 44 working days.
- Invalid Dates
- Description: Measures the percentage of tasks with actual dates in the future or forecast dates in the past.
- Default threshold: 0%.
- Missing Resources
- Description: Measures the percentage of tasks without assigned resources (depending on schedule type).
- Default threshold: <=100%.
- Missed tasks
- Description: Measures the percentage of tasks with actual finish dates later than baseline planned finish dates
- Default threshold: <=100%.
- Critical Path Test
- Description: Verifies that the critical path is continuous and correctly drives project completion.
- Critical Path Length Index (CPLI)
- Description: Evaluates the integrity of the overall network logic and measures the likelihood of completing a project successfully.
- Default threshold: >=0.95.
- Baseline Execution Index (BEI)
- Description: Ratio of the number of tasks completed to the number that should have been completed relative to the baseline.
- Default threshold: >=0.95.
Authentication
Requires Authorization header with valid Bearer token for scope itwin-platform.
For more documentation on authorization and how to get access token visit OAUTH2 Authorization page.
Rate limits
All iTwin Platform API operations have a rate limit. For more documentation on that visit Rate limits and quotas page.
Request parameters
The unique identifier of the Schedule.
Request headers
OAuth access token with itwin-platform scope
Setting to application/vnd.bentley.itwin-platform.v1+json is recommended.
Request body
DCMA 14-Point Assessment Request
Specifies whether to ignore hammock tasks in the assessment.
Specifies whether to ignore summary tasks in the assessment.
Example
{ "highDuration": { "duration": 44, "threshold": 5 }, "ignoreHammockTasks": false, "ignoreSummaryTasks": true, "lags": { "threshold": 5 }, "leads": { "threshold": 0 }, "missingLogic": { "threshold": 5 } }
Response 200 OK
OK
{ "report": { "assessmentDate": "2025-12-02T08:00:00Z", "baselineExecutionIndex": { "index": 1.0, "passed": true, "threshold": 0.95 }, "criticalPathLengthIndex": { "index": 1.0, "passed": true, "threshold": 0.95 }, "criticalPathTest": { "passed": true }, "hardConstraints": { "count": 4, "passed": true, "percent": 2.7, "threshold": 5 }, "highDuration": { "count": 2, "duration": 44, "passed": true, "percent": 1.3, "threshold": 5 }, "highFloat": { "count": 0, "passed": true, "percent": 0, "threshold": 5 }, "ignoreHammockTasks": false, "ignoreSummaryTasks": true, "invalidDates": { "count": 0, "passed": true, "percent": 0, "threshold": 0 }, "lags": { "count": 15, "passed": false, "percent": 7.5, "threshold": 5 }, "leads": { "count": 0, "passed": true, "percent": 0, "threshold": 0 }, "links": 200, "missedTasks": { "count": 0, "passed": true, "percent": 0, "threshold": 5 }, "missingLogic": { "count": 3, "passed": true, "percent": 2, "threshold": 5 }, "missingResources": { "count": 5, "passed": true, "percent": 3.3, "threshold": 100 }, "negativeFloat": { "count": 0, "passed": true, "percent": 0, "threshold": 0 }, "passed": false, "relationshipTypes": { "count": 18, "passed": true, "percent": 9, "threshold": 10 }, "tasks": 150 } }
Response 400 Bad Request
The 400 (Bad Request) status code indicates that the request cannot be processed by the server due to a client error (e.g. malformed request syntax)
{ "error": { "code": "InvalidSchedulesRequest", "details": [{ "code": "InvalidValue", "message": "The 'threshold' property must be between 0 and 100.", "target": "missingLogic.threshold" }, { "code": "InvalidValue", "message": "The 'duration' property must be between 0 and 2147483647.", "target": "highDuration.duration" } ], "message": "The request contains invalid properties." } }
Response 401 Unauthorized
This response indicates that request lacks valid authentication credentials. Access token might not been provided, issued by the wrong issuer, does not have required scopes or request headers were malformed.
{ "error": { "code": "HeaderNotFound", "message": "Header Authorization was not found in the request. Access denied." } }
Response 404 Not Found
This response indicates that the provided Schedule is not available.
{ "error": { "code": "ScheduleNotFound", "message": "Requested Schedule is not available.", "target": "scheduleId" } }
Response 409 Conflict
Indicates that the DCMA 14-point assessment cannot be performed in the current state.
{ "error": { "code": "RescheduleNotInitialized", "message": "Schedule must be rescheduled before performing DCMA 14-point assessment." } }
Response 429 Too many requests
This response indicates that the client sent more requests than allowed by this API for the current tier of the client.
{ "error": { "code": "RateLimitExceeded", "message": "The client sent more requests than allowed by this API for the current tier of the client." } }
Response headers
Number of seconds to wait until client is allowed to make more requests.
DCMA 14-Point Assessment Report
The result of a DCMA 14-point assessment.
The date and time when the DCMA 14-point assessment was performed.
Specifies whether hammock tasks were ignored in the assessment.
Specifies whether summary tasks were ignored in the assessment.
Total number of task links assessed.
Specifies whether the overall assessment passed.
Total number of tasks assessed.
{ "title": "DCMA 14-Point Assessment Report", "type": "object", "properties": { "assessmentDate": { "type": "string", "description": "The date and time when the DCMA 14-point assessment was performed.", "format": "date-time" }, "baselineExecutionIndex": { "$ref": "#/components/schemas/DcmaIndexCheckResult", "description": "Result of the baseline execution index check." }, "criticalPathLengthIndex": { "$ref": "#/components/schemas/DcmaIndexCheckResult", "description": "Result of the critical path length index check." }, "criticalPathTest": { "$ref": "#/components/schemas/DcmaCriticalPathTestResult", "description": "Result of the critical path test." }, "hardConstraints": { "$ref": "#/components/schemas/DcmaCheckResult", "description": "Result of the hard constraints check." }, "highDuration": { "$ref": "#/components/schemas/DcmaHighDurationCheckResult", "description": "Result of the high duration check." }, "highFloat": { "$ref": "#/components/schemas/DcmaCheckResult", "description": "Result of the high float check." }, "ignoreHammockTasks": { "type": "boolean", "description": "Specifies whether hammock tasks were ignored in the assessment." }, "ignoreSummaryTasks": { "type": "boolean", "description": "Specifies whether summary tasks were ignored in the assessment." }, "invalidDates": { "$ref": "#/components/schemas/DcmaCheckResult", "description": "Result of the invalid dates check." }, "lags": { "$ref": "#/components/schemas/DcmaCheckResult", "description": "Result of the lags check." }, "leads": { "$ref": "#/components/schemas/DcmaCheckResult", "description": "Result of the leads check." }, "links": { "type": "integer", "description": "Total number of task links assessed.", "format": "int32" }, "missedTasks": { "$ref": "#/components/schemas/DcmaCheckResult", "description": "Result of the missed tasks check." }, "missingLogic": { "$ref": "#/components/schemas/DcmaCheckResult", "description": "Result of the missing logic check." }, "missingResources": { "$ref": "#/components/schemas/DcmaCheckResult", "description": "Result of the missing resources check." }, "negativeFloat": { "$ref": "#/components/schemas/DcmaCheckResult", "description": "Result of the negative float check." }, "passed": { "type": "boolean", "description": "Specifies whether the overall assessment passed." }, "relationshipTypes": { "$ref": "#/components/schemas/DcmaCheckResult", "description": "Result of the relationship types check." }, "tasks": { "type": "integer", "description": "Total number of tasks assessed.", "format": "int32" } }, "additionalProperties": false, "description": "The result of a DCMA 14-point assessment." }
DCMA 14-Point Assessment Request
Options for performing a DCMA 14-point assessment.
Specifies whether to ignore hammock tasks in the assessment.
Specifies whether to ignore summary tasks in the assessment.
{ "title": "DCMA 14-Point Assessment Request", "type": "object", "properties": { "baselineExecutionIndex": { "$ref": "#/components/schemas/DcmaCheckOptions", "description": "Options for the baseline execution index check.", "nullable": true }, "criticalPathLengthIndex": { "$ref": "#/components/schemas/DcmaCheckOptions", "description": "Options for the critical path length index check.", "nullable": true }, "hardConstraints": { "$ref": "#/components/schemas/DcmaCheckOptions", "description": "Options for the hard constraints check.", "nullable": true }, "highDuration": { "$ref": "#/components/schemas/DcmaHighDurationCheckOptions", "description": "Options for the high duration check.", "nullable": true }, "highFloat": { "$ref": "#/components/schemas/DcmaCheckOptions", "description": "Options for the high float check.", "nullable": true }, "ignoreHammockTasks": { "type": "boolean", "description": "Specifies whether to ignore hammock tasks in the assessment.", "nullable": true }, "ignoreSummaryTasks": { "type": "boolean", "description": "Specifies whether to ignore summary tasks in the assessment.", "nullable": true }, "invalidDates": { "$ref": "#/components/schemas/DcmaCheckOptions", "description": "Options for the invalid dates check.", "nullable": true }, "lags": { "$ref": "#/components/schemas/DcmaCheckOptions", "description": "Options for the lags check.", "nullable": true }, "leads": { "$ref": "#/components/schemas/DcmaCheckOptions", "description": "Options for the leads check.", "nullable": true }, "missedTasks": { "$ref": "#/components/schemas/DcmaCheckOptions", "description": "Options for the missed tasks check.", "nullable": true }, "missingLogic": { "$ref": "#/components/schemas/DcmaCheckOptions", "description": "Options for the missing logic check.", "nullable": true }, "missingResources": { "$ref": "#/components/schemas/DcmaCheckOptions", "description": "Options for the missing resources check.", "nullable": true }, "negativeFloat": { "$ref": "#/components/schemas/DcmaCheckOptions", "description": "Options for the negative float check.", "nullable": true }, "relationshipTypes": { "$ref": "#/components/schemas/DcmaCheckOptions", "description": "Options for the relationship types check.", "nullable": true } }, "additionalProperties": false, "description": "Options for performing a DCMA 14-point assessment." }
DCMA 14-Point Assessment Response
Container for DCMA 14-Point Assessment Report object.
{ "title": "DCMA 14-Point Assessment Response", "type": "object", "properties": { "report": { "$ref": "#/components/schemas/DcmaAssessmentReport", "description": "The DCMA 14-point assessment report." } }, "additionalProperties": false, "description": "Container for DCMA 14-Point Assessment Report object." }
DCMA Check Options
Options for a DCMA check.
The threshold percentage for the check. Must be between 0 and 100.
{ "title": "DCMA Check Options", "type": "object", "properties": { "threshold": { "type": "number", "description": "The threshold percentage for the check. Must be between 0 and 100.", "format": "double" } }, "additionalProperties": false, "description": "Options for a DCMA check." }
DCMA Check Result
Result of a DCMA check.
The number of violations found.
Specifies whether the check passed.
The percentage of items with the violation.
The threshold percentage used for the check.
{ "title": "DCMA Check Result", "type": "object", "properties": { "count": { "type": "integer", "description": "The number of violations found.", "format": "int32" }, "passed": { "type": "boolean", "description": "Specifies whether the check passed." }, "percent": { "type": "number", "description": "The percentage of items with the violation.", "format": "double" }, "threshold": { "type": "number", "description": "The threshold percentage used for the check.", "format": "double" } }, "additionalProperties": false, "description": "Result of a DCMA check." }
DCMA Critical Path Test Result
Result of the DCMA critical path test.
Specifies whether the critical path test passed.
{ "title": "DCMA Critical Path Test Result", "type": "object", "properties": { "passed": { "type": "boolean", "description": "Specifies whether the critical path test passed." } }, "additionalProperties": false, "description": "Result of the DCMA critical path test." }
DCMA High Duration Check Options
Options for the high duration DCMA check.
The maximum task duration in days beyond which tasks are considered high duration.
The threshold percentage for the check. Must be between 0 and 100.
{ "title": "DCMA High Duration Check Options", "type": "object", "properties": { "duration": { "type": "integer", "description": "The maximum task duration in days beyond which tasks are considered high duration.", "format": "int32" }, "threshold": { "type": "number", "description": "The threshold percentage for the check. Must be between 0 and 100.", "format": "double" } }, "additionalProperties": false, "description": "Options for the high duration DCMA check." }
DCMA High Duration Check Result
Result of the high duration DCMA check.
The number of violations found.
The duration threshold in days used for the check.
Indicates whether the check passed.
The percentage of items with the violation.
The threshold percentage used for the check.
{ "title": "DCMA High Duration Check Result", "type": "object", "properties": { "count": { "type": "integer", "description": "The number of violations found.", "format": "int32" }, "duration": { "type": "integer", "description": "The duration threshold in days used for the check.", "format": "int32" }, "passed": { "type": "boolean", "description": "Indicates whether the check passed." }, "percent": { "type": "number", "description": "The percentage of items with the violation.", "format": "double" }, "threshold": { "type": "number", "description": "The threshold percentage used for the check.", "format": "double" } }, "additionalProperties": false, "description": "Result of the high duration DCMA check." }
DCMA Index Check Result
Result of a DCMA index check.
The calculated index value.
Specifies whether the check passed.
The threshold value used for the check.
{ "title": "DCMA Index Check Result", "type": "object", "properties": { "index": { "type": "number", "description": "The calculated index value.", "format": "double" }, "passed": { "type": "boolean", "description": "Specifies whether the check passed." }, "threshold": { "type": "number", "description": "The threshold value used for the check.", "format": "double" } }, "additionalProperties": false, "description": "Result of a DCMA index check." }
DetailedError
Contains error information and an array of more specific errors.
One of a server-defined set of error codes.
A human-readable representation of the error.
The target of the error.
{ "type": "object", "description": "Contains error information and an array of more specific errors.", "properties": { "code": { "type": "string", "description": "One of a server-defined set of error codes." }, "message": { "type": "string", "description": "A human-readable representation of the error." }, "target": { "type": "string", "description": "The target of the error.", "nullable": true }, "details": { "type": "array", "description": "Optional array of more specific errors.", "items": { "$ref": "#/components/schemas/Error" } } }, "required": [ "code", "message", "details" ], "additionalProperties": true }
Detailed Error Response
Gives details for an error that occurred while handling the request. Note that clients MUST NOT assume that every failed request will produce an object of this schema, or that all of the properties in the response will be non-null, as the error may have prevented this response from being constructed.
{ "type": "object", "title": "Detailed Error Response", "description": "Gives details for an error that occurred while handling the request. Note that clients MUST NOT assume that every failed request will produce an object of this schema, or that all of the properties in the response will be non-null, as the error may have prevented this response from being constructed.", "properties": { "error": { "description": "Error Detailed information.", "$ref": "#/components/schemas/DetailedError" } }, "required": [ "error" ], "additionalProperties": false }
Error
Contains error information.
One of a server-defined set of error codes.
A human-readable representation of the error.
The target of the error.
{ "type": "object", "description": "Contains error information.", "properties": { "code": { "type": "string", "description": "One of a server-defined set of error codes." }, "message": { "type": "string", "description": "A human-readable representation of the error." }, "target": { "type": "string", "description": "The target of the error.", "nullable": true } }, "required": [ "code", "message" ], "additionalProperties": true }
Error Response
Gives details for an error that occurred while handling the request. Note that clients MUST NOT assume that every failed request will produce an object of this schema, or that all of the properties in the response will be non-null, as the error may have prevented this response from being constructed.
{ "type": "object", "title": "Error Response", "description": "Gives details for an error that occurred while handling the request. Note that clients MUST NOT assume that every failed request will produce an object of this schema, or that all of the properties in the response will be non-null, as the error may have prevented this response from being constructed.", "properties": { "error": { "description": "Error information.", "$ref": "#/components/schemas/Error" } }, "required": [ "error" ], "additionalProperties": false }
Was this page helpful?