Custom Progress Metrics

📘

Supported Targetprocess version is 3.13.10.

Default Targetprocess logic for progress calculation is quite complex. It takes into account Role Efforts, Time Spent, Time Remain, child entities. Check the detailed article on progress calculation. These complications are not always necessary. Sometimes, there is a need to measure progress differently.
Starting with the Targetprocess version 3.13.10, custom progress metrics are available.

A new Progress Metric can be created at Settings > Metrics > Add > Custom Formula. Select Progress as a Target Field.

966966

The progress of an entity can be based on the Time Spent and Effort, on the selected State, on the custom field values of the entity itself or its children, or any other field.

🚧

Progress formula should produce a value between 0 and 1. Values outside of that range will be ignored.

Below you will find several examples of progress calculation.

Progress based on Entity State

IIF(EntityState.isInitial, 0, IIF(EntityState.Name = 'In Progress', 0.8, 1))
682682

Progress based on Custom Field value

IIF(CustomValues.Text("Fix Delivered") = 'Prod', 1, 
IIF(CustomValues.Text("Fix Delivered") = 'Sandbox', 0.75, 
IIF(CustomValues.Text("Fix Delivered") = 'Staging', 0.4, 0)))
688688

Cumulative Progress based on Checkbox Custom Fields

IIF(CustomValues.Boolean("Idea Accepted") = true, 0.1, 0) + 
IIF(CustomValues.Boolean("In Development") = true, 0.3, 0) + 
IIF(CustomValues.Boolean("Released") = true, 0.4, 0) + 
IIF(CustomValues.Boolean("Promoted") = true, 0.2, 0)
941941

Progress based on the number of completed children

Calculate the Progress of Features based on the number of completed User Stories

IIF(UserStories.Count>0,UserStories.Count(EntityState.isFinal) / UserStories.Count(),0)
612612

Progress based on Time Spent and Effort

// Formula that ignores entity state. Even if an entity is in the final state, the progress may be less than 100%
IIF(TimeSpent > Effort, 1, IIF(Effort>0, TimeSpent/Effort, 0))

// Formula that considers the final state as 100% progress
IIF(TimeSpent > Effort or EntityState.isFinal, 1, IIF(Effort>0,TimeSpent / Effort, 0))
650650

Progress based on the value in Drop Down Custom Field

Given a drop down custom field has the list of values: 0%, 10%, 20%, ..., 100%

Convert.toint32(CustomValues.Text("Manual Progress").Substring(0,CustomValues.Text("Manual Progress").IndexOf("%")))/100
641641

Progress for Feature that includes both User Stories and Bugs

IIF(EntityState.IsFinal=true,1,IIF(Effort+Bugs.Sum(Effort)>0,(EffortCompleted+Bugs.Sum(EffortCompleted))/(Effort+Bugs.Sum(Effort)),0))
584584