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.
Online forums and learning are now in one easy-to-use experience.
By continuing, you accept the updated Community Terms of Use and acknowledge the Privacy Policy. Your public name, photo, and achievements may be publicly visible and available in search engines.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.