HI All,
Could you please let me know how to store the issue change history like transition time, tansition from, tansition to and the comment to a free text field?
I guess its possible by script runner in post function. Could you please share some sample script to get this info.
Thanks,
Sanu P Soman
Hi Sanu,
Below I have attached a sample script wrote for JIRA 6.4 which will get the change history information for the previous transition. This script should be placed inside a Scripted Field.
Please note if you are using this on a different version of JIRA then you may need to update this slightly.
import com.atlassian.jira.component.ComponentAccessor
import com.atlassian.jira.event.type.EventDispatchOption
import com.atlassian.jira.ComponentManager
import com.atlassian.jira.issue.Issue
import com.atlassian.core.util.DateUtils
// Get access to the required issue managers
def componentManager = ComponentManager.getInstance()
def issueManager = componentManager.getIssueManager()
def changeHistoryManager = ComponentManager.getInstance().getChangeHistoryManager()
// Get the current User
def User = ComponentAccessor.getJiraAuthenticationContext().getUser()
// Get the current Issue
SubjectIssue = issue
// Get Change History information
def currentStatus = issue.getStatusObject().getName();
def previousStatus = "In Progress"
def updated = issue.getUpdated().format("HH:mm (dd MMM yyyy)")
String previousTransitison = changeHistoryManager.getChangeItemsForField(issue, "status").getAt(changeHistoryManager.getChangeItemsForField(issue, "status").size() - 1).toString()
// Extract the from and to statuses below
String fromStatus = previousTransitison.substring(previousTransitison.indexOf("fromString="), previousTransitison.indexOf(",to="));
String fromStatusVal = fromStatus.substring(11);
String toStatus = previousTransitison.substring(previousTransitison.indexOf("toString="), previousTransitison.indexOf(",created"));
String toStatusVal = toStatus.substring(9);
def previousTransitisonVal = fromStatusVal + " --> " + toStatusVal
// Construct the format to be output
def TransitionInfo = "Current Logged In User = " + User.getDisplayName() + "<br/>" + "Last Updated Time = " + updated + "<br/>" + "Curent Status = " + currentStatus + "<br/>" + "Previous Transition Info = " + previousTransitisonVal
return TransitionInfo
Also the Issue History Plugin may be of use to you.
I hope this helps
Kristian
Basically I want to store transition information like current user, from status, to status and time to a unlimited free text field.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
IssueService? can you please elaborate little bit?
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
If you want to store transition information use IssueService to make the issue undergo a transition.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
i'm using below script for this but it;s not working. import com.atlassian.jira.bc.JiraServiceContextImpl import com.atlassian.jira.bc.issue.search.SearchService import com.atlassian.jira.component.ComponentAccessor import com.atlassian.jira.issue.Issue import com.atlassian.jira.issue.changehistory.ChangeHistoryManager import com.atlassian.jira.security.JiraAuthenticationContext import com.atlassian.jira.web.bean.PagerFilter import com.atlassian.jira.issue.history.ChangeItemBean ChangeHistoryManager changeHistoryManager = ComponentAccessor.getChangeHistoryManager() SearchService searchService = ComponentAccessor.getComponent(SearchService.class); JiraAuthenticationContext jiraAuthenticationContext = ComponentAccessor.getJiraAuthenticationContext() user = jiraAuthenticationContext.getLoggedInUser() ctx = new JiraServiceContextImpl(user) List<Issue> issues = null List<ChangeItemBean> changeItems changeItems = changeHistoryManager.getAllChangeItems(issue) log.warn (changeItems) logs = changeItems.findAll{it.getField()=='status'}{result += "${it.created}; ${it.getFrom()}; ${it.getTo()}"} log.warn (logs) IssueManager issueManager = ComponentAccessor.getIssueManager(); CustomFieldManager cfm=ComponentAccessor.getCustomFieldManager(); def MeD =cfm.getCustomFieldObjectByName("StatusLog"); issue.setCustomFieldValue(MeD, String.valueOf(logs)); Any suggestions?
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Any suggestions?
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.