Post-function script to set Assignee based on previously assigned group

Rishit November 28, 2016
 

1 answer

1 accepted

1 vote
Answer accepted
Vasiliy Zverev
Rising Star
Rising Star
Rising Stars are recognized for providing high-quality answers to other users. Rising Stars receive a certificate of achievement and are on the path to becoming Community Leaders.
November 28, 2016

Try this:

import com.atlassian.jira.component.ComponentAccessor
import com.atlassian.jira.issue.MutableIssue

List<String> groups = ComponentAccessor.getGroupManager().getGroupNamesForUser(issue.getAssignee())

//Repeat this block for each case
if(groups.contains("group1")){
    issue.setAssigneeId("user1");
    return;
}
Rishit November 28, 2016

Thank you,

I will try this and let you know.

 

 

Rishit November 28, 2016

Hey Vasiliy,

Here the scenario is if ( Customfield = X)

set Assignee "Previously assigned IT MANAGER"

set Assigned Team 'IT SOFTWARE'  If( Customfield = Y)

Can you please help me out script for this scenario.

Thanks,

Rishit

 

Vasiliy Zverev
Rising Star
Rising Star
Rising Stars are recognized for providing high-quality answers to other users. Rising Stars receive a certificate of achievement and are on the path to becoming Community Leaders.
November 28, 2016

I hope it is what you want:

import com.atlassian.jira.component.ComponentAccessor
import com.atlassian.jira.issue.Issue
import com.atlassian.jira.issue.MutableIssue
import com.atlassian.jira.issue.changehistory.ChangeHistory
import com.atlassian.jira.issue.changehistory.ChangeHistoryManager
import com.atlassian.jira.issue.fields.CustomField
import com.atlassian.jira.issue.history.ChangeItemBean
import com.atlassian.jira.security.groups.GroupManager

CustomField customField = ComponentAccessor.getCustomFieldManager().getCustomFieldObjectByName("fieldName")

GroupManager groupManager = ComponentAccessor.getGroupManager();

switch ((String) issue.getCustomFieldValue(customField)){
    case "X":
        //lool for assignee from group  IT MANAGER
        List<ChangeItemBean> managersAssignee = new ArrayList<>()
        ChangeHistoryManager changeHistoryManager = ComponentAccessor.getChangeHistoryManager();
        for(ChangeHistory changeHistory: changeHistoryManager.getChangeHistories(issue)){
            for(ChangeItemBean bean: changeHistory.getChangeItemBeans()){
                if(bean.getField().equals("assignee")){
                    if(groupManager.isUserInGroup(bean.getTo(), "IT MANAGER"))
                        managersAssignee.add(bean)
                }                    
            }
        }
    
        managersAssignee.sort(new Comparator<ChangeItemBean>() {
            @Override
            int compare(ChangeItemBean o1, ChangeItemBean o2) {
                return o1.getCreated().after(o2.getCreated()) ? 1: 0;
            }
        })
        if(managersAssignee.size() > 0)
            issue.setAssigneeId(managersAssignee.get(0))
    
        break;
    
    case "Y":  
        CustomField assignedTeam = ComponentAccessor.getCustomFieldManager().getCustomFieldObjectByName("Assigned Team")
        issue.setCustomFieldValue(assignedTeam, groupManager.getGroupObject("IT SOFTWARE"))
        break;
}

Suggest an answer

Log in or Sign up to answer