Locking Issues


Required apps

Power Actions™ for Jira

Level:  INTERMEDIATE

Problem

Once in a while it happens that we want to lock an issue, where by lock I mean that only the assignee of that issue can play with it. There's an open ticket about this with Atlassian, and Power Actions™ helps resolve it.

This example shows you how to do that by using Power Actions™ and the Issue Security Scheme.

Solution

The idea is to create two actions: Lock and Unlock that only the assignee of the issue will see and a security level (Locked) that will only allow the assignee to see the issue.

  • The Lock action will set the security level to Locked
  • The Unlock action will set the security level back to none.

Now you're probably wondering "Why do i need Power Actions™ to do this? Why can't the user set the security level himself?". Well, there are a number of reasons for this; what if we don't want the assignee to have the "Set Issue Security Level" permission? Or what if we don't want them to be able to edit the issue at all, but only log work or comment on it? Even if they do have the "Set Issue Security Level", not having "Edit issue" permission will prevent them from locking the issue.

Create the security level

Now let's get working. First off, we must create the security level, which looks like this:

Create the actions

Once we've done that, it's time to create the actions. We will create two actions Lock and Unlock.

For the conditions, we will disable the Lock button if the security level is already Locked, and disable the Unlock button if the security level is empty. Of course, we will only show the buttons to the current assignee.

Lock button condition script
number ENABLED = 1;
number DISABLED = 2;
number HIDDEN = 3;

if( assignee != currentUser()) {
 return HIDDEN;
}

if( securityLevel == "Locked" ){
 	return DISABLED;
}
return ENABLED;
Unlock button condition script
number ENABLED = 1;
number DISABLED = 2;
number HIDDEN = 3;

if( assignee != currentUser()) {
 return HIDDEN;
}

if(isNull(securityLevel)) {
 	return DISABLED;
}
return ENABLED;


Now that we have the conditions, it's time to do the actual scripts. For the Lock button we will set the issue security to Locked and for the Unlock button we will set it to none.

Lock button script
securityLevel = "Locked";
Unlock button script
 securityLevel = "";

Testing

That's it! Now let's test it.


Instead of current assignee, we could set the value of a user picker as the allowed user, and change the value of the custom field to the current user when locking an issue, thus resolving a common problem exposed here: https://jira.atlassian.com/browse/JRA-6146

See also