My requirement is to copy Text field data into USer picker field. Text Field data has single email address.
When I used script runner "Copy custom field" option it gave me type casting error.
Can anyone please help me with groovy script which will help me to update the same. We have around 30k+ records which need to be updated.
To expand on @Vasiliy Zverev's answer a bit, you could get the results of a JQL query in a console script, then iterate through the list of values to update them.
import com.atlassian.jira.component.ComponentAccessor import com.atlassian.jira.event.type.EventDispatchOption import com.atlassian.jira.issue.CustomFieldManager import com.atlassian.jira.issue.UpdateIssueRequest import com.atlassian.jira.issue.search.SearchProvider import com.atlassian.jira.jql.parser.JqlQueryParser import com.atlassian.jira.security.JiraAuthenticationContext import com.atlassian.jira.web.bean.PagerFilter def jqlQueryParser = ComponentAccessor.getComponent(JqlQueryParser) def searchProvider = ComponentAccessor.getComponent(SearchProvider) def issueManager = ComponentAccessor.getIssueManager() def jiraAuthenticationContext = ComponentAccessor.getJiraAuthenticationContext() def user = jiraAuthenticationContext.getUser() // edit this query to suit def query = jqlQueryParser.parseQuery("summary is not EMPTY") def results = searchProvider.search(query, user, PagerFilter.getUnlimitedFilter()) log.debug("Total issues: ${results.total}") def customFieldManager = ComponentAccessor.getCustomFieldManager() def cfUser = customFieldManager.getCustomFieldObjectByName("userFiledName") def cfEmail = customFieldManager.getCustomFieldObjectByName("emaiFiledName") def emailUserMap = ComponentAccessor.getUserManager().getAllApplicationUsers().collectEntries { [(user.getEmailAddress()): user] } results.getIssues().each { documentIssue -> log.debug(documentIssue.key) // if you need a mutable issue you can do: def issue = issueManager.getIssueObject(documentIssue.id) issue.setCustomFieldValue(cfUser, emailUserMap.get(issue.getCustomFieldValue(cfEmail))) UpdateIssueRequest updateIssueRequest = UpdateIssueRequest.builder().eventDispatchOption(EventDispatchOption.ISSUE_UPDATED).sendMail(false).build() issueManager.updateIssue(user, issue, updateIssueRequest) // do something to the issue... log.debug(issue.summary) }
Here is script for script console to update single issue
import com.atlassian.jira.component.ComponentAccessor import com.atlassian.jira.event.type.EventDispatchOption import com.atlassian.jira.issue.MutableIssue import com.atlassian.jira.issue.UpdateIssueRequest import com.atlassian.jira.issue.fields.CustomField import com.atlassian.jira.user.ApplicationUser Map<String, ApplicationUser> emailUserMap = new HashMap<>(); for(ApplicationUser user: ComponentAccessor.getUserManager().getAllApplicationUsers()){ emailUserMap.put(user.getEmailAddress(), user) } CustomField cfUser = ComponentAccessor.getCustomFieldManager().getCustomFieldObjectByName("userFiledName") CustomField cfEmail = ComponentAccessor.getCustomFieldManager().getCustomFieldObjectByName("emaiFiledName") MutableIssue issue = ComponentAccessor.getIssueManager().getIssueObject("issueKey"); issue.setCustomFieldValue( cfUser , emailUserMap.get(issue.getCustomFieldValue(cfEmail)) ) UpdateIssueRequest updateIssueRequest = UpdateIssueRequest.builder().eventDispatchOption(EventDispatchOption.ISSUE_UPDATED).sendMail(false).build() ComponentAccessor.getIssueManager().updateIssue( ComponentAccessor.getJiraAuthenticationContext().getUser() , issue , updateIssueRequest )
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
You've answered your own question really. Fields have to contain compatible data types for a simple copy to work. A text string is not a user object.
You'll need to write a bit of code that can look up the email address, and find a user with that email address (you'll need to check for duplicates with a rule, even if it's just "the first one I find")
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.