Create
cancel
Showing results for 
Search instead for 
Did you mean: 
Sign up Log in

Single select field is not getting set correctly based on keyworkds in Issue Summary and Description

Chhaya Gadade
I'm New Here
I'm New Here
Those new to the Atlassian Community have posted less than three times. Give them a warm welcome!
September 27, 2022

Hi Team,

  I am trying to set Single select field called Assigned HR Group field based on Keywords in issue Summary and Description.I am using Jira Data center 8.20 and Scriptrunner.

 

I am attching code here.Please help me.

import com.atlassian.jira.component.ComponentAccessor

import com.atlassian.jira.issue.fields.CustomField

import com.atlassian.jira.issue.MutableIssue

import com.atlassian.jira.issue.Issue

import com.atlassian.jira.issue.ModifiedValue

import com.atlassian.jira.issue.customfields.manager.OptionsManager

import org.apache.log4j.Logger

import org.apache.log4j.Level

import com.atlassian.jira.event.type.EventDispatchOption

import com.atlassian.jira.user.util.UserManager

 import com.atlassian.jira.issue.ModifiedValue

import com.atlassian.jira.issue.util.DefaultIssueChangeHolder

import com.atlassian.jira.bc.issue.IssueService;

import com.atlassian.jira.bc.issue.IssueService.UpdateValidationResult;

import com.atlassian.jira.bc.issue.IssueService.IssueResult;

import com.atlassian.jira.user.ApplicationUser

import com.atlassian.jira.issue.IssueInputParameters;

 

def log = Logger.getLogger("com.acme.CreateSubtask")

log.setLevel(Level.DEBUG)

 

String[] MRC_keywords = [" Research ", " research "]

String[] HRIS_keywords = ["HRQA", " HRISX "]

String[] ESC_keywords = [" insurance "," pension ", " retirement", " leave ", " benefit ", " benefits "]

String[] WOD_keywords = [" kronos " ]

def issueManager = ComponentAccessor.getIssueManager()

 

//def issue = issueManager.getIssueObject("HR-397")

 def issue = event.issue as Issue

issue = issue as MutableIssue

def userManager = ComponentAccessor.getUserManager() as UserManager

def full_data = issue.summary + " " + issue.description

def user = ComponentAccessor.getUserManager().getUserByName("localadmin")

def loggedUser = ComponentAccessor.getJiraAuthenticationContext().getLoggedInUser()

def customFieldManager = ComponentAccessor.getCustomFieldManager()

def optionsManager = ComponentAccessor.getOptionsManager()

def cf = customFieldManager.getCustomFieldObjectsByName("Assigned HR Group").first()

 

IssueInputParameters issueInputParameters = ComponentAccessor.issueService.newIssueInputParameters();

 

log.debug("Full Data")

log.debug(full_data)

def customFieldId = 12670

def customField = customFieldManager.getCustomFieldObject(customFieldId)

def customFieldValue = issue.getCustomFieldValue(customField)

def customFieldConfig = customField.getRelevantConfig(issue)

 

                                                                                                                   

 for (keyword in MRC_keywords)

{

    def cfNewValue = ComponentAccessor.optionsManager.getOptions(customFieldConfig)?.find

{

    it.toString() == "MRC"

}

customField.updateValue(null, issue, new ModifiedValue(customFieldValue, cfNewValue), new DefaultIssueChangeHolder()) 

        return null;

 

}

 

for (keyword in HRIS_keywords)

{

    def cfNewValue = ComponentAccessor.optionsManager.getOptions(customFieldConfig)?.find

{

    it.toString() == "HRIS"

}

customField.updateValue(null, issue, new ModifiedValue(customFieldValue, cfNewValue), new DefaultIssueChangeHolder()) 

        return null;

 

}

 

 

for (keyword in ESC_keywords)

{

    def cfNewValue = ComponentAccessor.optionsManager.getOptions(customFieldConfig)?.find

{

    it.toString() == "ESC/Benefits"

}

customField.updateValue(null, issue, new ModifiedValue(customFieldValue, cfNewValue), new DefaultIssueChangeHolder()) 

        return null;

 

}

 

for (keyword in WOD_keywords)

{

    def cfNewValue = ComponentAccessor.optionsManager.getOptions(customFieldConfig)?.find

{

    it.toString() == "WOD"

}

customField.updateValue(null, issue, new ModifiedValue(customFieldValue, cfNewValue), new DefaultIssueChangeHolder()) 

        return null;

 

}

 

 

String[] MRC_keywords1 = ["ePerformance", "Promotion", "Career Ladder", "eWork", "Associated Personnel", "Joint Appointee Status", "Research Fellow", "Group Access", "Direct Report", "Salary Change", "Exit Interview", "SharePoint Access", "Job Description", "Salary Range", "Policy Manual", "Job Code", "Physician promotion", "Job aids", "Hours change", "Location change", "Department" , "HDC change", "Pre-identified intern", "Transfer", "Delegate", "Group Owner", "Research Fellow calculator", "Termination date", "Merit increase", "Manager Home tile", "ECF", "MSS notifications", "Out of state worker", "Self-evaluation", "Expected job end date", "extending AP’s", "Employee snapshot", "Shift differential", "Patient care access", "reviewer", "HR File", "HR record", "employee record", "exit checklist", "exit interview", "exit survey", "approval chain", "termination", " AP ", "annual performance review", "performance review", " review ", "position", "survey"]

 

String[] HRIS_keywords1 = [" HRIS "," jiratest ", "Interface", "Integration", "Control M", "Query", "Process", "Security", "Component", "Workflow", "HR_DIRECT_REP", "Equifax ", "non-finalized ", "HRQA92", "HRQA92", "HRTAX92", "HRTST92 ", "HRDEV92", "HRWRK92", "ImageSilo", "Query", "Job Code Table Update", "RWIZ", "Equifax", "Payfactors", "Control M", "People Code", "Crosswalk ", "SQL", " report ", "LTD", "confidential", " peterz " ]

 

String[] ESC_keywords1 = ["Medical", "Dental", " Vision ", "Subscriber", "Member Number", "Claims", "Eligibility", "Enrollment", "ID Card", "Pension", "PSFL", "Attestations", " Lease ", "Cobra", "FSA", "WageWorks", "Health Equity", "Tuition Reimbursement ", "Dependent", "Childcare", "Pharmacy", "Open Enrollment", "Marriage", "Married", "Divorce", "Divorced", "Turning", "Turned", "Loss Insurance", "Gain insurance", "loss of coverage", "gain of Coverage", "New Hire or Recent Hire", "PeopleSoft", "Paystubs Request", "Paid Time Off", "Employment Verifications", "Birth", "Adoption", "Legal Plan", "Life Insurance", "Accident Insurance", "Disability", "Fidelity 403b", "RMSA", "Weight Watchers", "Body Scapes", "EAP", "KGA", "Livongo" , "Ovia",  "Health", "Nutrimedy", "Tax Withholdings", "W-4", "W-2", "Deduction", "Personal Information Change", "Loans", "BCBS", "Delta Dental", "VSP", "Qualifying Life Event", "Pension Package", "Reimbursement", "Edassist", "Daycare", "CVS Caremark", "Marital Status", "ET Cap" ,"ET Max", "Holiday pay", " Delivery", "MetLife Legal", "Beneficiaries", "Critical illness", "Short-Term Disability", "STD", "M-4 Form", "Address Change", " Retirement ", "Withdrawal Pension", "Care.com", "Neiborschools", "Medication" , "Prescription", "Pillar Rx", "ET Accrual Rate", "Bereavement", "Jury Duty", "Newborn", "Hospital Indemnity", "Voya", "Long Term Disability", "STD", "Lincoln Financial", "Name Change", "update address", "address", "W2", "Beneficiary", "rewards statement", "MBTA", "charliecard", " 403b ", " 403(b) ", "fidelity", "PSLF", "public service loan forgiveness", "loan", "PSLF", "attestations", "Lease", "pet", "deductible"]

 

String[] WOD_keywords1 = ["cashout", "timekeeping", "scheduling", "schedule", "accruals", "self-scheduling", "pay code", "pay", "report", "punch", "badge", "clock", "missing punch", "genie", "widget", "workspace", "timecard", "earned time", " ET ", "ETU", "earned time bank", "request types", "time off", "time off requests", "job aids", "cash out", "cashout","overage", "open spots", "ETS", "ETU", "cash-out"]

 

String[] ERL_keywords1 = ["EDI", " Relations", "Bias"]

 

for (keyword in MRC_keywords1)

{

    def cfNewValue = ComponentAccessor.optionsManager.getOptions(customFieldConfig)?.find

{

    it.toString() == "MRC"

}

customField.updateValue(null, issue, new ModifiedValue(customFieldValue, cfNewValue), new DefaultIssueChangeHolder()) 

        return null;

 

}

 

for (keyword in HRIS_keywords1)

{

    def cfNewValue = ComponentAccessor.optionsManager.getOptions(customFieldConfig)?.find

{

    it.toString() == "HRIS"

}

customField.updateValue(null, issue, new ModifiedValue(customFieldValue, cfNewValue), new DefaultIssueChangeHolder()) 

        return null;

 

}

 

for (keyword in ESC_keywords1)

{

    def cfNewValue = ComponentAccessor.optionsManager.getOptions(customFieldConfig)?.find

{

    it.toString() == "ESC/Benefits"

}

customField.updateValue(null, issue, new ModifiedValue(customFieldValue, cfNewValue), new DefaultIssueChangeHolder()) 

        return null;

 

}

for (keyword in WOD_keywords1)

{

    def cfNewValue = ComponentAccessor.optionsManager.getOptions(customFieldConfig)?.find

{

    it.toString() == "WOD"

}

customField.updateValue(null, issue, new ModifiedValue(customFieldValue, cfNewValue), new DefaultIssueChangeHolder()) 

        return null;

 

}

for (keyword in ERL_keywords1)

{

    def cfNewValue = ComponentAccessor.optionsManager.getOptions(customFieldConfig)?.find

{

    it.toString() == "Emp Relations"

}

customField.updateValue(null, issue, new ModifiedValue(customFieldValue, cfNewValue), new DefaultIssueChangeHolder()) 

    return null;

}

 

2 answers

0 votes
Joseph Chung Yin
Community Leader
Community Leader
Community Leaders are connectors, ambassadors, and mentors. On the online community, they serve as thought leaders, product experts, and moderators.
September 27, 2022

@Chhaya Gadade -

Looking for " based on Keywords in issue Summary and Description" is not ideal because both fields are text fields.  Have you consider creating other custom fields where one can tagged the issues (i.e Component/s, dropdown list) where you can control the value nomenclature format?

The above consideration will make your codes much simpler to implement.

Best, Joseph Chung Yin

Jira/JSM Functional Lead, Global Infrastructure Applications Team

Viasat Inc.

0 votes
Chhaya Gadade
I'm New Here
I'm New Here
Those new to the Atlassian Community have posted less than three times. Give them a warm welcome!
September 27, 2022

Even though my this peace of code is not working,It is not coming inside IF statement still I am entering issue summary as Research,Please help.

 

String[] MRC_keywords = [" Research ", " research "]
String[] HRIS_keywords = ["HRQA", " HRISX "]
String[] ESC_keywords = [" insurance "," pension ", " retirement", " leave ", " benefit ", " benefits "]
String[] WOD_keywords = [" kronos " ]
def issueManager = ComponentAccessor.getIssueManager()

def issue = issueManager.getIssueObject("HR-402")
//def issue = event.issue as Issue
//issue = issue as MutableIssue
def userManager = ComponentAccessor.getUserManager() as UserManager
String full_data = issue.summary + " " + issue.description
def user = ComponentAccessor.getUserManager().getUserByName("localadmin")
def loggedUser = ComponentAccessor.getJiraAuthenticationContext().getLoggedInUser()
def customFieldManager = ComponentAccessor.getCustomFieldManager()
def optionsManager = ComponentAccessor.getOptionsManager()
def cf = customFieldManager.getCustomFieldObjectsByName("Assigned HR Group").first()

IssueInputParameters issueInputParameters = ComponentAccessor.issueService.newIssueInputParameters();

log.debug("Full Data")
log.debug(full_data)
def customFieldId = 12670
def customField = customFieldManager.getCustomFieldObject(customFieldId)
def customFieldValue = issue.getCustomFieldValue(customField)
def customFieldConfig = customField.getRelevantConfig(issue)
//customFieldValue=null;

for (keyword in HRIS_keywords)
{
log.warn("inside for")


log.warn("keyword=="+keyword)

if (org.apache.commons.lang3.StringUtils.containsIgnoreCase(full_data,keyword)){

log.warn("inside if")
log.warn("Matching word MRC "+keyword);
def cfNewValue = ComponentAccessor.optionsManager.getOptions(customFieldConfig)?.find
{
it.toString() == "MRC"
}
customField.updateValue(null, issue, new ModifiedValue(customFieldValue, cfNewValue), new DefaultIssueChangeHolder())

}
return null;

}

Suggest an answer

Log in or Sign up to answer
TAGS
AUG Leaders

Atlassian Community Events