---
title: "Board Sync: Update version property while version move on another Board"
canonical: "https://help.releasemanagement.app/space/RMC/3112108061/Board%20Sync%3A%20Update%20version%20property%20while%20version%20move%20on%20another%20Board"
format: markdown
---
> Macro (include)

# Troubleshooting?

> ℹ️ Have issues running Release Automation rules? Please check our troubleshooting guide - [https://releasemanagement.atlassian.net/wiki/spaces/RMC/pages/2522284033/Release+Automation+for+Jira+Triggers+Conditions+Actions#%F0%9F%86%98-Troubleshooting-Automation-Rules](https://releasemanagement.atlassian.net/wiki/spaces/RMC/pages/2522284033/Release+Automation+for+Jira+Triggers+Conditions+Actions#%F0%9F%86%98-Troubleshooting-Automation-Rules).

# Topics

> Macro (toc)

# Introduction

**Use case**: I would like to update version properties on one board based on property values on another board and triggered by moving the version on another board

# Step 1: Obtain Prerequisites

The board initiating the synchronization will be referred to as the "Original Board," while the board to be updated will be called the "Destination Board."

**Obtain **<u>**Destination Board ID**</u>**:**

![image](media://6f5d9d56-9629-4656-960c-c90d02883a72)

**Obtain **<u>**Property IDs **</u>**and property **<u>**option IDs**</u>** from the Destination Board**

Execute the Get Board method from the API tab on the Destination Board :

![image-20240902-121840.png](media://4a69cabd-5edb-44b9-bb5a-483cb3254a70)

Locate  properties inventory that is called **customFields** collection:

![image-20241003-103148.png](media://7e68e28e-3a2e-4019-afc8-1de7a10c1a24)

Extract all needed properties IDs for needed values including options IDs for multi and single select fields.

***Example:***

| ***Property:  “Risk level”*** | ***Property:  “Risk Description”*** |
| --- | --- |
| ***Property ID:**** *`66fe75d24g79c1f34935706f`<br>***Property type****: Single select*<br>***Options:***<br>- *Low: - ID: *`66fe13d497179b971da9b565`
- *Medium: - ID: *`66f173d234c74c7f445367070`
- *High:- ID: *`61fe72e137149b861d73b566` | ***Property ID:**** *`66f878d26g74c1f24935706f`<br>***Property type****: String*<br>***Options:***<br>*Not applicable for string* |

**Obtain API Access Token:**

[https://releasemanagement.atlassian.net/wiki/spaces/RMC/pages/3168108545](https://releasemanagement.atlassian.net/wiki/spaces/RMC/pages/3168108545)   

# Disclaimer: Complexity !!!

> ℹ️ If a simple property requires synchronization, it can be handled directly through Release Management automation. 
> ℹ️ 
> ℹ️ However, for more complex properties, such as Single Select or Multiselect fields, a lookup table is necessary to map property IDs between boards. As this capability is not yet supported in Release Management automation, Jira automation must be used to achieve this.
> ℹ️ 
> ℹ️ In this example, we will demonstrate a solution for synchronizing complex properties.

In this example, we aim to update the same version on the Destination Board when the version is moved to the "In Progress" status on the Original Board. Additionally, the Single Select property "*Risk Level*" and the string property "*Risk Description*" will be transferred from the Original Board to the Destination Board.

# Step 2: Create a Jira Automation rule to execute the update

Open any project and in the project settings add new Jira automation 


**Add “Incoming Webhook“ trigger**

![image-20241007-123050.png](media://8f79f070-b6bc-4651-a8e2-fef90269bbb7)

Configure it like on the picture and copy the URL

![image-20241007-123412.png](media://26fc3156-dc50-4849-ab4e-1572414e84b4)

Save the URL as it we will be used in the next steps.


**Create a variable “Risk Level“**

Let's create a variable Risk level that will be used to store the value from “Risk level” on the Original board. This will simplify the variable usage in the next steps.

Create a variable with the following configuration:

- ***Variable name*****:** riskLevel
- ***Smart Value:***** **{{webhookData.Risk Level}}

![image-20241224-095333.png](media://64704b92-dee5-4068-9e30-e1d0a4c6f4e3)


**Create a variable Risk Description **

Actually for the same purpose.

- ***Variable name*****:** riskDescription
- ***Smart Value*****: **{{webhookData.Risk Description}}


**Add “Create Lookup table” action**

This step involves defining a mapping between field option IDs for the Original and Destination Boards. Mapping is necessary when using Single or Multiselect fields. However, for plain fields such as number, user, multi-user, string, date, or date-time fields, no mapping is required.

![image-20241007-123619.png](media://afa23f12-b19f-4a58-ab9a-5226a279d22f)

Set the following values

- ***Lookup table variable name:***** **valuesTable
- ***Values***

| ***Key*** | ***Value*** |
| --- | --- |
| Text Value from the single/multi-select field:<br>**ID** from the destination board | The values are prepared in prerequisites |
| Text Value from the single/multi-select field:<br>**ID** from the destination board | The values are prepared in prerequisites |

***Example****:*

![image-20251113-132832.png](media://21d9d288-d943-4c0a-b5ed-84c4a3d43089)

 

**Update “Risk Level“multi-select variable**

Add “Send Web Request“ action

***Web request URL****:  <*https://rmcloud.releasemanagement.app/api/1/board/<PUT_HERE_DESTINATION_BOARD_ID>/version/{{webhookData.entityId}}/customField>

***Method****: *<PUT>

***Enable option****: *<Delay execution of subsequent rule actions until we've received a response for this web request>

***Payload****: *

```json
{"<Destination_board_property_id>":"{{valuesTable.get(riskLevel)}}"}
```

where ***<Destination_board_property_id>**** *is the destination board property ID from the prerequisites section 

***Headers: ***Open Headers and add header

> ***X-RM-Token:**** <personal_token_body>*

> ⚠️ At the same time, the Authorization header should be removed from the request if used.

***Example****:*

![image-20251113-133035.png](media://2a8c73a9-98a3-422d-8852-64dfd8555738)


**Update “Risk Description“ String field **

Add “Send Web Request“ action

***Web request URL****:  <*https://rmcloud.releasemanagement.app/api/1/board/<PUT_HERE_DESTINATION_BOARD_ID>/version/{{webhookData.entityId}}/customField>

***Method****: <*PUT>

***Enable option****:* Delay execution of subsequent rule actions until we've received a response for this web request

***Payload****: *

```json
{"<destination_board_property_id>":"{{riskDescription}}"}
```

where ***<Destination_board_property_id>**** *is the destination board property ID from the prerequisites section 

***Headers: ***Open Headers and add header

> ***X-RM-Token:**** <personal_token_body>*

> ⚠️ At the same time, the Authorization header should be removed from the request if used.

***Example****:*

![image-20251113-133204.png](media://07e99880-66d9-42ef-b460-26af3b252638)

# Step 3: Create an Automation rule on the Original Board and connect it to the Jira Automation rule

Open the Original board and create an automation rule:

![image-20240920-122205.png](media://a1d04895-b499-4ef9-a466-985134d42c85)

![image-20240920-122300.png](media://04ca0594-72ab-48e1-84d1-24f16d5e5cd7)

Fill the data line on the screen and add a condition

![image-20240920-123342.png](media://d062e4e1-6879-4544-8df5-84955c49bdd5)

Add Field condition:

![image-20240920-124314.png](media://c1d441c4-4592-4755-999c-30b6617b5cd4)

And select the status that should be used for triggering the rule. In our case “In progress“

![image-20240920-124355.png](media://8969c05e-389f-4a09-829b-3cc4c06630eb)

Add Invoke Jira Automation Action action with the following settings:

> 📝 As of rest change you would also need to cope a **Secret Key** in addition to URL.

![image-20241224-121812.png](media://dca91838-202b-4294-ba7d-82dca3e94e6f)

Save the Rule. 

# Step 4: Test it

Test it by moving the version to the needed column on the original board

Check result: 

![image-20240920-141156.png](media://94d0e1c3-712a-450b-a0f1-d341c529f684)

Open Jira automation rule and check the result:

![image-20241224-122005.png](media://94dc6694-7bf4-426b-8a36-c19edea2f770)

> Macro (include)