Can someone help me in modifying below sample custom script that you can use in order to create a number of subtasks .My requirement is to create as per the value of customfield.
import com.atlassian.jira.component.ComponentAccessor
import com.atlassian.jira.issue.Issue
import com.atlassian.jira.issue.MutableIssue
import com.atlassian.jira.issue.customfields.manager.OptionsManager
def constantManager = ComponentAccessor.getConstantsManager()
def user = ComponentAccessor.getJiraAuthenticationContext().get
def issueFactory = ComponentAccessor.getIssueFactory()
def subTaskManager = ComponentAccessor.getSubTaskManager()
def issueManager = ComponentAccessor.getIssueManager()
Issue parentIssue = issue
if (parentIssue.getIssueTypeObject().getName() == 'Sub-task')
return
if (parentIssue.getIssueTypeObject().name != 'Feature')
return
def summariesList = ["Summary 1", "Summary 2", "Summary 3"]
// code in order to create the values to update a CascadingSelect custom field
def cascadingSelect = ComponentAccessor.customFieldManager.getCustomFieldObjectByName("CascadingSelect")
def fieldConfig = cascadingSelect?.getRelevantConfig(parentIssue)
def listOfOptions = ComponentAccessor.getComponent(OptionsManager).getOptions(fieldConfig)
def parentOption = listOfOptions?.find {it.value == "AAA"}
def childOption = parentOption?.getChildOptions()?.find {it.value == "A2"}
def mapWithValues = [:]
mapWithValues.put(null, parentOption)
mapWithValues.put('1', childOption)
summariesList.each {
MutableIssue newSubTask = issueFactory.getIssue()
newSubTask.setAssigneeId(parentIssue.assigneeId)
newSubTask.setSummary(it)
newSubTask.setParentObject(parentIssue)
newSubTask.setProjectObject(parentIssue.getProjectObject())
newSubTask.setIssueTypeId(constantManager.getAllIssueTypeObjects().find{
it.getName() == "Sub-task"
}.id)
// Add any other fields you want for the newly created sub task
newSubTask.setCustomFieldValue(cascadingSelect, mapWithValues)
def newIssueParams = ["issue" : newSubTask] as Map<String,Object>
//for JIRA v6.*
issueManager.createIssueObject(user.directoryUser, newIssueParams)
subTaskManager.createSubTaskIssueLink(parentIssue, newSubTask, user.directoryUser)
// for JIRA v7.*
issueManager.createIssueObject(user, newIssueParams)
subTaskManager.createSubTaskIssueLink(parentIssue, newSubTask, user)
log.info "Issue with summary ${newSubTask.summary} created"
}
import com.atlassian.jira.component.ComponentAccessor
import com.atlassian.jira.sharing.SharePermissionImpl
import com.atlassian.jira.sharing.SharedEntity.ShareType
import com.atlassian.jira.sharing.ShareType.Name
import com.atlassian.jira.sharing.ShareTypeFactory
import com.atlassian.jira.sharing.SharedEntityAccessor
import com.atlassian.jira.sharing.SharedEntity
import com.atlassian.jira.sharing.SharePermission
import com.atlassian.jira.sharing.SharedEntityManager
import com.atlassian.jira.sharing.search.SharedEntitySearchParameters
import com.atlassian.jira.dashboard.DashboardManager
// Get the DashboardManager
def dashboardManager = ComponentAccessor.getComponent(DashboardManager)
def sharedEntityManager = ComponentAccessor.getComponent(SharedEntityManager)
def shareTypeFactory = ComponentAccessor.getComponent(ShareTypeFactory)
// Replace with your dashboard ID and group names
def dashboardId = 10001L // The ID of the dashboard to which permissions will be added
def groups = ["jira-software-users", "jira-administrators"] // List of groups to grant permissions to
def dashboard = dashboardManager.getDashboard(dashboardId)
if (dashboard) {
groups.each { groupName ->
// Create a share permission for the group
def shareType = shareTypeFactory.getShareType(Name.GROUP)
def groupPermission = new SharePermissionImpl(shareType, groupName)
// Add the permission to the dashboard
def sharedEntity = sharedEntityManager.updateSharePermissions(dashboard.id, [groupPermission])
log.warn("Added permission for group: ${groupName} to dashboard: ${dashboard.getName()}")
}
} else {
log.warn("Dashboard with ID ${dashboardId} not found.")
}
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
import com.atlassian.jira.component.ComponentAccessor
import groovy.json.JsonSlurper
import groovy.json.JsonOutput
// Replace with your dashboard ID and group names
def dashboardId = 10001L // The ID of the dashboard to which permissions will be added
def groups = ["jira-software-users", "jira-administrators"] // List of groups to grant permissions to
def baseUrl = ComponentAccessor.getApplicationProperties().getString("jira.baseurl")
def restApiUrl = "${baseUrl}/rest/api/3/dashboard/${dashboardId}/permissions"
def httpClient = ComponentAccessor.getComponent(com.atlassian.sal.api.net.RequestFactory).createRequest(com.atlassian.sal.api.net.Request.Method.PUT, restApiUrl)
def authHeader = "Basic " + "YOUR_ENCODED_CREDENTIALS" // Replace with your base64-encoded credentials
httpClient.addHeader("Authorization", authHeader)
httpClient.addHeader("Content-Type", "application/json")
// Fetch current permissions
def response = httpClient.execute()
def currentPermissions = new JsonSlurper().parseText(response.getResponseBodyAsString())
// Add new group permissions
def newPermissions = currentPermissions.findAll { it.type != "group" } // Exclude existing group permissions
groups.each { groupName ->
def sharePermission = [
type: "group",
group: groupName,
permissions: ["VIEW"]
]
newPermissions.add(sharePermission)
}
// Update permissions via REST API
def body = JsonOutput.toJson(newPermissions)
httpClient.setRequestBody(body)
response = httpClient.execute()
if (response.status >= 200 && response.status < 300) {
log.warn("Successfully updated permissions for dashboard ID ${dashboardId}.")
} else {
log.warn("Failed to update permissions for dashboard ID ${dashboardId}. Status: ${response.status}")
}
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
import com.atlassian.jira.component.ComponentAccessor
import com.atlassian.jira.portal.PortalPageManager
import com.atlassian.jira.sharing.SharePermissionImpl
import com.atlassian.jira.sharing.SharedEntity.SharePermissions
import com.atlassian.jira.sharing.type.ShareType
import com.atlassian.jira.portal.PortalPage
// Get the PortalPageManager for dashboard operations
def portalPageManager = ComponentAccessor.getComponent(PortalPageManager)
// Replace with your dashboard ID and group names
def dashboardId = 10001L // The ID of the dashboard to which permissions will be added
def groups = ["jira-software-users", "jira-administrators"] // List of groups to grant permissions to
// Retrieve the dashboard using its ID
def dashboard = portalPageManager.getPortalPageById(dashboardId)
if (dashboard) {
// Get current share permissions from the dashboard
def currentPermissions = dashboard.getPermissions()
// Convert current permissions to mutable set
def updatedPermissions = new HashSet<>(currentPermissions.getPermissions())
// Add new group permissions
groups.each { groupName ->
def sharePermission = new SharePermissionImpl(ShareType.Name.GROUP, groupName)
updatedPermissions.add(sharePermission)
log.warn("Adding permission for group: ${groupName} to dashboard: ${dashboard.getName()}")
}
// Set updated permissions
def newPermissions = new SharePermissions(updatedPermissions)
dashboard.setPermissions(newPermissions)
// Save the dashboard with updated permissions
portalPageManager.updatePortalPage(dashboard)
log.warn("Dashboard ${dashboard.getName()} updated with new permissions.")
} else {
log.warn("Dashboard with ID ${dashboardId} not found.")
}
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
import com.atlassian.jira.component.ComponentAccessor
import com.atlassian.jira.portal.PortalPageManager
import com.atlassian.jira.sharing.SharePermissionImpl
import com.atlassian.jira.sharing.type.ShareType
// Get the PortalPageManager for dashboard operations
def portalPageManager = ComponentAccessor.getComponent(PortalPageManager)
// Replace with your dashboard ID and group names
def dashboardId = 10001L // The ID of the dashboard to which permissions will be added
def groups = ["jira-software-users", "jira-administrators"] // List of groups to grant permissions to
// Retrieve the dashboard using its ID
def dashboard = portalPageManager.getPortalPageById(dashboardId)
if (dashboard) {
groups.each { groupName ->
// Create a share permission for the group
def sharePermission = new SharePermissionImpl(ShareType.Name.GROUP, groupName)
// Fetch the current permissions for the dashboard
def currentPermissions = portalPageManager.getSharePermissions(dashboard)
// Add the new permission to the list of current permissions
def updatedPermissions = new ArrayList<>(currentPermissions)
updatedPermissions.add(sharePermission)
// Update the dashboard's share permissions
portalPageManager.updateSharePermissions(dashboard, updatedPermissions)
log.warn("Added permission for group: ${groupName} to dashboard: ${dashboard.getName()}")
}
} else {
log.warn("Dashboard with ID ${dashboardId} not found.")
}
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
import com.atlassian.jira.component.ComponentAccessor
import com.atlassian.jira.sharing.SharePermissionImpl
import com.atlassian.jira.sharing.SharePermission
import com.atlassian.jira.sharing.type.ShareType
import com.atlassian.jira.sharing.SharedEntityAccessor
import com.atlassian.jira.sharing.SharedEntity
// Get the SharedEntityAccessor
def sharedEntityAccessor = ComponentAccessor.getComponent(SharedEntityAccessor)
// Replace with your dashboard ID and group names
def dashboardId = 10001L // The ID of the dashboard to which permissions will be added
def groups = ["jira-software-users", "jira-administrators"] // List of groups to grant permissions to
// Retrieve the dashboard using its ID
def dashboard = sharedEntityAccessor.getSharedEntity(SharedEntity.Type.DASHBOARD, dashboardId)
if (dashboard) {
groups.each { groupName ->
// Create a share permission for the group
def sharePermission = new SharePermissionImpl(ShareType.Name.GROUP, groupName)
// Fetch the current permissions for the dashboard
def currentPermissions = sharedEntityAccessor.getSharePermissions(dashboard)
// Add the new permission to the list of current permissions
def updatedPermissions = new ArrayList<>(currentPermissions)
updatedPermissions.add(sharePermission)
// Update the dashboard's share permissions
sharedEntityAccessor.updateSharePermissions(dashboard, updatedPermissions)
log.warn("Added permission for group: ${groupName} to dashboard: ${dashboard.getName()}")
}
} else {
log.warn("Dashboard with ID ${dashboardId} not found.")
}
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
import com.atlassian.jira.component.ComponentAccessor
import com.atlassian.jira.project.ProjectManager
import com.atlassian.jira.issue.IssueManager
import java.io.File
import java.io.FileWriter
// Get required managers
def projectManager = ComponentAccessor.getProjectManager()
def issueManager = ComponentAccessor.getIssueManager()
// Define the file path (update this to your desired path)
def filePath = "/path/to/your/downloads/jira_project_details.csv"
// Create a file and writer
File file = new File(filePath)
FileWriter writer = new FileWriter(file)
// Write the header row
writer.write("Project Name,Project Key,Project Description,Project Lead,Last Issue Update,Project Category,Issue Count\n")
// Fetch all projects
def projects = projectManager.getProjectObjects()
// Iterate through projects and write the details to the CSV file
projects.each { project ->
def projectName = project.getName() ?: "No Name"
def projectKey = project.getKey() ?: "No Key"
def projectDescription = project.getDescription() ?: "No Description"
// Get project lead
def projectLead = project.getProjectLead()?.getDisplayName() ?: "No Lead"
// Get the number of issues in the project
def issueCount = issueManager.getIssueIdsForProject(project.getId()).size()
// Get the last issue update
def lastIssueUpdate = issueManager.getIssueIdsForProject(project.getId())
.collect { issueManager.getIssueObject(it).getUpdated() }
.max() ?: "No Issues"
// Get project category
def projectCategoryName = project.getProjectCategory()?.getName() ?: "No Category"
// Write the project details to the CSV file
writer.write("${projectName},${projectKey},${projectDescription},${projectLead},${lastIssueUpdate},${projectCategoryName},${issueCount}\n")
}
// Close the writer
writer.close()
log.warn("Project details have been written to ${filePath}")
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
import com.atlassian.jira.component.ComponentAccessor
// Get the ProjectManager instance
def projectManager = ComponentAccessor.getProjectManager()
// Fetch all projects
def projects = projectManager.getProjectObjects()
// Iterate through projects and print the required details
projects.each { project ->
def projectName = project.getName() ?: "No Name"
def projectKey = project.getKey() ?: "No Key"
def projectDescription = project.getDescription() ?: "No Description"
// Print the project details
log.warn("Project Name: ${projectName}, Project Key: ${projectKey}, Project Description: ${projectDescription}")
}
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
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.