Forums

Articles
Create
cancel
Showing results for 
Search instead for 
Did you mean: 

JIRA Automation - Sync to CALM

Michal Tvrdý
I'm New Here
I'm New Here
Those new to the Atlassian Community have posted less than three times. Give them a warm welcome!
December 16, 2025

Hi Experts. 

We Have JIRA Data center (no cloud). And working on integration to CALM. 

But have a problem to sync JIRA Sprint to CALM Timebox.

I'm using automation to sync data. Everything working well excepts fields I've mentioned above.

Sync those two properties I've made this way : 

- web request to get list of timeboxes from CALM (there is no API to get only one using the name property)

- get ID using name from response : 

- create variable timeboxId using smart value 

- but there is a problem 

1. when I use fixed name it is working fine : 

{{#webhookResponse.body}}{{#if(equals(name, "Sprint 1"))}}{{id}}{{/}}{{/}}

In timeboxId is GUID of the timebox from CALM

2. But when I'm using dynamic variable, it is not working : 

{{#webhookResponse.body}}{{#if(equals(name, SprintName))}}{{id}}{{/}}{{/}}

SprintName is variable derived from issue.Sprint.name

In this case timeboxId variable is always empty. 

Please, How should I use smart value and enter dynamic value (sprint name). I've tried a lot of expressions, but no one working well. 

Or, how should I sync Sprint property in Task (JIRA) with Timebox property in CALM.

Thank You. 

2 answers

2 votes
Hari Krishna
Rising Star
Rising Star
Rising Stars are recognized for providing high-quality answers to other users. Rising Stars receive a certificate of achievement and are on the path to becoming Community Champions.
December 16, 2025

Hi @Michal Tvrdý ,

In Jira Data Center automation, variables are not resolved automatically inside string comparisons. That’s why the condition works with a hard-coded value but fails when using a variable.

When you use:

{{#if(equals(name, SprintName))}}


SprintName is treated as plain text, not as a resolved smart value, which results in an empty match.

To make this work, reference the smart value directly in the comparison, for example:

{{#webhookResponse.body}}
{{#if(equals(name, issue.Sprint.name))}}
{{id}}
{{/}}
{{/}}


Alternatively, if you are using a variable, it must be resolved explicitly:

{{#webhookResponse.body}}
{{#if(equals(name, "{{SprintName}}"))}}
{{id}}
{{/}}
{{/}}


Using the original smart value (issue.Sprint.name) is the recommended approach in Data Center, as it avoids variable-scope and resolution issues.

This behavior is expected and is a limitation of how Jira Data Center automation evaluates smart values in conditional expressions.

Michal Tvrdý
I'm New Here
I'm New Here
Those new to the Atlassian Community have posted less than three times. Give them a warm welcome!
December 16, 2025

I've already checked those expressions. But the first one returns no value and the second end with error : String must be closed: "{{SprintName: {{#webhookResponse.body}}{{#if(equals(name, "{{SprintName}}"))}}{{id}}{{/}}{{/}}

0 votes
Bill Sheboy
Rising Star
Rising Star
Rising Stars are recognized for providing high-quality answers to other users. Rising Stars receive a certificate of achievement and are on the path to becoming Community Champions.
December 16, 2025

Hi @Michal Tvrdý 

There is a long-standing limitation / defect for long-format list iteration syntax:

Once inside a long-format list iterator, only data from that scope and lower can be accessed.

Thus, other smart values in the issue and created variables cannot be used inside.  This problem exists in Jira Cloud, Server, and Data Center automation rules.  Atlassian knows about this limitation and has tried several times to fix it...without success.

 

Without seeing your entire rule for context, there are two possible solutions:

  • When using branching (rather than long-format iteration) over a list, use conditions inside the branch
  • For other cases, use a dynamic list searching approach, using created variables, regular expressions, and the inline list iteration syntax.  To learn more about that approach, please see this article I wrote.

 

Kind regards,
Bill

Michal Tvrdý
I'm New Here
I'm New Here
Those new to the Atlassian Community have posted less than three times. Give them a warm welcome!
December 17, 2025

I've checked the link, but this is about lookup issues. However I need to lookup through response data ... 

Bill Sheboy
Rising Star
Rising Star
Rising Stars are recognized for providing high-quality answers to other users. Rising Stars receive a certificate of achievement and are on the path to becoming Community Champions.
December 17, 2025

That article link is about dynamically searching any list's data: lookup results, web response, issue object field (e.g., fix versions), etc.  The solution pattern is the same for any list source:

  1. flatten the desired fields from the list into a created variable with delimiters
  2. create a dynamic regular expression, storing it in a created variable
  3. split the flattened data #1 back into a list, and use inline iteration with the match()  function and the regular expression #2 to find the search results
  4. use text functions to extract the desired fields

 

Michal Tvrdý
I'm New Here
I'm New Here
Those new to the Atlassian Community have posted less than three times. Give them a warm welcome!
December 18, 2025

Sorry, but I still don't know how should I implement getting UUID from CALM stories using the lookup.

Bill Sheboy
Rising Star
Rising Star
Rising Stars are recognized for providing high-quality answers to other users. Rising Stars receive a certificate of achievement and are on the path to becoming Community Champions.
December 18, 2025

You appear to be calling a REST API endpoint with the Send Web Request action to get the data.  The list of items returned in the web response would fit with the step #1 described above, then continue the steps from there.

I recommend trying it with a test rule, perhaps which does not updating anything so it can be run repeatedly for testing.

 

If you have tried that and it does not work, please post the following for context:

  • an image of your complete rule in one continuous image
  • images of the rule actions where you create the relevant variables, and then use them
  • an image of the audit log details showing the rule execution
  • explain what is not working as expected, and why you believe that to be the case

 

Michal Tvrdý
I'm New Here
I'm New Here
Those new to the Atlassian Community have posted less than three times. Give them a warm welcome!
December 19, 2025

There is no problem that this doesn't work. But I don't know how should I do it. 

Step 1 - Ok, clear, I've already created web request to get data 

Step 2 - OK, store the data in variable using "create variable".

Step 3 - Sorry, but I don't know how should I do it? Which action I should use ? I need an example how to do it. Because from help in JIRA I'm not too wise :-) 

Step 4 - the same as step 3.

 

Finally, I need to use UUID of timebox in following WEB request (creating TASK in CALM)

 

BODY : 
{
"projectId": "1870d641-2a41-4d35-a4b4-f806b4c37dd0",
"title": "[JIRA ISSUE - {{issue.issuetype.name}}] - {{issue.summary}}",
"type": "CALMTASK",
"externalId":"{{issue.key}}",
"priorityId": "{{PriorityCALMID}}",
"description": "{{issue.description.replace("\r\n","<br>").replace("\n","<br>").replace("\"","\\\"")}}",
"startDate": "{{issue.fields.customfield_11512}}",
"dueDate": "{{issue.fields.customfield_11513}}",
"storyPoints": 3,
"effort": 5,
"timeboxId": "{{timeboxId}}",
"assigneeId":"{{issue.fields.assignee.emailAddress}}"
}

 

But the {{timeboxId}} is always empty ... and neet to know how should I fill this property ... 

Bill Sheboy
Rising Star
Rising Star
Rising Stars are recognized for providing high-quality answers to other users. Rising Stars receive a certificate of achievement and are on the path to becoming Community Champions.
December 19, 2025

Thanks for that information, and let's align on some context...please post:

  • an image of your complete automation rule in a single image for continuity
  • an image of the audit log details showing the rule execution
  • explain from where you are getting the {{timeboxId}} value

 

Seeing those may help explain what you are observing.  Thanks!

Suggest an answer

Log in or Sign up to answer