1
0
-1
  1. Ariel Aguilar

    HI @Dhiren what configuration is used, more details on this?

CommentAdd your comment...

1 answer

  1.  
    1
    0
    -1

    In the scenario I am creating, we have a connection between Zendesk and Jira so that multiple Zendesk customer tickets link to each Jira ticket. To help our Development and Product teams understand which customers have logged an issue, we have a custom label field on Jira to list customers impacted.


    Zendesk outgoing snippet:

    def orgId = issue.organization_id 
    if(orgId){
      def orgName = httpClient.get("/api/v2/organizations/"+(long)orgId+".json").organization.name
      replica.org = orgName.replaceAll(" ", "_")
    }


    Jira incoming snippet:

    def org = replica.org
    issue.customFields."[OT Test] Customer Label".value += org

    This is based on this documentation.


    However, it doesn't add a label to the field, it overwrites what is already there.


    To try to workaround this, I tried creating a variable based on the current value of the custom field.

    def currentLabel = issue.customFields."[OT Test] Customer Label".value.toString()

    If I return this in an error or in another field it always gives null, regardless of what is in the field. So I can't see that there is any workaround to the issue.

    1. Ariel Aguilar

      Hi Ola,

      I think to understand what might help, may I ask to try the following on the Jira incoming:

      if(issue.customFields."[OT Test] Customer Label".value == null){
      issue.customFields."[OT Test] Customer Label".value = replica.org
      } else {
        issue.customFields."[OT Test] Customer Label".value += replica.org  
      }

      Kind regards,

      Ariel

    2. Ola Timpson

      Hi Ariel


      The suggested code has the same behaviour - replacing the value in the field not adding an additional label. Given the value always returns as being null, and even if it didn't the += doesn't work, I'm not surprised this was the case.


      Thanks,

      Ola

    3. Ariel Aguilar

      Hi Ola, one question is this Jira Cloud or server? What Exalate version do you have?

      Kind regards,

      Ariel

    4. Ola Timpson

      Hi Ariel

      This is Jira Cloud. The version is Exalate v. 5.3.4 (Core v. 5.3.10)

      Thanks,

      Ola

    5. Ariel Aguilar

      Hi Ola,

      I reproduced this in Jira Cloud / same Exalate version and += works for me and the suggested code I sent before as well. I am wondering if you have more than 1 custom field with name [OT Test] Customer Label and Exalate is picking the first one which is not the one you see on the ticket. May ask if you can try to check what is the custom field ID and do something basic like:

      issue.customFields."10301".value += replica.org

      Kind regards,

      Ariel


    6. Ola Timpson

      Hi Ariel

      There was only 1 custom field with that name, but I tried changing the code to the field ID anyway.

      Full incoming code in Jira:

      def remoteIssueUrn = replica.customFields."Defect Reference"?.value
      if(remoteIssueUrn){
        def localIssue = httpClient.get("/rest/api/2/issue/"+remoteIssueUrn)
        if(localIssue == null) {
            throw new com.exalate.api.exception.IssueTrackerException("Issue with key "+remoteIssueUrn+" was not found")
        }
        else {
          issue.id = localIssue?.id
          issue.key = localIssue?.key
          issue.labels += nodeHelper.getLabel("zendesk")
          issue.customFields."10035".value += replica.org 
          syncHelper.syncBackAfterProcessing()
        }
        return;
      }

      For the first 2 issues in the sync it overwrote the label value with null[org name]. After this the sync errored with "Cannot execute null+null" when it reached a Zendesk ticket with no organisation



      Thanks,

      Ola

    7. Ariel Aguilar

      Hi Ola then you can try something similar to the code suggested:

      if(issue.customFields."10035".value == null && replica.org != null){
      issue.customFields."10035".value = replica.org
      } else if(replica.org != null){
      issue.customFields."10035".value += replica.org 
      }
      

      Kind regards,

      Ariel

    8. Ola Timpson

      Hi Ariel


      That has allowed the sync to complete, but given the value always reads as null it hasn't stopped the overwriting issue.


      Thanks,

      Ola

    9. Ariel Aguilar

      Hi Ola,

      By this moment, I believe it would be nice to open a support ticket because there might be something in your environment / configuration causing this problem.

      Kind regards,

      Ariel

    CommentAdd your comment...