YouTrack Standalone 7.0 Help

Notify Reporter to Approve Fix

This workflow sends notification to the user who reported an issue when the issue is resolved.

File Namejetbrains-youtrack-notifyReporterToApproveFix
Auto-attachedno
RulesSend specific notification to reporter to approve fix (stateless)
State lifecycle with verification by reporter (state-machine)

Use Case

This workflow was originally taken from a submitted request (JT-7821).

The user who submitted this issue wanted to make sure that the resolution of an issue could be approved by the user who reported the issue.

Here's how it works:

  1. The reporter creates an issue.
  2. The issue is fixed, and status is set to fixed (and is built and deployed by TeamCity).
  3. When the ticket is deployed (in a test/stage or production environment) the status is set to Pending verification in Test/production (either manually by the developer or automatically based on some status information from TeamCity).
  4. Notification is sent to the reporter.
  5. The reporter tests the issue in the suitable environment and determines that
    • it is fixed and approves the issue and it is closed (or has a state of approved or something like it)
    • it is still not working, and is returned to the developer as "not approved" (or project lead or something).

Rules

This workflow includes two rules. The first rule is used to send notifications and the second manages the lifecycle of an issue.

Send specific notification to reporter to approve fix

The first rule notifies the user who reported the issue and sets the reporter as the assignee.

When an issue is updated, this rule checks whether the state was changed to Pending verification. If true, then:

  • The reporter is notified.
  • The reporter is set as the Assignee of the issue.
rule Send specific notification to reporter to approve fix when State.becomes({Pending verification}) { reporter.notify(l10n ( Please approve fix for the issue {getId()} ), l10n ( You have reported issue {getId()} . Please verify the applied fix for the issue and set the appropriate state. )); Assignee = reporter; }

State lifecycle with verification by reporter

The next rule defines the lifecycle for issues to support this use case.

This rule defines the following transitions for issue states:

  1. An issue starts with the state Submitted.
  2. From the initial state, an issue can only transition to the following state:
    • On event (action) Open, the state is set to Open.
  3. From the Open state, an issue can only transition to the following state:
    • On event (action) Fix, the state is set to Fixed.
  4. When the state is set to Fixed, the user is forced to set the Fixed in build field.
  5. From the Fixed state, an issue can only transition to the following state:
    • On event (action) Send for verification, the state is set to Pending for verification.
  6. When the state is set to Pending for Verification, the reporter is set as the Assignee. The reporter is notified and asked to approve the fix.
  7. From the Pending for Verification state, an issue can only transition to the following states:
    • On event (action) Approve, the state is set to Verified.
    • On event (action) Re-open, the state is set to Open.
  8. From the Open state, the issue can only transition to Fixed.
  9. From the Verified state, no further state transitions are allowed.
statemachine State lifecycle with verification by reporter for field State { initial state Submitted { on Open [always] do {<define statements>} transit to Open } state Open { on Fix [always] do {<define statements>} transit to Fixed } state Fixed { enter { Fixed in build.required("Please set 'Fixed in build' value."); } on Send for verification [always] do {<define statements>} transit to Pending verification } state Pending verification { enter { Assignee = reporter; reporter.notify(l10n ( Please approve fix for the issue {getId()}, l10n ( You have reported issue {getId()} . Please verify the applied fix for the issue and set the appropriate state. )); } on Approve [always] do {<define statements>} transit to Verified on Re-open [always] do {<define statements>} transit to Open } state Verified { on Re-open [always] do {<define statements>} transit to Open } }
Last modified: 29 September 2016