2
1
0

Hi,


I have two instances which sync issues between, the connection is triggered by workflow post-function.

Let's say instance #1, and instance #2.


The rules are same for both, we dont want to sync internal comments, only external comments.
When issue created from #1 and sync to #2, everything is working properly.
When issue created from #2 and sync to #1, internal comments from #2 are not synced to #1 which is correct, but internal comments from #1 are still synced to #2 which is not correct.


Please advise how to solve this issue.


Regards,

Kiet

    CommentAdd your comment...

    1 answer

    1.  
      1
      0
      -1

      Outgoing sync

      replica.key            = issue.key
      replica.type           = issue.type 
      replica.assignee       = issue.assignee 
      replica.reporter       = issue.reporter
      replica.summary        = issue.summary
      replica.description    = issue.description
      replica.labels         = issue.labels
      replica.comments       = issue.comments.findAll { !it.internal }
      ...

      Incoming sync

      if(firstSync){
         // If it's the first sync for an issue (local issue does not exist yet)
         // Set project key from source issue, if not found set a default
         issue.projectKey   =  "TGT"
         // Set type name from source issue, if not found set a default
         issue.typeName     =  "Incident"
      }
      issue.summary      = replica.summary
      issue.description  = replica.description
      issue.labels       = replica.labels
      issue.comments     = commentHelper.mergeComments(issue, replica)
      ...


      Rules are same for both instances.

      1. Francis Martens (Exalate)

        Can you share your rule set?


      2. Kiet Ngo

        Francis Martens (Exalate) Hi, do you have any updates?

      3. Francis Martens (Exalate)

        To set the expectations - Community gets attention if time allows. 

        Is the outgoing sync you provided the one of Jira #1 or Jira #2?

        Can you provide the incoming, outgoing sync of both ends and label it accordingly?

      4. Kiet Ngo

        Jira #1 TGT https://cevalogistics.atlassian.net/
        Outgoing sync

        replica.key            = issue.key
        replica.type           = issue.type 
        replica.assignee       = issue.assignee 
        replica.reporter       = issue.reporter
        replica.summary        = issue.summary
        replica.description    = issue.description
        replica.labels         = issue.labels
        replica.comments       = issue.comments.findAll { !it.internal }
        replica.resolution     = issue.resolution
        replica.status         = issue.status
        replica.parentId       = issue.parentId
        replica.priority       = issue.priority
        replica.attachments    = issue.attachments
        replica.project        = issue.project
        
        //Comment these lines out if you are interested in sending the full list of versions and components of the source project.
        replica.project.versions = []
        replica.project.components = []
        
        /*
        Custom Fields
        */
        ...


        Incoming sync

        if(firstSync){
           // If it's the first sync for an issue (local issue does not exist yet)
           // Set project key from source issue, if not found set a default
           issue.projectKey   =  "TGT"
           // Set type name from source issue, if not found set a default
           issue.typeName     =  "Incident"
        }
        issue.summary      = replica.summary
        issue.description  = replica.description
        issue.labels       = replica.labels
        issue.comments     = commentHelper.mergeComments(issue, replica)
        ...


        JIRA #2 IRL https://t9275.atlassian.net/

        Outgoing sync

        replica.key            = issue.key
        replica.type           = issue.type 
        replica.assignee       = issue.assignee 
        replica.reporter       = issue.reporter
        replica.summary        = issue.summary
        replica.description    = issue.description
        replica.labels         = issue.labels
        replica.comments       = issue.comments.findAll { !it.internal }
        replica.resolution     = issue.resolution
        replica.status         = issue.status
        replica.parentId       = issue.parentId
        replica.priority       = issue.priority
        replica.attachments    = issue.attachments
        replica.project        = issue.project
        
        //Comment these lines out if you are interested in sending the full list of versions and components of the source project.
        replica.project.versions = []
        replica.project.components = []
        
        /*
        Custom Fields
        
        replica.customFields."CF Name" = issue.customFields."CF Name"
        */


        Incoming sync

        if(firstSync){
           // If it's the first sync for an issue (local issue does not exist yet)
           // Set project key from source issue, if not found set a default
           issue.projectKey   = "IRL"
           // Set type name from source issue, if not found set a default
           issue.typeName     = "Incident"
           issue.customFields."Request Type".value = "Operational Issue"
        }
        issue.summary      = replica.summary
        issue.description  = replica.description
        issue.labels       = replica.labels
        issue.comments     = commentHelper.mergeComments(issue, replica)
        issue.attachments  = attachmentHelper.mergeAttachments(issue, replica)
        ...


        Francis Martens (Exalate) updated outgoing/incoming sync rules for both instances.

      5. Francis Martens (Exalate)

        Are both Jira Service Desk or is there a combination Jira Service Desk / Jira Software

      6. Kiet Ngo

        They are both Jira service desk

      7. Francis Martens (Exalate)

        Further trying to understand


        So when an issue is created in #1 and exalated to #2, internal comments are not synced.

        But when the issue is created in #2 and exalated to #1, internal comments from #1 are being synced


        This is strange because it is using the same outgoing sync.
        Is the customer request type set on issue #1 which has been exalated?  Just a hunch

      8. Kiet Ngo

        This is strange for me as well. Customer request type on both issues are set.

      9. Francis Martens (Exalate)

        Can you check the incoming sync on #1.

        if(firstSync){
           // If it's the first sync for an issue (local issue does not exist yet)
           // Set project key from source issue, if not found set a default
           issue.projectKey   =  "TGT"
           // Set type name from source issue, if not found set a default
           issue.typeName     =  "Incident"
        }
        ...


        The 'request type' is not set (while it is on the incoming sync of #2)



      10. Kiet Ngo

        You're correct. After changed the script to set Request Type it works properly. Thanks for your support Francis Martens (Exalate) !

      11. Francis Martens (Exalate)

        Please mark the answer correct (smile)

        It is helpful for other exalate users.

      12. David Loszewski

        Could someone tell me how you would differentiate between the incoming sync and outgoing sync script?  Where would you place them?  When I go to Exalate→Connections, the script is the same for both the incoming and outgoing. 

      13. Francis Martens (Exalate)

        Hi David Loszewski 

        Good question - assuming you have a scripted connection, you can distinguish




        If your view is different - can you post a screenshot.

      14. Francis Martens (Exalate)

        Also, if you are in doubt how Exalate works - check the explainer video


      CommentAdd your comment...