Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

2) Add template with Jira Service Desk scope

Please be aware that Xporter has two different scopes for JIRA Service Desk:

  • JSD Request Detail: Allows you to use the current template on the Service Desk request details.

  • JSD Request List: Allows Xporter allows you to use the current template on the Service Desk customer portal where all the requests are listed.

Image Removed

...

  • Furthermore, Xporter also will be available on the approvals list.

Image Added

        


3) Permissions

Permission schemes allow administrators to define which Projects, Issue Types, User Roles, and Groups will be available to use Xporter, as well as manage the templates allowed to be used in each of those available Issue Types.


Info

For more information, please check our documentation here.

On the Permission Schemes in the Xporter for Jira administration section Apps page of the Jira Administration, click the Permissions link. You should see link Assign.

  • Click on Assign Roles and choose Service Desk Customers


  • Click on Assign Groups and choose jira-servicedesk-users
     

4) Customer Portal

If you have access to the customer portal of a particular issue, you will be able to export the document.

Getting the value of SLA

You can extract the time of SLA data from the JSD.

Definition

Let's imagine that the SLA is the Time to Resolution custom field. The definition will be:

${Time to Resolution}

In order to export with friendly value, we must use the "Formatted" word.

${Time to Resolution Formatted}

That´s it. There´s no special configuration to be made in order for this to work. The time is exported in milliseconds.

Example

Below we have the Time to first response and Time to resolution. 


This translates to a Word document template as resolved by Xporter for Jira:


Furthermore, you are able to export more information related to SLA. Each SLA has information on when it started and stopped, and whether it breached the SLA goal. The notation is:

${<SLA custom field>.<Field>}

SLA fieldsDescription

elapsedTime

Returns the total time the SLA has been running

elaspedTime FormattedReturns the total time the SLA has been running formatted with friendly value

startTime

Returns the date when the SLA started

stopTime

Returns the date when the SLA stopped

goalDuration

Returns the date with the SLA duration
goalDuration FormattedReturns the date with the SLA duration formatted with friendly value

breached

Returns a boolean if the SLA is breached

paused

Returns a boolean if the SLA is paused

withinCalendarHours

Returns a boolean if the SLA is within calendar hours
Code Block
titleExpand to see the sample code
collapsetrue
Let's imagine that the SLA is the Time to Resolution custom field:


Time to resolution: ${Time to resolution}
Time to resolution formatted: ${Time to resolution Formatted}
Elapsed Time: ${Time to resolution.elapsedTime}
Elapsed Time Formatted: ${Time to resolution.elapsedTime Formatted}
Start Time: ${Time to resolution.startTime}
Start Time Formatted: ${dateformat("yyyy-MM-dd"):Time to resolution.startTime}
Stop time: ${Time to resolution.stopTime}
Stop Time Formatted: ${dateformat("yyyy-MM-dd"):Time to resolution.stopTime}
Goal Duration: ${Time to resolution.goalDuration Formatted}
Goal Duration Formatted: ${Time to resolution.goalDuration Formatted}
Paused: ${Time to resolution.paused}
Within Calendar Hours: ${Time to resolution.withinCalendarHours}
Info

The field ${Time to resolution} will be responsible to return the remaining time of the SLA custom field

Export Internal Comments

Xporter V5.3.0 and higher allows you to export the internal value of a comment.

This can also be used to filter the internal comments.

Definition

#{for comments}

${Comments[n].Internal}

#{end}

How to use to filter comments

To return only the Internal Comments:

#{if (%{${Comments[n].Internal}})} or #{if (%{'${Comments[n].Internal}'.equals('true')})}

To retrive only the public comments:

#{if (%{!${Comments[n].Internal}})} or #{if (%{'${Comments[n].Internal}'.equals('false')})}

Example:

#{for comments}

#{if (%{${Comments[n].Internal}})}

Author: ${Comments[n].Author}

Body: ${Comments[n].Body}

#{end}

#{end}



Export Jira Service Desk Approvals

The Jira Service Desk allows you to add an approval step to a status in a workflow, in case approval is needed for issue types (and their associated request types).

Xporter for Jira allows the exporting of Jira Service Desk Approvals and the relevant information about the approval and the respective approvers.

As it is not known in advance how many approvals exist for an issue, you can iterate a section over all the approvals of an issue and all the approvers and respective decision. This allows you to create a table that dynamically grows according to the number of existing approvals. The notation is:


Approvals FieldsDescription
NameThe name of the approval
Final Decision

The decision about the approval (Approved, Declined or pending)

Can Answer ApprovalThis field returns true or false in order to know if the approval was closed or if stills pending
Created Date
The date the approval was posted
Completed Date
The date the approval was completed with all users answers


In order to extract more information from Approvals, it is possible to get information from the approvers and the decision of each one:  

Users Approvals FieldDescription
Approver NameThis field returns the name of the approver
Email AddressThis field returns the email address of the approver
Approver DecisionThe response of the approver about the approval


Now, here's an example of an Xporter for Jira template to get all the approvals of an issue and the information about each approver:


Code Block
titleExpand to see the sample code
collapsetrue
#{for approvals}
	${Approvals[n].Name} 
	${Approvals[n].Final Decision} 
	${Approvals[n].Can Answer Approval}
	${Approvals[n].Created Date}
	${Approvals[n].Completed Date}
	
	Here, we are going to list all approvers data.
	#{for m=Approvals[n].UsersApprovalsCount}
		${Approvals[n].UsersApprovals[m].Approver Name}
		${Approvals[n].UsersApprovals[m].Email Address}
		${Approvals[n].UsersApprovals[m].Approver Decision}
	#{end}
#{end}
 
or
 
#{for <VariableName>=ApprovalsCount}
   Content and Issue Mappings. Example: ${Approvals[VariableName].Field}
#{end}


...