Questions for Confluence license has expired.

Please purchase a new license to continue using Questions for Confluence.

Sync the epic and epic link in visual mode

 
2
1
0

We need to sync also the epic link in the visual mode but there is no given option for that, so we need to have a script for the visual mode. Any ideas?

    CommentAdd your comment...

    3 answers

    1.  
      1
      0
      -1

      Serhiy Onyshchenko Thanks for providing the helpful script for this question! Would your script work for when issues are moved from one epic to another? If not, could you provide an additional or altered script that would cover this scenario? 


      Also, I have if I do not pass over any info regarding fixversions is that part of your code going to cause issues or should I just leave it in there regardless? If my remote instance is Jira Data Center (local being Jira Cloud) do I need to do any pre-work around uploading external scripts or would this all work out of the box in visual mode?

      1. Serhiy Onyshchenko

        It does handle issue link change.
        If your remote instance is Jira on-prem, no pre-work is necessary. Though some internal API things may be different. Please, let me know how it went.

      CommentAdd your comment...
    2.  
      1
      0
      -1

      Great! it works wounderful!

        CommentAdd your comment...
      1.  
        1
        0
        -1

        Hello, SDGTLS .
        Please try adding an
        Epic Name <> Epic Name
        Mapping and then the following script after it:

        if (executionInstanceName == "SCRUMB") { // SCRUM -> SCRUMB
            // assign fix versions from SCRUM to SCRUMB
            issue.fixVersions = replica
              .fixVersions
              // ensure that all the fixVersions are available on SCRUMB
              .collect { v -> nodeHelper.createVersion(issue, v.name, v.description) }
              
            if(replica."Epic Link"){
               def await = { f -> scala.concurrent.Await$.MODULE$.result(f, scala.concurrent.duration.Duration$.MODULE$.Inf()) }
                def orNull = { opt -> opt.isDefined() ? opt.get() : null }
                
                //getTwinTraceByRelationAndRemoteIssueUrnFuture(connection: IConnection, remoteIssueUrn: String, entityType: String): Future[Option[ITwinTrace]]
                def localEpicTt = orNull(await(syncHelper.twinTraceRepository.getTwinTraceByRelationAndRemoteIssueUrnFuture(connection, replica."Epic Link".getAsString(), 'issue')))
                def localEpic = localEpicTt?.localReplica?.issueKey
                //debug.error("localEpicTt=`${localEpicTt}` replica.'Epic Link'=`${replica."Epic Link"}`")
                if(localEpic){
                    issue."Epic Link" = localEpic.urn
                }
            } else if (issue."Epic Link") {
                issue."Epic Link" = null
            }
        }

        Here's the video showing how it works:


        Happy Exalating!

          CommentAdd your comment...