Populating a required remote field from a specific field on your instance

    Warning: Despite our best efforts, code can change without notice due to a variety of factors. If you encounter an issue in any of the code shown here and find that a specific block of code is not correct, or is causing errors, please check with the Community to find an updated version.

    One of the most common requirements when configuring  a synchronization between  Service Desk and Software Development in JIRA is making sure you do not send the original data from the customer request.

    For example, the original description and summary from the Service Desk ticket 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 requirements

    • 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

    1. User submits customer request on SD
    2. Support engineer escalates the request to development using Exalate sync
    3. 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)
    4. Exalate triggers sync only when these fields are not empty
    5. 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 mentioned above.

    In this example we can see how this specific configuration can 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
      • Note: 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)

      1 // add following lines:
      2 replica.customKeys."sdProjectKey" = 
      3   issue.customFields."Development Project"
      4     .value
      5     .value
      6     .replaceAll("^.+\\((.+?)\\)\$", "$1")
      7 replica.customKeys."Dev Summary" = issue.customFields."Development Summary"?.value
      8 replica.customKeys."Dev Description" = issue.customFields."Development Description"?.value
    • Adapt the Incoming sync (create processor) on the destination side (Development)

      1 // add this to the first line
      2 if (replica.customKeys."sdProjectKey" == null || 
      3     replica.customKeys."Dev Summary" == null || 
      4     replica.customKeys."Dev Description" == null) {
      5   // don't create any issues and cancel the sync if the remote side does not send all the required fields
      6   return
      7 }
      8 // and then add these lines
      9 issue.projectKey = replica.customKeys."sdProjectKey"
      10 issue.summary = replica.customKeys."Dev Summary"
      11 issue.description = replica.customKeys."Dev Description"
      12 //remove the line `if (issue.projectKey == null) { return }`
      13
      14 //...