We can create a Script Listener triggered at UPDATE ISSUE event.
Just copy/paste the code and configure the name of the Type of Link.
String tipolink = "Sync"; //Name of the type of link import com.atlassian.jira.component.ComponentAccessor import com.atlassian.jira.issue.IssueManager import com.atlassian.jira.user.ApplicationUser import com.atlassian.jira.user.util.UserManager import com.atlassian.jira.issue.Issue import com.atlassian.jira.issue.status.Status import com.atlassian.jira.issue.IssueManager import com.atlassian.jira.issue.CustomFieldManager import com.atlassian.jira.issue.fields.CustomField import com.atlassian.jira.component.ComponentAccessor import com.atlassian.jira.event.issue.AbstractIssueEventListener import com.atlassian.jira.event.issue.IssueEvent import com.opensymphony.workflow.loader.ActionDescriptor import com.opensymphony.workflow.loader.StepDescriptor import com.atlassian.jira.workflow.JiraWorkflow import com.atlassian.jira.issue.comments.CommentManager import com.atlassian.jira.issue.changehistory.ChangeHistoryManager import com.atlassian.jira.issue.changehistory.ChangeHistoryItem import com.atlassian.jira.issue.comments.Comment import com.atlassian.jira.util.ErrorCollection import com.atlassian.jira.bc.issue.IssueService import com.atlassian.jira.issue.IssueInputParameters import com.atlassian.jira.bc.issue.IssueService.TransitionValidationResult import com.atlassian.jira.bc.issue.IssueService.IssueResult import com.atlassian.jira.issue.IssueManager import com.atlassian.jira.issue.MutableIssue import com.atlassian.jira.issue.index.* import com.atlassian.jira.issue.link.IssueLink; import org.apache.log4j.Category ApplicationUser user = event.getUser() Issue issue = event.getIssue() Status status = issue.getStatus() def Category log = Category.getInstance("com.onresolve.jira.groovy.PostFunction") log.setLevel(org.apache.log4j.Level.DEBUG) log.debug "debug statements" Long Estimate = issue.getOriginalEstimate(); log.debug "Original Estimate:"+ Estimate; def issueLinkManager = ComponentAccessor.getIssueLinkManager() List<IssueLink> allInIssueLink = issueLinkManager.getInwardLinks(issue.getId()); for (Iterator<IssueLink> inIterator = allInIssueLink.iterator(); inIterator.hasNext();) { IssueLink issueLink = (IssueLink) inIterator.next(); def linkedIssue = issueLink.getSourceObject(); log.debug "LinkTypeId:" + issueLink.getIssueLinkType().getName() + " linked: ${linkedIssue.getId()}, ${linkedIssue.getKey()}. DETECTED:" + linkedIssue.getStatusObject().getName(); if (issueLink.getIssueLinkType().getName().equals(tipolink) ) { log.debug "linked Content: ${linkedIssue.getId()}, ${linkedIssue.getKey()}." def linked = (MutableIssue) linkedIssue; linked.setOriginalEstimate(Estimate); linked.store(); log.debug "Original Estimate copied"; } }
Don’t forgive to set in the Screens the System field “Time Tracking” to set the Original Estimate!