Have you built internal apps and integrations for Jira Service Desk?

Hi Community!

I’m a product manager on Jira Service Desk, looking after our APIs.

I’m looking to speak to folks that have built their own integrations and internal apps to connect JSD with the the tools, data sources, and workflows that make your organization run smoothly.

We want to learn about the experience of customizing JSD, what worked well and what some of your key challenges were.



Hi Amaresh. In one recent project, a challenge arose from the fact that customers can belong to multiple organizations.

In real life, customers play different roles in different organizations; but in Jira, roles are associated with projects, not customer-organization associations. We wanted to incorporate specific workflow logic for customers with particular roles in the organizations linked to JSD requests.

We use Service Desk internally only so we have felt the need to make changes to the tool in some cases.

  • Servlet filter to handle redirections when users click links with /queues/ or /browse/ in the URL –
    • If they are an agent, no change
    • If they have browse permission, /queues/ links redirect to /browse/ or /projects/ as appropriate
    • If they have neither permission, they’re brought to the /portals/ link in the Portal
    • Mostly we’re just using the PortalService/Manager and ServiceDeskService/Manager classes to check access.
  • Top-nav bar menu additions –
    • Requests menu like Issues menu, shows recent requests that you’ve visited and matches the Portal look with the badge showing open requests
    • Service Desks section under Projects menu, showing recently visited Service Desks and Portals
    • Mainly using PortalService/Manager and RequestService/Manager
  • Event Listener to manage Participants/Watchers –
    • We sometimes move tickets from Service Desk projects to a non-Service Desk projects. We found that Request Participants no longer works in these projects, so we have a listener that tries to move people to Watchers or Participants, depending on the direction the Issue is moving and what permissions the user has in that subsequent project.
    • We use RequestParticipantService for this.
  • Custom forms –
    • It’s pretty rough and edge case, but we’d like more flexibility in the forms.
    • I have a couple of custom forms, which hide all fields on the form and supply a totally custom form. Via javascript, I use this form to create issues in several projects. Mostly this is just a web panel though.
  • Organization/LDAP sync –
    • Again this one is pretty rough but we needed an organization that mirrored an internal LDAP group.
    • OrganizationService was used.


Some time ago I was setting up a Zapier script that would create service desk requests based on emails received. One issue I faced is that permission on the REST API are completely different from what you would expect by using the Service Desk portal. For example, anonymous users can just create a service desk request through the portal and provide their email as the reporter, but when trying to use the API to achieve this, a token with admin permissions (it might have even been global admin or something like that) was required in order to create a customer in order to tie that user to the request.

This was not ideal for us, as we were hesitant to use tokens with such rights in that context. Ideally a regular user token should be enough to do this, since it can be done through the portal anonymously.


1 Like