Copy value from one custom field to another in the same issue

Dan27 June 14, 2018

I run this code on Script Listener and it supposed to copy the value from one custom field to another:

I try with update value and it didnt work too

 

import com.atlassian.jira.issue.Issue;
import com.atlassian.jira.issue.fields.CustomField;
import com.atlassian.jira.issue.CustomFieldManager;
import com.atlassian.jira.ComponentManager;
import com.atlassian.jira.util.ImportUtils;
import com.atlassian.jira.user.util.UserManager;
import com.atlassian.crowd.embedded.api.User;
import com.atlassian.jira.issue.ModifiedValue;
import com.atlassian.jira.issue.util.DefaultIssueChangeHolder;
import com.atlassian.jira.issue.util.IssueChangeHolder;
import com.atlassian.jira.component.ComponentAccessor;
import com.atlassian.jira.issue.MutableIssue;
import com.atlassian.jira.security.groups.GroupManager;
import com.atlassian.jira.issue.IssueImpl;
import com.atlassian.jira.issue.ModifiedValue
import com.atlassian.jira.issue.util.DefaultIssueChangeHolder
import com.atlassian.jira.issue.util.IssueChangeHolder
import com.atlassian.jira.issue.IssueInputParameters

def customFieldManager = ComponentAccessor.getCustomFieldManager();
def issue = event.issue as MutableIssue
def issueManager = ComponentAccessor.getIssueManager();

log.warn issue.getIssueType().name
//Condition if QVR
if (issue.getIssueType().name=='QVR')
{
log.warn 2
//Get Assigned QA Team value
def Team = issue.getCustomFieldValue(customFieldManager.getCustomFieldObjectByName("Assigned QA Team"));
def val = Team.toString();
CustomField wbl = customFieldManager.getCustomFieldObjectByName("WBL Agile Team");
def value = ComponentAccessor.optionsManager.getAllOptions()?.find { it.toString() == 'Unassigned Team' };
log.warn value;

if (val==null)
{
issue.setCustomFieldValue(wbl, value)
}
else
{
issue.setCustomFieldValue(wbl, val)
}
}

2 answers

1 accepted

0 votes
Answer accepted
Tarun Sapra
Community Leader
Community Leader
Community Leaders are connectors, ambassadors, and mentors. On the online community, they serve as thought leaders, product experts, and moderators.
June 14, 2018

Hello @Dan27

You are using issue.setCustomFieldValue

But in the docs it's not the recommended way

void setCustomFieldValue(CustomField customField,
                         Object value)

Sets a custom field value on this Issue Object, but does not write it to the database. This is highly misleading. 
To actually set a custom field value, use OrderableField.updateIssue(com.atlassian.jira.issue.fields.layout.field.FieldLayoutItem, MutableIssue, java.util.Map)

Parameters:
Tarun Sapra
Community Leader
Community Leader
Community Leaders are connectors, ambassadors, and mentors. On the online community, they serve as thought leaders, product experts, and moderators.
June 14, 2018
Dan27 June 14, 2018

Hi @Tarun Sapra , thanks for the quick answer,

I try the code with update Value too, and it return an error :

 

import com.atlassian.jira.issue.Issue;
import com.atlassian.jira.issue.fields.CustomField;
import com.atlassian.jira.issue.CustomFieldManager;
import com.atlassian.jira.ComponentManager;
import com.atlassian.jira.util.ImportUtils;
import com.atlassian.jira.user.util.UserManager;
import com.atlassian.crowd.embedded.api.User;
import com.atlassian.jira.issue.ModifiedValue;
import com.atlassian.jira.issue.util.DefaultIssueChangeHolder;
import com.atlassian.jira.issue.util.IssueChangeHolder;
import com.atlassian.jira.component.ComponentAccessor;
import com.atlassian.jira.issue.MutableIssue;
import com.atlassian.jira.security.groups.GroupManager;
import com.atlassian.jira.issue.IssueImpl;
import com.atlassian.jira.issue.ModifiedValue
import com.atlassian.jira.issue.util.DefaultIssueChangeHolder
import com.atlassian.jira.issue.util.IssueChangeHolder
import com.atlassian.jira.issue.IssueInputParameters

def customFieldManager = ComponentAccessor.getCustomFieldManager();
def issue = event.issue as MutableIssue
def issueManager = ComponentAccessor.getIssueManager();

log.warn issue.getIssueType().name
//Condition if QVR
if (issue.getIssueType().name=='QVR')
{
log.warn 2
//Get Assigned QA Team value
def Team = issue.getCustomFieldValue(customFieldManager.getCustomFieldObjectByName("Assigned QA Team"));
def val = Team.toString();
CustomField wbl = customFieldManager.getCustomFieldObjectByName("WBL Agile Team");
def value = ComponentAccessor.optionsManager.getAllOptions()?.find { it.toString() == 'Unassigned Team' };
log.warn value;

if (val==null)
{
IssueChangeHolder changeHolder = new DefaultIssueChangeHolder();
//issue.setCustomFieldValue(wbl, value)
wbl.updateValue(null, issue, new ModifiedValue(issue.getCustomFieldValue(wbl), value), changeHolder);
}
else
{
IssueChangeHolder changeHolder = new DefaultIssueChangeHolder();
//issue.setCustomFieldValue(wbl, val)
wbl.updateValue(null, issue, new ModifiedValue(issue.getCustomFieldValue(wbl), val), changeHolder);
}

issue.store();
}

Tarun Sapra
Community Leader
Community Leader
Community Leaders are connectors, ambassadors, and mentors. On the online community, they serve as thought leaders, product experts, and moderators.
June 14, 2018

What's the type of your custom field?

Also, could oyu please use code macro to paste your code as that makes it more easily readable.

Dan27 June 14, 2018

them both single choice.

Tarun Sapra
Community Leader
Community Leader
Community Leaders are connectors, ambassadors, and mentors. On the online community, they serve as thought leaders, product experts, and moderators.
June 14, 2018

Use this and if it doesn't work, please share the exact error which you are getting

import com.atlassian.jira.issue.Issue;
import com.atlassian.jira.issue.fields.CustomField;
import com.atlassian.jira.issue.CustomFieldManager;
import com.atlassian.jira.ComponentManager;
import com.atlassian.jira.util.ImportUtils;
import com.atlassian.jira.user.util.UserManager;
import com.atlassian.crowd.embedded.api.User;
import com.atlassian.jira.issue.ModifiedValue;
import com.atlassian.jira.issue.util.DefaultIssueChangeHolder;
import com.atlassian.jira.issue.util.IssueChangeHolder;
import com.atlassian.jira.component.ComponentAccessor;
import com.atlassian.jira.issue.MutableIssue;
import com.atlassian.jira.security.groups.GroupManager;
import com.atlassian.jira.issue.IssueImpl;
import com.atlassian.jira.issue.ModifiedValue
import com.atlassian.jira.issue.util.DefaultIssueChangeHolder
import com.atlassian.jira.issue.util.IssueChangeHolder
import com.atlassian.jira.issue.IssueInputParameters

def customFieldManager = ComponentAccessor.getCustomFieldManager();
def issue = event.issue as MutableIssue
def issueManager = ComponentAccessor.getIssueManager();

log.warn issue.getIssueType().name
if (issue.getIssueType().name=='QVR') {
log.warn 2
//Get Assigned QA Team value
def team = issue.getCustomFieldValue(customFieldManager.getCustomFieldObjectByName("Assigned QA Team"));
CustomField wbl = customFieldManager.getCustomFieldObjectByName("WBL Agile Team");
def value = ComponentAccessor.optionsManager.getAllOptions()?.find { it.getValue() == 'Unassigned Team' };
log.warn value;

if (!team) {
IssueChangeHolder changeHolder = new DefaultIssueChangeHolder();
wbl.updateValue(null, issue, new ModifiedValue(issue.getCustomFieldValue(wbl), value), changeHolder);
}
else {
IssueChangeHolder changeHolder = new DefaultIssueChangeHolder();
wbl.updateValue(null, issue, new ModifiedValue(issue.getCustomFieldValue(wbl), team), changeHolder);
}

}
Dan27 June 14, 2018

Work!!!!! Thanks a lot!!!!! @Tarun Sapra

Tarun Sapra
Community Leader
Community Leader
Community Leaders are connectors, ambassadors, and mentors. On the online community, they serve as thought leaders, product experts, and moderators.
June 14, 2018

Glad to know @Dan27 that it worked! :)

Please accept/upvote the answer so that others are helped as well! Thanks.

0 votes
Mark Markov
Rising Star
Rising Star
Rising Stars are recognized for providing high-quality answers to other users. Rising Stars receive a certificate of achievement and are on the path to becoming Community Leaders.
June 14, 2018

Hello @Dan27

Please see this article on how to update jira fields via api.

https://community.atlassian.com/t5/Agile-articles/Three-ways-to-update-an-issue-in-Jira-Java-Api/ba-p/736585

And remember that method

wbl.updateValue(null, issue, new ModifiedValue(issue.getCustomFieldValue(wbl), value), changeHolder);

not saving changes in History of issue.

Suggest an answer

Log in or Sign up to answer