Administrator Documentation
Administrator Guide
Setup
Ovyka Satisfaction for JIRA is delivered as a Java Archive (JAR file). To install Ovyka Satisfaction plugin, the steps are the following :
- Go to Add-ons administration by clicking on Add-ons in administration drop down menu (you may be asked your password to access and administration page);
- In the left menu bar, click on Manage Add-ons;
- Once the Manage Add-ons page is loaded, click on the Upload Add-on link on the right of the page;
- In the popup window, click on the file chooser button, navigate to the place you downloaded the plugin jar file and click the upload button.
Once the plugin is installed, you'll see Ovyka Satisfaction in the User-installed add-ons list.
Workflow Requirements
By default, Ovyka Satisfaction for JIRA sends the satisfaction mail when a workflow transition triggers a "resolved" event or "closed" event.
Since version 1.6.0 you can choose to change this behaviour with the global configuration, see Notificationtriggerselection
If you use event based notification triggers
Please make sure to fix your workflow if you only use "generic events" in transitions, which are the default event for new transitions when creating workflows in JIRA.
Step by step instructions :
- Edit the relevant workflow (for the projects/issue types you wish to cover with Satisfaction surveys)
- Edit the last transition postfunctions. The last transition is usually going the one going to "Resolved" or "Closed", or whatever your final statuses are
- Edit the "generic event" postfunction, replace it with a "issue resolved" event (or "closed issue" event)
- save / publish your workflow
- finish activating / configuring the global & project configuration for Satisfaction for JIRA$
For finer control, you can also add post function based notification triggers
Step by step instructions :
- Edit the relevant workflow (for the projects/issue types you wish to cover with Satisfaction surveys)
- Select the post-functions tab, and click the Add post function link.
- Add the Satisfaction Survey Sending Post Function to the transition in which you want to send the notification :
- Click the Add button, and don't forget to publish the workflow for the changes to be taken into account.
Please note the Satisfaction Survey Sending Post Function can also work in parallel to event based notification triggers.
Here is the transition post functions with Satisfaction post function added.
Survey resending
Please note that the survey will be resent to the reporter if another resolved/closed event or postfunction is triggered and the reporter hasn't answered yet.
Example use case: You can use this to make sure that the reporter receives another notifications when "closing" the ticket 7 days after it has been "resolved".
Global Administration
In the administration area, in the left menu bar, you'll find a new section called Ovyka Satisfaction containing two links : Configuration and Email Template. Clicking the Configuration link will open the administration page for Ovyka Satisfaction plugin.
Ovyka Satisfaction plugin administration allows you to configure :
- the maximum evaluation value (5 or 10 stars);
- the global satisfaction survey fields available for projects.
Maximum evaluation value
To select between 5 or 10 stars as a maximum evaluation value, just select one of the radio buttons (default is 5). The modification is persisted immediatly, and a message informs you that your choice has been saved.
Minimum evaluation value and value display
These features are available since plugin version 1.3.4.
Since version 1.3.4, it is possible to allow users to vote 0 star (instead of a minimum value of 1). This 0-based evaluation can be allowed by checking the miminum rating option reading 'Allow zero evaluations'.
The numeric value checkbox, reading 'Display numeric value', allows to display the value of each rating star in the satisfaction form, instead of only displaying stars. Here are two screenshots, showing the difference with the numeric value display turned off and on.
Numeric value display : OFF | Numeric value display : ON |
---|---|
Allow JIRA decoration
These features are available since plugin version 1.4.0
The Survey Decoration option allows to choose wether the JIRA header (navigation bar with menus) and footer must be displayed on the satisfaction survey page presented to your customers.
Here are two screenshots, showing the difference with the decoration allowed or not.
Allow JIRA decoration : ON | Allow JIRA decoration : OFF |
---|---|
Notification trigger selection
These feature is available since plugin version 1.6.0.
For JIRA versions prior to 7.0.0, you will need version 1.6.1, as version 1.6.0 is not compatible with JIRA 6.3 and 6.4.
The default behaviour of Ovyka Satisfaction for JIRA is to send notification when a specific issue event (Resolved or Closed) is fired. You can choose to also add a post-function, or to only use post functions and completely disable issue events handling in the plugin. To do this, choose the notigcation trigger(s) you prefer in the global administration page, as shown below :
JQL Context
These feature is available since plugin version 1.6.0
For JIRA versions prior to 7.0.0, you will need version 1.6.1, as version 1.6.0 is not compatible with JIRA 6.3 and 6.4.
For finer control of which tickets need a satisfaction form to be sent, you can configure a JQL query.
Here are a few example use cases :
only send the survey to reporters who are external customers:
reporter in membersof("external customer group")
only for specific issue types: e.g. if you want satisfaction surveys for bug resolution only
issuetype = "Bug"
- only for specific components, custom field values, etc.
To configure JQL context, go into global administration page for Ovyka Satisfaction for JIRA and update the JQL query int the JQL context section, as shown below :
Survey fields
The plugin comes with 4 preconfigured fields :
- Overall answer satisfaction
- A rating field, where users can provide their global satisfaction about the resolution of their issues, by giving a rating from 1 to 5 stars.
- This field cannot be deactivated or deleted.
- Time to answer satisfaction
- A rating field where users can express their satisfaction about the time taken to resolve their issue, by giving a rating from 1 to 5 stars.
- Agent satisfaction
- A rating field where users can express their feeling about the agent in charge of their issue, by giving a rating from 1 to 5 stars.
- Comment
- A multi-line comment field where users can enter comments about the resolution of their issue.
The administration page presents these fields in a table, along with their description, their status (active or inactive), and action links.
Field actions
Change field name or description
When you hover your mouse over the name or description of a field, you'll see a small pen appear on the right of the field you're above. To change the field name or description, when your mouse is above the field you want to change, click on it, and the line will switch to Edit mode.
This will allow you to change the field name and/or description. Once you're done, click the Update button on the right of the line to save your changes. You are not allowed to enter empty field names and descriptions.
Internationalization
The values you change (field name or description) are updated for the current locale (ie. the locale you're using as an adminstrator). Ovyka Satisfaction plugin provides translation for 2 languages : English and French. If you want to change fields in a locale different of yours, change your locale in your profile and come back to the plugin administration page to edit field names/descriptions.
Deactivate field
Except for the first field (Overall answer satisfaction), all fields are can be deactivated. On the right of the field line, you'll see a Deactivate link. Click it to deactivate the field. Its status will change to Inactive and the link text will change to Activate. You can use this link again to reactivate the field.
Effect of deactivation
You should know that when you deactivate a field in the global plugin administration, it is automatically deactivated for all projects using the plugin. This does not lead to data losses, but a globally deactivated field will not be available to projects until it is reactivated.
Add field
Under the fields table, you'll find an Add new field button. If you want to add a new field, click on the Add new field button. It will open a popup window, where you can enter :
- the name of your field
- the description of your field
- the type of your field (rating (User evaluation) or comment (Multine user comment)).
All values are mandatory.
Once your field is created, it appears in the table above, and can be modified or deactivated like other fields.
Delete field
The fields preconfigured by Ovyka Satisfaction plugin when it's installed cannot be deleted (but may be deactivated, except for the Overall answer satisfaction field).
Fields created by administrators of your JIRA instance, on the other hand, can be deleted. For these fields, in the Action column, you'll see a Delete link. To delete your field, click on the Delete link. A warning popup will appear, explaining that deleting a field implies data losses, because all answers provided by users for this field will be deleted. If you click the Confirm popup link, your field and all its related data will disappear.
Administration sample view
Below is a screenshot of a sample configuration, where you'll see some features depicted :
- a field line in Edit mode;
- an administrator-added field (with a delete link);
- an inactive field;
- the Add new field button.
Notification Email Administration
This feature is available since plugin version 1.1.0.
In the administration area, in the left menu bar, the second link in Ovyka Satisfaction menu, Email Template, opens a page allowing to manage the template of the notification email sent to users.
Email template mode
Email template form and samples
When installed for the first time, the default template is selected, so the plugin works immediatly, out-of-the-box. But if you prefer, you can choose to create your own HTML email template. For this, check the Custom template option. When this is done, a template creation/testing form appears, as shown in the screenshot below :
Let's see what each element is for :
- Issue to use for preview : This input let's you select one of your existing issues, which allows to preview email templates with real values from the selected issue. Start typing an issue key, and the matching issues will appear in a selectable list. Continue typing to reduce the number of available issues :
- Template title: This is the title of your template, only used internally.
- Subject template : The template of the email subject. In this template, you can use placeholders to inject values from the issue (either the selected issue for preview, or the closed/resolved issue for real notification emails).
- Body template : the HTML body of the email notification. This is where you create your email content. As in the subject, you can include placeholders, to inject values from the issue. This template must use at least one place holder : [survey.link], which injects the url of the survey form. You can use it in the href attribute of a <a> html tag.
- The blue buttons under each template input area allow to switch between edition mode and preview mode.
- Buttons :
- Save : saves your template;
- Delete : deletes your template and replaces it by the default template;
- Load sample : You can use this button to load one of the provided examples. Click this button, and a pop up window will open, with a carrousel showing the three available samples. Select the one you want to load, then click the Load Sample button.
Here are the different sample templates shown in the pop up :
Placeholders
In both the subject and body templates of your notification email, you can use placeholder to inject values extracted from the issue for which the notification is being sent.
Close to the body template preview button, you'll find a help button : .
Clicking this button will open a help screen, showing the placeholders that you can use in your templates, as shown on the screenshot below :
Among the available placeholders are :
- [summary]
- Replaced by the issue summary
- [description]
- Replaced by the issue description
- [last-comment]
- Replaced by the last issue comment
- [custom-field-XXX]
- Replaced by the value of the custom field identified by its id (XXX must be replaced by the custom field value) in the processed issue.
- If the field contains a date, the default format will be used : yyyy-MM-dd HH:mm:ss
- [survey.link]
- Adds url of the Satisfaction survey, to be added in a link href, for example.
- [custom-field-XXX|yyyy-MM-dd HH:mm:ss]
- Same placeholder as above, but with a date/time format. If the custom field contains a date, it will be displayed using the provided format.
- [issue-link]
- Allows to insert a link to target issue in generated email. The generated link will depend on the project kind (regular JIRA project or JSD project). For JIRA projects, it will generate a regular link (eg. https://my.jira.com/browse/EX-001), but for JSD projects, it will generate a customer portal link (eg. https://my.jira.com/servicedesk/customer/portal/1/EX-001).
- [issue.XXX]
- Allows to include any issue field value. XXX must be replaced by the name of the field to extract. For example, to extract the issue creation date, the placeholder must be : [issue.created]
- If the field contains a date, the default format will be used : yyyy-MM-dd HH:mm:ss
- Available issue fields :
- reporter : the issue reporter
- assignee : the issue assignee
- reporterId : the reporter username
- assigneeId : the assignee username
- created : the issue creation date
- updated : the issue update date
- resolution : the issue resolution status
- status : the issue workflow status
- priority : the issue priority
- issueType : the issue type
- votes : the number of votes of this issue
- watches : the number of watchers for this issue
- resolutionDate : the issue resolution date
- dueDate : the issue due date
- summary : the issue summary
- description : the issue description
- key : the issue key (for example DEMO-1)
- affectedVersion : the list of affected version for this issue
- fixVersions : the list of fix versions for this issue
- [issue.XXX|yyyy-MM-dd HH:mm:ss]
- Same placeholder as above, but with a date/time format. If the issue field contains a date, it will be displayed using the provided format.
Project Administration
To administrate Ovyka Satisfaction plugin for a specific project, first go to the Browse Project page for the project you want to configure (top menu > Projects > your-project-key ), then clink on the Administration link. This will open the main project administration page, showing panels for administration sections. You'll see a new panel, dedicated to Ovyka Satisfaction, looking like this :
This panel shows the current activation status of the plugin for the project (Active or Inactive), and provides a link to plugin configuration for the project. This link is also available in the left menu bar, and is called Ovyka Satisfaction.
Click on either link, and you'll access the plugin configuration page for your project.
JIRA Service Desk satisfaction deactivation
If your project is a JSD project, and you're using recent version of JIRA Service Desk, a customer satisfaction feature is provided, and your customers will receive two satisfaction surveys notifications - one for JIRA Service Desk, and one for Ovyka Satisfaction for Jira. You should disable JIRA Service Desk satisfaction surveys to make sure that only Ovyka Satisfaction for JIRA surveys notifications are sent to your customers. To do this, go to your project administration, select Satisfaction settings, and disable "Collect customer satisfaction feedback". See screenshot below for the target configuration.
Plugin Activation
When the plugin is not activated for a project, this page only contains one tab, showing the activation status, and a button to activate/deactivate the plugin for the project. It will look like this :
To activate Ovyka Satisfaction for the project, just click the Activate button. The activation status will change to Active, the button will change to Deactivate, and a new tab allowing to configure the plugin will appear, called Configuration.
Plugin Configuration for Project
Once the plugin is activated, click the Configuration tab, and you'll see a list of fields you can configure, like shown in the image below :
The fields shown here are fields that are active in the global plugin configuration. If you deactivate a field in the project configuration page, the field is deactivated for this project only. Other projects can continue to use this field, as long as it's active in the global plugin configuration.
You have not other action to take to configure Ovyka Satisfaction for your project. You can even leave it as it is. Basically, clicking the Activate button in project administration is enough for your project to benefit from Ovyka Satisfaction for JIRA features.
Statistics Access Permissions
The Permissions tab (added in version 1.2.2) adds a new configuration tab called Permissions.
In this tab, you'll find a zone where you can select as many project roles as you wish, with the following effect :
- No role is configured : Every user with access to the project will be able to see the Satisfaction statistics;
- One (or more) role(s) is(are) configured : Only user having at least one of the configured role(s) will be allowed to see the Satisfaction statistics. Actually, users with none of the configured role(s) will not even see that the plugin is present (not appearing in the left-hand side menu).
To add roles, just start typing in the select box. The plugin will show you a drop box with all project roles matching the text you entered. To narrow down the list of roles, just continue typing. When you select a role, it is added to the select box and the permissions are immediately effective for the project.
REST API
These features are available since plugin version 1.4.1.
Satisfaction data can be retrieved using REST API. An URL allows to retrieve all evaluations in one call.
API URL
The url to call to retrieve satisfaction data is :
http://<jira_base_url>/rest/satisfaction/1.0/project/evaluations/all/<project_id>
Or to export the evaluations data as CSV, here is the URL to call :
http://<jira_base_url>/rest/satisfaction/1.0/project/evaluations/csv/<project_id>
Here is an example call and the response (here there is only one evaluation :
curl -D- -u login:password -X GET http://localhost:2990/jira/rest/satisfaction/1.0/project/evaluations/all/10000 [ { "satisfaction":{ "projectId":10000, "issueId":10000, "reporterId":"tstark", "answers":[ { "fieldId":1, "fieldName":"Overall answer satisfaction", "intAnswer":4, "fieldType":"EVALUATION", "overall":true }, { "fieldId":2, "fieldName":"Time to answer satisfaction", "intAnswer":2, "fieldType":"EVALUATION", "overall":false }, { "fieldId":3, "fieldName":"Agent satisfaction", "intAnswer":4, "fieldType":"EVALUATION", "overall":false } ], "date":1491895646549, "issueDate":1491842255195 }, "issueTypeIconUrl":"/images/icons/issuetypes/story.svg", "userName":"Anthony Stark", "userAvatarlUrl":"http://www.gravatar.com/avatar/6c2823e1531be820e8c2a4d719e1d38f?d=mm&s=16", "userProfileUri":"/secure/ViewProfile.jspa?name=tstark", "issue":{ "created":true, "subTask":false, "editable":true }, "displayDate":"11/Apr/17 9:27 AM", "iso8601DisplayDate":"2017-04-11T09:27:26+0200", "creationDisplayDate":"10/Apr/17 6:37 PM", "iso8601CreationDisplayDate":"2017-04-10T18:37:35+0200", "overallScore":4, "issueDisplay":{ "baseUrl":"/jira", "iconUrl":"/images/icons/issuetypes/story.svg", "key":"TP-1" }, "userDisplay":{ "id":0, "baseUrl":"/jira", "avatarUrl":"http://www.gravatar.com/avatar/6c2823e1531be820e8c2a4d719e1d38f?d=mm&s=16", "profileUrl":"/secure/ViewProfile.jspa?name=tstark", "name":"Anthony Stark" }, "agentDisplay":{ "id":0, "baseUrl":"/jira", "avatarUrl":"http://www.gravatar.com/avatar/64e1b8d34f425d19e1ee2ea7236d3028?d=mm&s=16", "profileUrl":"/secure/ViewProfile.jspa?name=admin", "name":"admin" } } ]
In this example, you can find first the evaluation itself, then data about the issue, project, the agent in charge of the issue, and the reporter (user).
Authentication & Authorization
To access the API, you must provide an authentication. The user calling the API must also have access to target project, otherwise no data will be sent back to API calls.
Authentication
Authentication data can be provided in three ways :
Basic
You can provide credentials using a basic way, like this :
curl -D- -u login:password -X GET <aPI_URL>
Base64
You can also send the credentials Base64 encoded, as follows :
curl -D- -X GET -H "Authorization: Basic ZnJlZDpmcmVk" <API_URL>
OAuth
Finally, you can use JIRA Application Links functionality to connect using OAuth.
To configure OAuth, here is the step by step guide. Here I'm using a command line rest client, but you can configure any OAuth-capable application instead.
First, you need to configure an application link.
Go in JIRA Applications administration, then select Application Links. Enter your application URL (the one going to call the REST API), then click Create New Link. If your application does not have an URL, enter any non existing URL, it's not important (unless you really want the full OAuth mechanism, with callbacks).
Sometimes, or if your application does not have any URL, you'll see this window, complaining that the application does not answer. Just click Continue.
You'll then be asked for OAuth configuration data, as shown below :
Enter the following information :
- Application Name : Enter a name for your application
- Application Type : Must be Generic Application, and should be pre-filled.
- Service Provider Name : This is JIRA (or more precisely Ovyka Satisfaction for JIRA).
- Consumer key : the key identifying the OAuth consumer (the same that you configured in your application). Here I'm using a key which is hardcoded in the REST client I'm using : harcoded-consumer.
- Shared secret : the public shared key associated with the consumer key.
- Request Token URL : JIRA_BASE_URL + "/plugins/servlet/oauth/request-token"
- Access Token URL : JIRA_BASE_URL + "/plugins/servlet/oauth/access-token"
- Authorize URL : JIRA_BASE_URL + "/plugins/servlet/oauth/authorize"
For the example, the base url (JIRA_BASE_URL) is http://localhost:2990/jira. So, for example, the Request Token URL is : http://localhost:2990/jira/plugins/servlet/oauth/request-token
Then click on Continue. JIRA will ask you again the consumer details (consumer key and public shared key), you have to enter them again.
Click on Continue. Cliquez sur Continue. JIRA will configure the link, and it will appear in your list of application links, as shown below. JIRA Application link configuration is done now. You can start using the REST API using OAuth authorization.
In next section, I'll demonstrate an example, of authorization setup and REST API usage.
Setup and usage
Here I'm using the REST client mentionned above. Some commands are not mandatory when using a more advanced application that knows how to handle OAuth protocol.
First, I'm asking for a RequestToken.
Note here that I do not provide a callback URL. This url would be called by OAuth processor, to continue OAuth protocol conversation. I'm doing everything by hand here, on the command line. If you provide this url, the verification we'll get below will be sent back to our application automatically.
$ java -jar rest-oauth-client-1.0.one-jar.jar requestToken http://localhost:2990/jira Token is mnVb4mCmjWO9PBmeN5jYXvb6g3q8w2bw Token secret is InO6HnmbWGbhJCDr5aWvmpT2r0OTrlfz Retrieved request token. go to http://localhost:2990/jira/plugins/servlet/oauth/authorize?oauth_token=mnVb4mCmjWO9PBmeN5jYXvb6g3q8w2bw
JIRA answers with :
- a request token,
- a request token secrect code,
- an url to open to authorize OAuth.
Here is what is shown when accessing the url :
JIRA asks me to authorize the access and indicates that the calls made using this allowed OAuth token will be made using the credentials of the user who opens the authorization url (admin here). If you want a specific user to be used for API calls, make sure to use this user to access this authorization url.
I click on Allow, and JIRA provides me the verification code (the one that would be sent to your application directly if you provide a callback url).
I can then request for an AccessToken, that I will be using to make calls to the plugin REST API.
$ java -jar rest-oauth-client-1.0.one-jar.jar accessToken http://localhost:2990/jira mnVb4mCmjWO9PBmeN5jYXvb6g3q8w2bw InO6HnmbWGbhJCDr5aWvmpT2r0OTrlfz rbi2v9 Access token is : lZNpyhPR6YmpQ3b0iM69bhcMVpjM3K3e
I gave here, ordered :
- RequestToken (from first call above)
- Token Secret (from first call above)
- the verification code given by Jira.
JIRA then provides the AccessToken.
I can then call the plugin REST API :
$ java -jar rest-oauth-client-1.0.one-jar.jar request lZNpyhPR6YmpQ3b0iM69bhcMVpjM3K3e http://localhost:2990/jira/rest/satisfaction/1.0/project/evaluations/all/10000 RESPONSE IS[{"satisfaction":{"projectId":10000,"issueId":10000,"reporterId":"tstark","answers":[{"fieldId":1,"fieldName":"Overall answer satisfaction","intAnswer":4,"fieldType":"EVALUATION","overall":true},{"fieldId":2,"fieldName":"Time to answer satisfaction","intAnswer":2,"fieldType":"EVALUATION","overall":false},{"fieldId":3,"fieldName":"Agent satisfaction","intAnswer":4,"fieldType":"EVALUATION","overall":false}],"date":1491895646549,"issueDate":1491842255195},"issueTypeIconUrl":"/images/icons/issuetypes/story.svg","userName":"Anthony Stark","userAvatarlUrl":"http://www.gravatar.com/avatar/6c2823e1531be820e8c2a4d719e1d38f?d=mm&s=16","userProfileUri":"/secure/ViewProfile.jspa?name=tstark","issue":{"created":true,"subTask":false,"editable":true},"displayDate":"11/Apr/17 9:27 AM","iso8601DisplayDate":"2017-04-11T09:27:26+0200","creationDisplayDate":"10/Apr/17 6:37 PM","iso8601CreationDisplayDate":"2017-04-10T18:37:35+0200","overallScore":4,"issueDisplay":{"baseUrl":"/jira","iconUrl":"/images/icons/issuetypes/story.svg","key":"TP-1"},"userDisplay":{"id":0,"baseUrl":"/jira","avatarUrl":"http://www.gravatar.com/avatar/6c2823e1531be820e8c2a4d719e1d38f?d=mm&s=16","profileUrl":"/secure/ViewProfile.jspa?name=tstark","name":"Anthony Stark"},"agentDisplay":{"id":0,"baseUrl":"/jira","avatarUrl":"http://www.gravatar.com/avatar/64e1b8d34f425d19e1ee2ea7236d3028?d=mm&s=16","profileUrl":"/secure/ViewProfile.jspa?name=admin","name":"admin"},"field1":{"name":"Overall answer satisfaction","fieldId":1,"issueId":10000,"value":"4","rating":true},"field2":{"name":"Time to answer satisfaction","fieldId":2,"issueId":10000,"value":"2","rating":true},"field3":{"name":"Agent satisfaction","fieldId":3,"issueId":10000,"value":"4","rating":true}}]
If you don't provide the authentication, you'll receive an empty response :
$ curl -X GET http://localhost:2990/jira/rest/satisfaction/1.0/project/evaluations/all/10000 RESPONSE IS[]
Authorization
By default, users allowed to call the REST API are users having access to the target project. Whatever the authentication method used, if the user cannot see the project, he'll receive no answer for the REST API.
You can narrow this down by using the permission administration tab of the project admin panels :
Only users from the groups listed here will be allowed to retrieve the plugin data via the REST API. If no group is mentioned here, then the default project permission rule applies.
Contact
Should you have any questions about Ovyka Satisfaction for JIRA plugin, or should you encounter any problem using it, feel free to contact us by dropping an email to this address : contact@ovyka.com