import com.atlassian.jira.component.ComponentAccessor
import com.atlassian.jira.issue.fields.CustomField
// the issue key of the issue to clone
final String originalIssueKey = "JRA-1"
// the summary of the new issue
final String newSummary = "A summary for the cloned issue"
// the empty map will clone all the custom fields from the original issue
final Map> customFieldsToClone = [:]
final boolean cloneAttachments = true
final boolean cloneSubTasks = true
final boolean cloneLinks = true
def loggedInUser = ComponentAccessor.jiraAuthenticationContext.loggedInUser
def issueManager = ComponentAccessor.issueManager
def issueService = ComponentAccessor.issueService
def originalIssue = issueManager.getIssueByCurrentKey(originalIssueKey)
def validationResult = issueService.validateClone(loggedInUser, originalIssue, newSummary, cloneAttachments, cloneSubTasks, cloneLinks, customFieldsToClone)
assert validationResult.valid : validationResult.errorCollection
def result = issueService.clone(loggedInUser, validationResult)
assert result.valid : result.errorCollection