Hi All,
On a create issue screen, we want to have a custom field which should store all the Issues created in a Project and is of some specific type.
We are able to see all the issues in the option of the select list custom field. But getting error "Invalid value '10371' passed for customfield 'Parent Design Feature'. Allowed values are: 10100[None], -1" while trying to create it.
Below is the script that we are using :
import org.apache.log4j.Category
import com.atlassian.jira.ComponentManager
import com.atlassian.jira.issue.Issue
import com.atlassian.jira.project.Project
import com.atlassian.jira.issue.link.IssueLink
import com.atlassian.jira.component.ComponentAccessor
import com.atlassian.jira.bc.issue.IssueService
import com.atlassian.jira.bc.issue.IssueService.TransitionValidationResult
import com.atlassian.crowd.embedded.api.User
import com.atlassian.jira.issue.MutableIssue;
import com.atlassian.jira.issue.CustomFieldManager;
import com.atlassian.jira.issue.fields.CustomField;
import com.atlassian.jira.issue.link.IssueLinkManager
import com.atlassian.jira.issue.link.IssueLinkType
import com.atlassian.jira.issue.link.IssueLinkTypeManager
import com.atlassian.jira.bc.issue.search.SearchService;
import com.atlassian.jira.web.bean.PagerFilter;
import com.atlassian.jira.workflow.WorkflowTransitionUtil;
import com.atlassian.jira.workflow.WorkflowTransitionUtilImpl;
import com.atlassian.jira.util.JiraUtils;
import groovy.sql.Sql;
import java.sql.Driver
def driver = Class.forName('com.mysql.jdbc.Driver').newInstance() as Driver
def props = new Properties()
props.setProperty("user", "root")
props.setProperty("password", "root")
def design_parent_feature = getFieldByName("Parent Design Feature")
log.info('design_parent_feature.getFieldId().........'+design_parent_feature.getFieldId())
def customField = customFieldManager.getCustomFieldObject(design_parent_feature.getFieldId()) // Pick list Field that dictates other fields on form based on its value
log.info('design_parent_feature.getFieldId().....'+design_parent_feature.getFieldId())
def optionsManager = ComponentAccessor.getOptionsManager()
def config = customField.getRelevantConfig(getIssueContext())
def options = optionsManager.getOptions(config)
log.info('options :'+options)
def projectKey = getIssueContext().getProjectObject().getKey()
def issueTypeName = getIssueContext().getIssueType().getName()
log.info('issueTypeName'+issueTypeName)
List<String> issueDesc = new ArrayList<String>()
Map<String,String> optionLinkedMap = new LinkedHashMap<String,String>()
if(issueTypeName == "Epic"){
Map<String,String> option_issue_Map = new LinkedHashMap<String,String>()
log.info('inside the epic loop')
def jqlSearch = "issuetype = Design_Feature_Issue AND project in ('Design Workspace')";
log.info('jqlSearch: ' + jqlSearch)
List<Issue> issueFeatureValues = new ArrayList<Issue>()
HashMap<String,String> issueMap = new HashMap<String,String>()
getFilterResult (jqlSearch).each{Issue issue1 ->
log.info(issue1.getKey() + " " + issue1.getStatus().name + " " + issue1.getStatus().getName());
log.info('adding issue into the list.....')
issueFeatureValues.add(issue1)
issueMap.put(issue1.getKey(),issue1.getStatus().getName())
String issueDescString = issue1.getKey() +" "+issue1.getSummary()
issueDesc.add(issue1.getSummary())
log.info('issueDesc....'+issueDesc)
String str = issue1.getKey()
int indexOfHyphen = str.indexOf('-')
String issueKey = str.substring(indexOfHyphen+1,str.length())
log.info("issueKey....."+issueKey)
def conn = driver.connect("jdbc:mysql://localhost:3306/jiradb", props)
def sql = new Sql(conn)
def sqlStmt = "select jiraissue.id from jiraissue, project where project.pKey = 'DW' and issuenum ="+issueKey+" and jiraissue.project = project.ID"
try {
sql.eachRow(sqlStmt) {
log.info('it fom the SQL.......'+it)
String id = it.id;
log.info('it.id fom the SQL.......'+it.id)
log.info('id fom the SQL.......'+id)
optionLinkedMap.put(id,issue1.getSummary())
option_issue_Map.putAll(optionLinkedMap)
}
}
finally {
sql.close()
}
}
design_parent_feature.setFieldOptions(option_issue_Map)
}
List<Issue> getFilterResult(String jqlSearch)
{
def user = ComponentAccessor.jiraAuthenticationContext.getLoggedInUser()
SearchService searchService = ComponentAccessor.getComponent(SearchService.class)
SearchService.ParseResult parseResult = searchService.parseQuery(user, jqlSearch)
List<Issue> issues = null
if (parseResult.isValid()) {
def searchResult = searchService.search(user, parseResult.getQuery(), PagerFilter.getUnlimitedFilter())
issues = searchResult.issues
}
else {
return null;
}
return issues
}
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.