The Exalate team will be on holiday for the coming days - returning Jan 4
Enjoy & stay safe

Trigger deletion of remote issue upon issue type or project change

 
2
1
0

Hi,

we're syncing a project in our local Jira Server instance with a project on a remote Jira Server instance and came across the following question:

When the issue type of an issue on our local instance is changed or the an issue on our local instance is moved to another project we would like to trigger the deletion of the corresponding remote issue. Is there a way to do this?

So far, I was only able to find a way to unexalate the issue.

Thanks a lot in advance

Kind regards

Johannes

    CommentAdd your comment...

    1 answer

    1.  
      2
      1
      0

      Hello, Johannes Kern
      Could you try doing something like this in the "Incoming Sync" script on the destination instance: 

      if(firstSync){
         // ... your usual rules for setting project and issue type go here (untouched)
      } else {
          final def im = com.atlassian.jira.component.ComponentAccessor.issueManager
          def deleteIssue = { jIssue ->
              final def nservInternal = com.atlassian.jira.component.ComponentAccessor.getOSGiComponentInstanceOfType(com.exalate.api.node.INodeService.class)
              def proxyAppUser = nservInternal.getProxyUser()
              
              try {
                  im.deleteIssue(proxyAppUser, jIssue as com.atlassian.jira.issue.Issue, com.atlassian.jira.event.type.EventDispatchOption.ISSUE_DELETED, false)
              } catch (Exception ignore) {
                  im.deleteIssue(proxyAppUser?.getDirectoryUser(), jIssue as com.atlassian.jira.issue.Issue, com.atlassian.jira.event.type.EventDispatchOption.ISSUE_DELETED, false)
              }
          }
          
          if (replica.type?.name != previous.type?.name || replica.project?.id != previous.project?.id) {
              def jIssue = im.getIssueObject(issue.key as String)
              Thread.start {
                  Thread.sleep(1000L)
                  deleteIssue(jIssue)
              }
              return
          }
      }// ... the rest of the incoming sync script remains untouched

      Here's a video showing, how it worked for me:

       
      Let me know if it works for you (smile)
      Happy Exalating!

      1. Johannes Kern

        Hi Serhiy Onyshchenko ,


        thank you very much for the quick reply. The script worked. 

        I posted a follow-up-question with a related use case here: Mark remote issue as unexalated when unexalating local issue.


        Cheers
        Johannes

      CommentAdd your comment...