This article applies to Exalate Classic only. If you're using the New Exalate experience, please refer to the New Exalate documentation.
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 }