How to choose a destination project based on the parent option of a cascading select custom field

    Introduction

    Imagine you have two instances,  SD and DEV, and you need to synchronize issues from SD to DEV. In SD you have a Cascading Select List customField, having two values: product (parent) & version (child). You want to select the correct DEV project based on the cascading field parent value 'product'. Let's say you have the following products and corresponding DEV projects:

    • product_X => PRODX
    • product_Y => PRODY
    • product_Z => PRODZ

    The scripts below help to map the parent value from the cascading select list to the projects.

    Sending side

    Outgoing sync

    1 replica.customFields."Product & Version" = issue.customFields."Product & Version"

    Receiving side

    Map the parent value from the cascading select to the projects and if a mapping for the option is not found or the option is not selected, use PRODX as a default.

    Incoming sync

    1 def projectMapping = [
    2	"product_X": "PRODX"
    3	"product_Y": "PRODY"
    4	"product_Z": "PRODZ"
    5 ]
    6
    7 issue.projectKey = projectMapping[replica.customFields."Product & Version"?.value?.parent?.value] ?: "PRODX"

    Drop the synchronization (indicate that you don't want to create an issue on your side) if you don't find a mapping.

    Incoming sync

    1 def projectMapping = [
    2	"product_X": "PRODX"
    3	"product_Y": "PRODY"
    4	"product_Z": "PRODZ"
    5 ]
    6
    7 def projectKey = projectMapping[replica.customFields."Product & Version"?.value?.parent?.value]
    8
    9 if (projectKey != null) {
    10  issue.projectKey = projectKey
    11  // your entire create processor goes here
    12  // ...
    13 }