Error with sync of Jira Component field to GitHub PR labels

We’ve been trying to configure sync from Jira to GitHub, where we want to:

  • Sync the Jira Component field to GitHub PR labels

We’ve run into the following persistent error when syncing issues

Relation
Sync for connection jira_to_github-components is blocked

Error Type:
Incoming script error
Error Creation Time:
Sep 25, 2025 15:37:50
Error Detail Message:
No such property: node for class: Script5
Error line: 16

The error message you’re seeing, No such property: node for class: Script5, usually means there’s a typo or a reference to a variable or object that doesn’t exist in your sync script. This often happens if you try to use something like node instead of the correct helper or object name (like nodeHelper).

To sync the Jira Component field to GitHub PR labels, here’s the recommended approach:

  1. Use an External Script for Components (Jira side):

    • Exalate provides an external script called Components.groovy for handling Jira components. You need to:
      • Download the script from the Exalate public repository.
      • Place it in the $JIRA_HOME/scripts directory on your Jira server.
      • In your outgoing sync on Jira, call: Components.send()
      • In your incoming sync on GitHub, call: Components.receive()
    • More details: Components.groovy documentation
  2. Syncing to GitHub Labels:

    • On the GitHub side, you can assign the received components as labels. For example, in your incoming sync on GitHub, you might do:
      issue.labels += replica.components?.collect { it.name }
      
    • Make sure you are referencing the correct property (replica.components) and not using any undefined variables like node.
  3. Check for Typos:

    • Double-check your sync rules for any references to node—it should likely be nodeHelper or another valid object.

If you follow the above steps and use the external script as described, you should be able to sync Jira Components to GitHub PR labels without running into the “No such property: node” error.

For more details, see the official documentation:

Let me know if you need a sample script for your sync rules!

How about for Jira Cloud?

I am not using Jira Server - how can I proceed with these suggestions on Jira Cloud?

Hi @ltam

Apologies on the delay here.

Let me take a look and will be getting back soon

Best,
Kevin

This was solved with

Set<String> incomingLabels = ((replica.labels ?: \[\]) + 

                              (replica.components ?: \[\]).collect { it.name }) as Set<String>

def currentLabels = (issue.labels ?: \[\]).collect { it.name } as Set<String>

if (incomingLabels != currentLabels) {

def labelObjects = incomingLabels.collect { labelHelper.getLabel(it) }

issue.labels = labelObjects