One of the common requests when configuring synchronization between the Service Desk and Software Development in JIRA is that you don't want to send the original data from the customer request.

For example, the original description and summary from the Service Desk should not be sent to the Software Development Jira. But the Dev Jira requires a description and summary when creating an issue.

This article describes how this challenge could be solved with the help of Exalate. 

 

Configuration requirement

  • Synchronization from Service Desk to Jira Software.
  • Don't sync the original summary and description from a Service Desk request. 
  • Set custom description and summary when sending the request to Development (Exalate to Dev)

Flow

  • User submits customer request on SD
  • Support engineer escalates the request to development using Exalate sync
  • Once SD request status changes from Open to Exalate to development the support engineer must provide specific information for the remote dev issue (2 custom fields) 
  • Exalate triggers sync only when these fields are not empty
  • The issue is created on the destination side (dev) with custom description and summary, specified on the source side(SD):
    Destination side (JIRA Software development): issue Summary and Description fields are populated with the data from the SD custom fields submitted on the transition screen respectively

Solution and example

With the help of JIRA and Exalate, we've solved the requirement, specified above.

Check this example to get a better understanding of how this configuration could be set up and used.

 

  • Sync sides:
    • SD (service desk)
    • Development (JIRA Software)
  • Custom fields which help to populate the remote development project data from the SD side
    • A single select field called Development Project

      Field options must keep the following format

    • A single line text custom field called Development Summary
    • A multi-line text custom field Development Description
  • Add these custom fields to the Send to Development (Exalate) transition screen
  • Create the Exalate Trigger's JQL query to trigger the synchronization only once all the custom fields are submitted

    "Development Project" IS NOT EMPTY AND "Development Summary" IS NOT EMPTY AND "Development Description" IS NOT EMPTY

  • Adapt the Outgoing sync (data filter) on the source side (SD)

    // add following lines:
    replica.customKeys."sdProjectKey" = 
      issue.customFields."Development Project"
        .value
        .value
        .replaceAll("^.+\\((.+?)\\)\$", "$1")
    replica.customKeys."Dev Summary" = issue.customFields."Development Summary"?.value
    replica.customKeys."Dev Description" = issue.customFields."Development Description"?.value

  • Adapt the Incoming sync (create processor) on the destination side (Development)

    // add this to the first line
    if (replica.customKeys."sdProjectKey" == null || 
        replica.customKeys."Dev Summary" == null || 
        replica.customKeys."Dev Description" == null) {
      // don't create any issues and cancel the sync if the remote side does not send all the required fields
      return
    }
    // and then add these lines
    issue.projectKey = replica.customKeys."sdProjectKey"
    issue.summary = replica.customKeys."Dev Summary"
    issue.description = replica.customKeys."Dev Description"
    //remove the line `if (issue.projectKey == null) { return }`
    
    //...