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

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

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"

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? 

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()); } } }

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());
  }
 }
}

Suggest an answer

Log in or Sign up to answer
How to earn badges on the Atlassian Community

How to earn badges on the Atlassian Community

Badges are a great way to show off community activity, whether you’re a newbie or a Champion.

Learn more
Community showcase
Published Monday in Jira Software

How large do you think Jira Software can grow?

Hi Atlassian Community! My name is Shana, and I’m on the Jira Software team. One of the many reasons this Community exists is to connect you to others on similar product journeys or with comparabl...

382 views 4 10
Read article

Atlassian User Groups

Connect with like-minded Atlassian users at free events near you!

Find a group

Connect with like-minded Atlassian users at free events near you!

Find my local user group

Unfortunately there are no AUG chapters near you at the moment.

Start an AUG

You're one step closer to meeting fellow Atlassian users at your local meet up. Learn more about AUGs

Groups near you