Hi ,
I need the code for Copy the value of two user-pickers custom field values into another custom field which is a multi user picker.
ex: CF1: user1, CF2: user2 and for CF3 the value should be as "user1,user2". CF3 is a User Picker (multiple users).
Note: CF3 will be empty during creation of issue. during the flow of issue once CF1 and CF2 gets values by the code CF3 should populate the merged value.
I tried with this below code but not worked :(
package UpdateIssue
import com.atlassian.jira.component.ComponentAccessor
import com.atlassian.jira.event.type.EventDispatchOption
import com.atlassian.jira.issue.CustomFieldManager
import com.atlassian.jira.issue.IssueManager
import com.atlassian.jira.issue.MutableIssue
import com.atlassian.jira.issue.util.DefaultIssueChangeHolder
import com.atlassian.jira.issue.UpdateIssueRequest
import com.atlassian.jira.issue.fields.CustomField
import com.atlassian.jira.project.Project
import com.atlassian.jira.user.ApplicationUser
import com.atlassian.jira.issue.ModifiedValue
IssueManager issueManager = ComponentAccessor.getIssueManager();
MutableIssue issue = issueManager.getIssueObject("TKT-16")
if (issue)
{
CustomFieldManager customFieldManager = ComponentAccessor.getCustomFieldManager();
CustomField cstFld1 = customFieldManager.getCustomFieldObject("Customfield_1123")
CustomField cstFld2 = customFieldManager.getCustomFieldObject("Customfield_1123")
CustomField cstFld3 = customFieldManager.getCustomFieldObject("Customfield_1144")
ApplicationUser curUser = ComponentAccessor.getJiraAuthenticationContext().getUser();
UpdateIssueRequest updateIssueRequest = new UpdateIssueRequest(new UpdateIssueRequest.UpdateIssueRequestBuilder().eventDispatchOption(EventDispatchOption.ISSUE_UPDATED).sendMail(false))
// issue.setCustomFieldObject(cstFld1.getValue(issue).toString() + "," + cstFld2.getValue(issue).toString())
def CR = (cstFld1.getValue(issue).toString() + "," + cstFld2.getValue(issue).toString())
def changeHolder = new DefaultIssueChangeHolder()
cstFld3.updateValue(null, issue, new ModifiedValue(cstFld3,CR),changeHolder)
}
Getting this error
I know why i get this error because
cstFld3 is Customfield with user picker and CR is a string value, but don't know how to make string to custom field value(user picker).
Could some one help me on it.
Thanks in advance
Thanks @Sreenivasaraju P , used your idea with different approach
import com.atlassian.jira.component.ComponentAccessor
import com.atlassian.jira.issue.CustomFieldManager
import com.atlassian.jira.issue.IssueManager
import com.atlassian.jira.issue.Issue
import com.atlassian.jira.ComponentManager
import com.atlassian.jira.issue.fields.CustomField
import com.atlassian.jira.issue.MutableIssue;
import com.atlassian.jira.issue.Issue
import com.atlassian.jira.user.ApplicationUser
import com.atlassian.jira.event.type.*
import com.atlassian.crowd.embedded.api.User;
import com.atlassian.jira.issue.ModifiedValue
import com.atlassian.jira.issue.util.DefaultIssueChangeHolder
import com.atlassian.jira.user.ApplicationUser;
log.info(issue.getKey())
def changeHolder = new DefaultIssueChangeHolder()
def issueManager = ComponentAccessor.getIssueManager();
def customFieldManager = ComponentAccessor.getCustomFieldManager()
def user = ComponentAccessor.getJiraAuthenticationContext().getLoggedInUser()
//MutableIssue issue = issueManager.getIssueByCurrentKey("ARLOANDRD-1289")
String selectedIssueType = issue.issueTypeObject.name
if(selectedIssueType == "Bug" ||selectedIssueType == "Story"|| selectedIssueType == "Task"){
def CodeReviewer1 = customFieldManager.getCustomFieldObjectByName("Code Reviewer(One)")
def CodeReviewer2 = customFieldManager.getCustomFieldObjectByName("Code Reviewer(Two)")
log.info(CodeReviewer1)
log.info(CodeReviewer2)
def codeReviewers = customFieldManager.getCustomFieldObjects(issue).find {it.name == "Code Reviewer(s)"}
log.info(codeReviewers)
def crV1 = issue.getCustomFieldValue(CodeReviewer1) as ApplicationUser
def crV2 = issue.getCustomFieldValue(CodeReviewer2) as ApplicationUser
def crsV = issue.getCustomFieldValue(codeReviewers) as List
log.info(crV1)
log.info(crV2)
log.info(crsV)
List userList = []
if(crsV != null)
{
userList = crsV
if(crV1 != null){
userList.add(crV1)
}
if(crV2 != null)
{
userList.add(crV2)
}
log.info(userList.unique())
}else{
if(crV1 != null && crV2 != null){
userList.addAll([crV1,crV2])
log.info(userList.unique())
}
}
if(codeReviewers != null && userList != null){
//issue.setCustomFieldValue(codeReviewers, userList.unique() )
//issueManager.updateIssue(user, issue, EventDispatchOption.ISSUE_ASSIGNED, false)
codeReviewers.updateValue(null, issue, new ModifiedValue(issue.getCustomFieldValue(codeReviewers), userList.unique()),changeHolder)
}
}
Its working fine :)
Hi @Satyanarayana Singamsetti ,
You can do other way around.
I hope this may help you.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Thanks for the reply @Sreenivasaraju P
I tried but getting this error
Script console script failed: java.lang.NullPointerException
and multi-user field didn't updated with users
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.