Table of contents
Schedules
Download API definition:
This API is a Technical Preview and is available for testing purposes only. Do not use in production.
POST https://dev-api.bentley.com/schedules/{scheduleId}/quality/dcma/analyze

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

Name
Required?
Description
scheduleId
Yes

The unique identifier of the Schedule.

Request headers

Name
Required?
Description
Authorization
Yes

OAuth access token with itwin-platform scope

Accept
Yes

Setting to application/vnd.bentley.itwin-platform.v1+json is recommended.

Request body

DCMA 14-Point Assessment Request

Name
Type
Required?
Description
baselineExecutionIndex
No

Options for the baseline execution index check.

criticalPathLengthIndex
No

Options for the critical path length index check.

hardConstraints
No

Options for the hard constraints check.

highDuration
No

Options for the high duration check.

highFloat
No

Options for the high float check.

ignoreHammockTasks
Boolean, null
No

Specifies whether to ignore hammock tasks in the assessment.

ignoreSummaryTasks
Boolean, null
No

Specifies whether to ignore summary tasks in the assessment.

invalidDates
No

Options for the invalid dates check.

lags
No

Options for the lags check.

leads
No

Options for the leads check.

missedTasks
No

Options for the missed tasks check.

missingLogic
No

Options for the missing logic check.

missingResources
No

Options for the missing resources check.

negativeFloat
No

Options for the negative float check.

relationshipTypes
No

Options for the relationship types check.

Example

json
{
    "highDuration": {
        "duration": 44,
        "threshold": 5
    },
    "ignoreHammockTasks": false,
    "ignoreSummaryTasks": true,
    "lags": {
        "threshold": 5
    },
    "leads": {
        "threshold": 0
    },
    "missingLogic": {
        "threshold": 5
    }
}

Response 200 OK

OK

json
{
    "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)

json
{
    "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.

json
{
    "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.

json
{
    "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.

json
{
    "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.

json
{
    "error": {
        "code": "RateLimitExceeded",
        "message": "The client sent more requests than allowed by this API for the current tier of the client."
    }
}

Response headers

Name
Description
retry-after

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.

Name
Type
Description
assessmentDate
Date-time

The date and time when the DCMA 14-point assessment was performed.

baselineExecutionIndex

Result of the baseline execution index check.

criticalPathLengthIndex

Result of the critical path length index check.

criticalPathTest

Result of the critical path test.

hardConstraints

Result of the hard constraints check.

highDuration

Result of the high duration check.

highFloat

Result of the high float check.

ignoreHammockTasks
Boolean

Specifies whether hammock tasks were ignored in the assessment.

ignoreSummaryTasks
Boolean

Specifies whether summary tasks were ignored in the assessment.

invalidDates

Result of the invalid dates check.

lags

Result of the lags check.

leads

Result of the leads check.

links
Int32

Total number of task links assessed.

missedTasks

Result of the missed tasks check.

missingLogic

Result of the missing logic check.

missingResources

Result of the missing resources check.

negativeFloat

Result of the negative float check.

passed
Boolean

Specifies whether the overall assessment passed.

relationshipTypes

Result of the relationship types check.

tasks
Int32

Total number of tasks assessed.

DCMA 14-Point Assessment Request

Options for performing a DCMA 14-point assessment.

Name
Type
Description
baselineExecutionIndex

Options for the baseline execution index check.

criticalPathLengthIndex

Options for the critical path length index check.

hardConstraints

Options for the hard constraints check.

highDuration

Options for the high duration check.

highFloat

Options for the high float check.

ignoreHammockTasks
Boolean, null

Specifies whether to ignore hammock tasks in the assessment.

ignoreSummaryTasks
Boolean, null

Specifies whether to ignore summary tasks in the assessment.

invalidDates

Options for the invalid dates check.

lags

Options for the lags check.

leads

Options for the leads check.

missedTasks

Options for the missed tasks check.

missingLogic

Options for the missing logic check.

missingResources

Options for the missing resources check.

negativeFloat

Options for the negative float check.

relationshipTypes

Options for the relationship types check.

DCMA 14-Point Assessment Response

Container for DCMA 14-Point Assessment Report object.

Name
Type
Description
report

The DCMA 14-point assessment report.

DCMA Check Options

Options for a DCMA check.

Name
Type
Description
threshold
Double

The threshold percentage for the check. Must be between 0 and 100.

DCMA Check Result

Result of a DCMA check.

Name
Type
Description
count
Int32

The number of violations found.

passed
Boolean

Specifies whether the check passed.

percent
Double

The percentage of items with the violation.

threshold
Double

The threshold percentage used for the check.

DCMA Critical Path Test Result

Result of the DCMA critical path test.

Name
Type
Description
passed
Boolean

Specifies whether the critical path test passed.

DCMA High Duration Check Options

Options for the high duration DCMA check.

Name
Type
Description
duration
Int32

The maximum task duration in days beyond which tasks are considered high duration.

threshold
Double

The threshold percentage for the check. Must be between 0 and 100.

DCMA High Duration Check Result

Result of the high duration DCMA check.

Name
Type
Description
count
Int32

The number of violations found.

duration
Int32

The duration threshold in days used for the check.

passed
Boolean

Indicates whether the check passed.

percent
Double

The percentage of items with the violation.

threshold
Double

The threshold percentage used for the check.

DCMA Index Check Result

Result of a DCMA index check.

Name
Type
Description
index
Double

The calculated index value.

passed
Boolean

Specifies whether the check passed.

threshold
Double

The threshold value used for the check.

DetailedError

Contains error information and an array of more specific errors.

Name
Type
Description
code
String

One of a server-defined set of error codes.

message
String

A human-readable representation of the error.

target
String, null

The target of the error.

details

Optional array of more specific errors.

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.

Name
Type
Description
error

Error Detailed information.

Error

Contains error information.

Name
Type
Description
code
String

One of a server-defined set of error codes.

message
String

A human-readable representation of the error.

target
String, null

The target of the error.

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.

Name
Type
Description
error

Error information.

Was this page helpful?