Having trouble setting summary with combination of custom fields in post-function of create transition

Sara Wajnberg February 11, 2015

I am trying to do the following: 

  • Hide summary from create screen (or at the very least have it prepopulated so users can ignore it - right now all I've been able to do is prepopulate it)
  • Once the ticket is created, populate summary with a combination of 3 custom fields that are required on the create screen ("Member ID": "Member First Name" + "Member Last Name") 

I have the following script set up on the create transition post-function (via Script Runner): 

import com.atlassian.jira.issue.Issue
import com.atlassian.jira.ComponentManager
import com.atlassian.jira.issue.CustomFieldManager
import com.atlassian.jira.issue.fields.CustomField
customFieldManager = ComponentManager.getInstance().getCustomFieldManager()
customField = customFieldManager.getCustomFieldObjectByName(“Member ID”)
customField1 = customFieldManager.getCustomFieldObjectByName(“Member First Name”)

customField2 = customFieldManager.getCustomFieldObjectByName(“Member Last Name”)
memberid = issue.getCustomFieldValue(customField)
memberfname = issue.getCustomFieldValue(customField1)

memberlname = issue.getCustomFieldValue(customField1)
Issue issue = issue;


issue.summary = memberid + “: “ + memberfname + " " + memberlname;

but no matter what I do I can't get it to work. It keeps just creating the issue with the default Summary that I put into the description of the Summary field on the particular field configuration in question. 

 

Anyone have suggestions on what I'm doing wrong/how I can get this to work? Your help would be much appreciated! Thanks! 

 

 

4 answers

0 votes
Mario Günter
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.
February 11, 2015

-> answered.

0 votes
Mario Günter
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.
February 11, 2015

Hi Sara, my problem is quite similiar to your's - still coding and testing. https://answers.atlassian.com/questions/12266549/custom-script-runner-script---not-working-at-all

0 votes
Sara Wajnberg February 11, 2015

Thanks Andrey, the summary field is present on the edit screen. I am new to Groovy and don't know how to incorporate the API you referenced - how would you go about writing what I'm trying to do? 

Andrey Kuzmin
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.
February 11, 2015

It will look like this: import com.atlassian.crowd.embedded.api.User import com.atlassian.jira.bc.issue.IssueService import com.atlassian.jira.component.ComponentAccessor import com.atlassian.jira.event.type.EventDispatchOption if (issue != null) { org.apache.log4j.Category LOGGER = log; User curUser = ComponentAccessor.getJiraAuthenticationContext().getUser().getDirectoryUser(); IssueService issueService = ComponentAccessor.getIssueService(); issueInputParameters = issueService.newIssueInputParameters(); issueInputParameters.setSummary("Your new summary"); IssueService.UpdateValidationResult updateValidationResult = issueService.validateUpdate(curUser, issue.getId(), issueInputParameters); if (updateValidationResult.isValid()) { IssueService.IssueResult updateResult = issueService.update(curUser, updateValidationResult, EventDispatchOption.DO_NOT_DISPATCH, false); if (updateResult.isValid()) { LOGGER.info("Updated issue " + String.valueOf(issue)); } else { LOGGER.error("Error validating updateResult"); Map<String, String> errors = updateResult.getErrorCollection().getErrors(); for (Map.Entry<String, String> entry : errors.entrySet()) { LOGGER.error(entry.getValue()); } } } else { LOGGER.error("Error validating updateValidationResult"); Map<String, String> errors = updateValidationResult.getErrorCollection().getErrors(); for (Map.Entry<String, String> entry : errors.entrySet()) { LOGGER.error(entry.getValue()); } } }

James Fishwick November 29, 2016

Since this is impossible to read...

import com.atlassian.crowd.embedded.api.User
import com.atlassian.jira.bc.issue.IssueService
import com.atlassian.jira.component.ComponentAccessor
import com.atlassian.jira.event.type.EventDispatchOption
if (issue != null) {
  org.apache.log4j.Category LOGGER = log;
  User curUser   ComponentAccessor.getJiraAuthenticationContext().getUser().getDirectoryUser();
  IssueService issueService = ComponentAccessor.getIssueService();
  issueInputParameters = issueService.newIssueInputParameters();
  issueInputParameters.setSummary("Your new summary");
  IssueService.UpdateValidationResult updateValidationResult = issueService.validateUpdate(curUser, issue.getId(), issueInputParameters);
if (updateValidationResult.isValid()) {
  IssueService.IssueResult updateResult = issueService.update(curUser, updateValidationResult, EventDispatchOption.DO_NOT_DISPATCH, false);
if (updateResult.isValid()) {
LOGGER.info("Updated issue " + String.valueOf(issue));
} else {
  LOGGER.error("Error validating updateResult");
  Map &lt; String, String &gt; errors = updateResult.getErrorCollection().getErrors();
  for (Map.Entry &lt; String, String &gt; entry: errors.entrySet()) {
    LOGGER.error(entry.getValue());
  }
}
} else {
  LOGGER.error("Error validating updateValidationResult");
  Map &lt; String, String &gt; errors = updateValidationResult.getErrorCollection().getErrors();
  for (Map.Entry &lt; String, String &gt; entry: errors.entrySet()) {
    LOGGER.error(entry.getValue());
  }
 }
}
0 votes
Andrey Kuzmin
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.
February 11, 2015

Hello. 

I am using this API in my groovy scripts to update issues in post functions. You also have to keep in mind that summary field should be present on edit issue screen for this to work.

p.s. don't forget to call post function after step "Creates the issue originally"

Suggest an answer

Log in or Sign up to answer