Process Cc'd Jira user addresees into specific jira user fields with consideration of Project Roles

This script can be used either on Script Field Processor (https://thepluginpeople.atlassian.net/wiki/spaces/JEMH/pages/227115013 ) which means it is triggered depending on your Directive Processing Behaviour as set mentioned here https://thepluginpeople.atlassian.net/wiki/spaces/JEMH/pages/227115013/Use+Script+Field+Processor#Enable-Directives.

If required in a specific Project Mapping the Script Rule (https://thepluginpeople.atlassian.net/wiki/spaces/JEMH/pages/223739905) Please note however the limitation for the Script Rule is that it is processed only during issue creation. This is because it is a Mapping Rule this means it only applies during creation.

Useful background knowledge

We will making use of directives via the resultMap.put(<directive>, <param) more information on directives here . Supported fields for directives here: .

Prequisites

Project ID

You will need this Project ID to find the Project Object in the script. This can be found via Project Settings > Details in the URL bar of your browser it will be listed as a query parameter as shown below:

Project Role ID

You can find this via Jira Administration > Security > Project Roles then edit the desired role.

Similarly to Project ID you will find the Project Role ID in the URL bar as a query parameter:

Example Script

//Go through each address in ccAddresses for(var i = 0;i < ccAddresses.length; i++) { //determine is email address is a jira user. var emailAddress = ccAddresses[i].getAddress(); print("[" + emailAddress + "] detected email address"); var jiraUser = jemhUtils.getUserByEmail(emailAddress); if(jiraUser == null) { print("["+ emailAddress + "] was not an email address related to a Jira User"); } else { print("processing email and attempting to find related users"); //get current project use your own project id here. var project = jemhUtils.getProjectContext(10300).getProjectObject(); print("["+project.getName()+"] Project Found"); //get required project role use your own project id here. var projectRole = projectRoleManager.getProjectRole(10101); print("["+projectRole.getName()+"] Project Role Found"); //check if the user is in the role var isInProjectRole = projectRoleManager.isUserInProjectRole(jiraUser, projectRole, project); print("Is user in the Project Role"+"["+projectRole.getName()+"] returned ["+isServiceDeskTeamRole+"]"); //user is in the role then add them to watcher if(isInProjectRole) { print("["+ emailAddress + "] will be added to watchers"); resultMap.put("watchers", jiraUser.getUsername()); } //Any other Jira user is added to request participants else { print("["+ emailAddress + "] will be added to request participants"); resultMap.put("Request participants", jiraUser.getUsername()); } } }

Outcome

The result of this example script is that if a non-jira user is found then it will be logged in the report. However if a
Jira user is found then:

  • If the user is not in the Service Desk Team Role then they will be added to request participants

  • If the user is Service Desk Team Role then they will be added to watchers