Skip to main content
Version: Release 23.3

Risk Awareness

Release calculates a risk level for each release based on different factors such as flags, failed or failing states, or due dates. You can see the releases with a high risk level and take the appropriate actions.

In the release overview, you can see if a release has a high risk level. An icon next to the release indicates the risk level.

image Shows At risk state, the reason (Example: Release has tasks flagged as red.), and a message (Example: Task name: Flag comment)

image Shows Attention needed state, the reason (Example: Release has tasks flagged as amber.), and a message (Example: Task name: Flag comment)

image Shows On track state when the release is on track.

Click the icon to see the detailed risk information and the risk score.

image

Important To order the release overview by risk level, click Order by and select Risk. The sorting is done based on risk calculation, displaying the release with the maximum risk score at the top. If multiple releases have the same maximum risk score, a second sorting rule is applied calculating the total risk sum for each release.

Risk assessors

These are the risk assessors used to calculate the risk level of a release:

  • Release flags: Red or Amber
  • Release state: Failed or Failing
  • Task flags: Red or Amber
  • Release past due date
  • Current task past due date
  • Retries for a failed task

Custom risk assessors

Release allows you to create custom risk assessors. To do that, extend the RiskAssessor class with the execute method implemented where any new risk condition is defined. Example:

@Metadata(label = "ReleaseFlaggedAtRiskAssessor", versioned = false)
public class ReleaseFlaggedAtRiskAssessor extends RiskAssessor {

private static final String RELEASE_AT_RISK_HEADLINE = "Release is flagged as red";
private static final String RELEASE_FLAGGED_MESSAGE = "%s: %s";

@Override
public RiskAssessment execute(final Release release, final RiskProfile riskProfile) {
RiskAssessment assessment = new RiskAssessment();
assessment.setRiskAssessorId(this.getId());

List<String> messages = new ArrayList<>();

if (release.getFlagStatus() == FlagStatus.AT_RISK) {
assessment.setScore(riskProfile.getValueFor(getType()));
assessment.setHeadline(RELEASE_AT_RISK_HEADLINE);
messages.add(getMessage(release.getTitle(), release.getFlagComment()));
} else {
assessment.setScore(OK_SCORE);
assessment.setHeadline(OK_HEADLINE);
}

assessment.setMessages(messages);
return assessment;
}

private String getMessage(String releaseTitle, String flagComment) {
return format(RELEASE_FLAGGED_MESSAGE, releaseTitle, ofNullable(flagComment).orElse(""));
}
}

Markdown in risk assessment messages

In Release 8.6.0 and later, assessment messages support Markdown which allows you to format them with hyperlinks and custom icons. For example:

return String.format("[release forecast](%s)", url);

The default risk threshold:

FlagScoreDescription
Red50 - 100The release is at risk.
Amber10 - 49The release requires attention.
Green< 10The release is on track.

The default risk score

The default values for the risk assessors are used in the default risk profile. For more information about risk profiles, see Configure risk profile settings.

Risk assessorScore
Release flagsRed - 80
Amber - 30
Release stateFailed - 90
Failing - 70
Task red flagRed
* 1 red flag: 65
* 2-3 red flags: 70
* 4-6 red flags: 75
* >6 red flags: 80
Task amber flagAmber
* 1 amber flag: 10
* 2-3 amber flags: 20
* 4-6 amber flags: 30
* >6 amber flags: 40
Release past due date30
Task past due date1 task - 25
>1 task - 35
Retries for failed taskTask failed once - 50
Risk score increases by 10 for each subsequent task failure
When task failed more than 6 times, the score is 100