Track Budget Performance with Breakdowns
This tutorial demonstrates how to use the Cost Management API to track the performance of a project budget with breakdowns using timesheets. A performance tracking item (which represents a budget) is tracked by one or more timesheets, each associated with one of the tracking item’s instances. The tutorial breaks out the tracking data to track each of the timesheets associated with a given budget. The steps include retrieving a tracking item instance, logging and aggregating the instance’s timesheets, synchronizing the timesheets with Autodesk Cost Management, and adjusting the forecast.
Note that the Cost API timesheets endpoints used in this tutorial are designed only for use with a third party timesheet reporting (tracking) app (e.g. Riskcast, Rhumbix, QuickBooks Time, or ClickUp) that you’ve integrated with Cost Management.
Before You Begin
- Register an app.
- Acquire a 3-legged OAuth token with
data:create
,data:read
, anddata:write
scopes. - Verify that you have access to the relevant BIM 360 account and project.
- Have your project’s
projectId
and the appropriate Cost ManagementcontainerId
, or acquire one: Retrieve a Cost Container ID.
Step 1: Retrieve a Tracking Item Instance from Autodesk Cost Management
To obtain the ID of the tracking item instance you want to retrieve, use the project’s cost container ID (e94b9bc8-1775-4d76-9b1d-c613e120ccff
in this example) to call GET performance-tracking-item-instances.
Request
curl -X GET 'https://developer.api.autodesk.com/cost/v1/containers/e94b9bc8-1775-4d76-9b1d-c613e120ccff/performance-tracking-item-instances?limit=20&offset=0'
\ -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsImtpZCI6Imp3dF9zeW1tZXRyaWNfa2V5In0'
Response
{
"pagination": {
"limit": 20,
"offset": 0,
"totalResults": 1,
"nextUrl": "..."
},
"results": [
{
"id": "1df59db0-9484-11e8-a7ec-7ddae203e404",
"trackingItemId": "c06ab5f6-7015-498b-afc1-572d2d4df44f",
"budgetCode": "84720010121001FEE",
"number": "84720010121001FEE-0001",
"name": "Concrete",
"inputUnit": "hr",
"inputQuantity": "100",
"inputUnitPrice": "100.0000",
"outputUnit": "cy",
"outputQuantity": "10",
"outputUnitPrice": "1000.0000",
"trackedInputQuantity": "0",
"trackedOutputQuantity": "0",
"adjustedOutputQuantity": "0",
"performanceRatio": "1",
"locations": "4912f52b-4bf2-4651-a80c-2c30f515c826",
"creatorId": "GF8XKPKWM38E",
"changedBy": "GF8XKPKWM38E",
"createdAt": "2019-01-06T01:24:22.678Z",
"updatedAt": "2019-09-05T01:00:12.989Z"
}
]
}
Note the tracking item instance ID (results.id
) — 1df59db0-9484-11e8-a7ec-7ddae203e404
, the budget code (results.budgetCode
) — 84720010121001FEE
, and the item instance sequence number (results.number
) — 84720010121001FEE-0001
in the response.
Step 2: Log and Aggregate the Timesheets
A field user uses your integrated tracking app to log their progress in the app’s timesheets against the tracking item instance ID noted in the previous step.
The tracking app aggregates the inputQuantity
and outputQuantity
values entered by the user into timesheets by day and tracking instance, distinguished, for example, by location. Assume the unit of measurement of inputQuantity
to be hr
(hour).
Step 3: Synchronize Timesheets with Autodesk Cost Management
To capture the timesheet data from your tracking app, use the tracking item instance ID noted in step 1 (1df59db0-9484-11e8-a7ec-7ddae203e404
) to call POST time-sheets to create a timesheet object for the specified tracking item instance.
You can apply a time range (startDate
and endDate
) if the timesheet data covers multiple days, and the required endDate
will be used to calculate the tracking item instance performance. Also required are inputQuantity
and outputQuantity
.
Request
curl -X POST 'https://developer.api.autodesk.com/cost/v1/containers/e94b9bc8-1775-4d76-9b1d-c613e120ccff/time-sheets'
\ -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsImtpZCI6Imp3dF9zeW1tZXRyaWNfa2V5In0'
\ -H 'Content-Type: application/json'
\ -d '{
"trackingItemInstanceId": "1df59db0-9484-11e8-a7ec-7ddae203e404",
"startDate": "2022-05-06",
"endDate": "2022-05-06",
"inputQuantity": 100,
"outputQuantity": 5
}'
Response
{
"id": "7896c6b0-b813-11ed-ab16-511fe7f6873f",
"startDate": "2022-05-06",
"endDate": "2022-05-06",
"inputQuantity": 100,
"inputUnit": "hr",
"outputQuantity": 5,
"outputUnit": "ea",
"trackingItemInstanceId": "1df59db0-9484-11e8-a7ec-7ddae203e404"
}
Step 4: Adjust the Forecast
The cost engineer analyzes the performance by tracking item instance, then creates a forecast adjustment.