Example scripts
To homepage
Jira Service Desk

Copy Service Desk Project Queues to Another Project
App in script

ScriptRunner For Jira
by Adaptavist
Compatibility

Jira Service Desk (4.6 - 4.6)

ScriptRunner For Jira (5.6.14)
Language |
groovy
import com.atlassian.jira.component.ComponentAccessor
import com.atlassian.servicedesk.api.ServiceDeskManager
import com.atlassian.servicedesk.api.queue.QueueService
import com.onresolve.scriptrunner.runner.customisers.WithPlugin
@WithPlugin("com.atlassian.servicedesk")
// Specify the master SD project to get the queue form
final sourceProjectKey = "SRC"
// Specify the key of the SD project to copy the queue to
final destinationProjectKey = "DST"
// Get current user logged-in
def currentUser = ComponentAccessor.jiraAuthenticationContext.loggedInUser
// Get project objects
def sourceProject = ComponentAccessor.projectManager.getProjectObjByKey(sourceProjectKey)
def destinationProject = ComponentAccessor.projectManager.getProjectObjByKey(destinationProjectKey)
def queueService = ComponentAccessor.getOSGiComponentInstanceOfType(QueueService)
def serviceDeskManager = ComponentAccessor.getOSGiComponentInstanceOfType(ServiceDeskManager)
// Get Service Desk Id related to projects
def sourceProjectServiceDeskId = serviceDeskManager.getServiceDeskForProject(sourceProject).id
def destinationProjectServiceDeskId = serviceDeskManager.getServiceDeskForProject(destinationProject).id
// Delete all destination project queues
def destinationProjectQueues = queueService.newQueueQueryBuilder().serviceDeskId(destinationProjectServiceDeskId).build()
queueService.getQueues(currentUser, destinationProjectQueues).results.each {
queueService.deleteQueue(currentUser, destinationProjectServiceDeskId, it.id)
}
// Get all source project queues and copy to destination project
def sourceProjectQueues = queueService.newQueueQueryBuilder().serviceDeskId(sourceProjectServiceDeskId).build()
queueService.getQueues(currentUser, sourceProjectQueues).results.eachWithIndex { queue, index ->
// Default JQL is removed because when a Queue is created 'project = <related key project>' is added by default
def newJql = (queue.jql - "project = ${sourceProjectKey}" - "AND").trim()
// Replace source key project with destination key project in JQL
newJql = newJql.replace(sourceProjectKey, destinationProjectKey)
def queueCreateParameters = queueService.newQueueCreateParameterBuilder(destinationProjectServiceDeskId, queue.name)
.jql(newJql)
.fields(queue.fields)
.order(index)
.build()
queueService.addQueue(currentUser, queueCreateParameters)
}
Having an issue with this script?
Report it here