Du ser en gammel version af denne side. Se den nuværende version.

Sammenlign med nuværende Vis sidehistorik

« Forrige Version 2 Næste »

This script adds all Organisations for a User to a Ticket that is being created in Jira service Desk - Created via JIRA, not the Portal. It uses the Reporter.

Notice, a User can belong to several Organisations, all will be added to the Ticket:

Thanks to Adaptavist for the Script (smil)

import com.atlassian.fugue.Option
import com.atlassian.jira.component.ComponentAccessor
import com.atlassian.jira.issue.ModifiedValue
import com.atlassian.jira.issue.MutableIssue
import com.atlassian.jira.issue.util.DefaultIssueChangeHolder
import com.atlassian.servicedesk.api.ServiceDeskManager
import com.atlassian.servicedesk.api.organization.CustomerOrganization
import com.atlassian.servicedesk.api.organization.OrganizationService
import com.atlassian.servicedesk.api.organization.OrganizationsQuery
import com.atlassian.servicedesk.api.organization.UsersInOrganizationQuery
import com.atlassian.servicedesk.api.util.paging.LimitedPagedRequest
import com.atlassian.servicedesk.api.util.paging.LimitedPagedRequestImpl
import com.onresolve.scriptrunner.runner.customisers.PluginModule
import com.onresolve.scriptrunner.runner.customisers.WithPlugin

@Grab(group = 'com.atlassian.servicedesk', module = 'jira-servicedesk-api', version = '3.3.0-REL-0012')
@WithPlugin("com.atlassian.servicedesk")
@PluginModule
ServiceDeskManager serviceDeskManager
@PluginModule
OrganizationService organizationService
MutableIssue issue = issue
def currentUser        = ComponentAccessor.getJiraAuthenticationContext().getLoggedInUser()
def serviceDeskProject = serviceDeskManager.getServiceDeskForProject(issue.projectObject)
def serviceDeskId      = serviceDeskProject.right()?.get()?.serviceDeskId as Integer
if (!serviceDeskId) {
    log.debug "Could not find service desk id ${serviceDeskId}, maybe the project ${issue.projectObject.key} is not a service desk one."
    return
}
def organizationsToSet = []
// get the available organizations for that project
def organizationsQuery = new OrganizationsQuery() {
    @Override
    Option<Integer> serviceDeskId() {
        return new Option.Some<Integer>(serviceDeskId)
    }
    @Override
    LimitedPagedRequest pagedRequest() {
        return new LimitedPagedRequestImpl(0, 10, 500)
    }
}
// iterate over the organizations and if the reporter is part of any keep this organization in a collection
organizationService.getOrganizations(currentUser, organizationsQuery).right().get().results.each { organization ->
    def usersInOrganizationQuery = new UsersInOrganizationQuery() {
        @Override
        CustomerOrganization organization() {
            return organization
        }
        @Override
        LimitedPagedRequest pagedRequest() {
            return new LimitedPagedRequestImpl(0, 10, 500)
        }
    }
    if (issue.reporter in organizationService.getUsersInOrganization(currentUser, usersInOrganizationQuery).right().get().results) {
        organizationsToSet.add(organization)
    }
}
def cf = ComponentAccessor.getCustomFieldManager().getCustomFieldObjectByName("Organizations")
cf.updateValue(null, issue, new ModifiedValue(issue.getCustomFieldValue(cf), organizationsToSet), new DefaultIssueChangeHolder())
  • Ingen etiketter