Getting the Most Out of Service Management (2023)

We’ve been using Service Management for some time, and have found a few irritations and annoyances that get in the way of us firing on all cylinders.

Here we share how we’ve overcome them, to maximize productivity.

Finding the reporter’s company

We like to see who the reporter works for, sometimes it gives us a good feeling. We also want to identify when multiple different users from the same company are asking for help - perhaps it’s part of a theme.

The way to get this info is to hover over the reporter, then quickly click on the display name before the dialog closes, which is easier said than done. However, I’ve just noticed that this has been improved in the latest version of Service Management where it shows the reporter email address. So this is not as useful as previously, but still worthwhile.

Our solution is to create a text script field, with the following code:

groovy

issue.reporter?.emailAddress?.replaceAll(/.*@/, "")

We can improve this a little by creating a link to a JQL function which will show us all tickets reported by this domain. We want to keep the returned value the same as that’s what we want indexed, but we’ll tweak the displayed value a little by choosing aCustomtemplate, with the following code:

groovy

<a target="_blank" href="/jira/issues/?jql='Reporter Domain' ~ '$value'">$value</a>

We can go a bit further by creating a bunch of links to google them for company info, and take a look at their home page. This is mostly for curiosity’s sake.

groovy

$value - <a target="_blank" href="$applicationProperties.getString("jira.baseurl")/issues/?jql='Reporter Domain' ~ '$value'"> Find similar </a>|<a target="_blank" href="http://$value">Company home</a>|<a target="_blank" href="http://google.com/#q=$value">Google them</a>

On the ticket you should see:

Getting the Most Out of Service Management (1)

Atlassian is not necessarily a customer, they are just being used as an example

Canned Comments

We often find ourselves asking people to provide logs, or version information and screenshots etc. After doing this five or six times in a day you can find yourself getting a little terse.

(Video) Getting the most out of Service Manager: Incident Management

In order to preserve the illusion of courtesy, we can pick from a template comment. These are processed on the server using groovy templates, so you can include substitutions like the user and agent’s first name.

This has been expanded into thetemplate comments plugin, which should be used in preference to setting this up yourself. The code examples are now outdated, but could be useful to see the process you might follow.

SEN Integration

If you are a marketplace vendor you may be interested in validating the user’sSupport Entitlement Number(SEN). Even if not, perhaps users of your product have some sort of token that they need to provide to show they are entitled to support. You might want to look this up in your CRM database and verify that the customer is within their maintenance agreement.

The following post-function, which we put on theCreateaction, validates the SEN and gets information from the marketplace API, which is used to populate the fields.

import com.atlassian.jira.component.ComponentAccessorimport com.atlassian.jira.config.properties.JiraPropertiesimport com.atlassian.jira.issue.CustomFieldManagerimport com.atlassian.jira.issue.MutableIssueimport com.onresolve.scriptrunner.runner.customisers.ContextBaseScriptimport groovy.sql.Sqlimport groovy.transform.BaseScriptimport groovyx.net.http.ContentTypeimport groovyx.net.http.HTTPBuilderimport groovyx.net.http.Methodimport org.apache.http.HttpRequestimport org.apache.http.HttpRequestInterceptorimport org.apache.http.protocol.HttpContextimport java.sql.Driverimport java.sql.Timestampimport java.text.SimpleDateFormatdef http = new HTTPBuilder("https://marketplace.atlassian.com")def jiraProperties = ComponentAccessor.getComponent(JiraProperties)/** * system properties defined like -Dplugin.marketplace.basic.auth.credential=user@example.com:password */def cred = jiraProperties.getProperty("plugin.marketplace.basic.auth.credential")def dbPassword = jiraProperties.getProperty("plugin.marketplace.database.password")if (!cred) { log.warn("Set plugin.marketplace.database.password as system prop")}http.client.addRequestInterceptor(new HttpRequestInterceptor() { void process(HttpRequest httpRequest, HttpContext httpContext) { httpRequest.addHeader("Authorization", "Basic " + cred.bytes.encodeBase64().toString()) }})@BaseScript ContextBaseScript baseScriptdef issue = getIssueOrDefault("SD-12") as MutableIssuedef customFieldManager = ComponentAccessor.getComponent(CustomFieldManager)def senCf = customFieldManager.getCustomFieldObjectByName("SEN")def sen = issue.getCustomFieldValue(senCf) as String// note: all the following fields shown here are required - see comment for type // <1>def licenceTypeCf = customFieldManager.getCustomFieldObjectByName("Licence Type") // short textdef licenceSizeCf = customFieldManager.getCustomFieldObjectByName("Licence Size") // short textdef licensedProductCf = customFieldManager.getCustomFieldObjectByName("Licensed Product") // short textdef licensee = customFieldManager.getCustomFieldObjectByName("Licensee") // short textdef mainStartDateCf = customFieldManager.getCustomFieldObjectByName("Maintenance Start Date") // datedef mainEndDateCf = customFieldManager.getCustomFieldObjectByName("Maintenance End Date") // datetry { if (!sen.startsWith("SEN-L")) { def response = http.request(Method.GET, ContentType.JSON) { uri.path = "/rest/1.0/vendors/81/sales" uri.query = [limit: 1, "sort-by": "date", order: "desc", q: sen] } def dateFormat = new SimpleDateFormat("yyyy-MM-dd") def licence = response.sales.find { it.licenseId == sen } as Map if (licence) { issue.setCustomFieldValue(licenceTypeCf, licence.licenseType) issue.setCustomFieldValue(licenceSizeCf, licence.licenseSize) issue.setCustomFieldValue(licensee, licence.organisationName) issue.setCustomFieldValue(licensedProductCf, licence.pluginKey) issue.setCustomFieldValue(mainStartDateCf, new Timestamp(dateFormat.parse(licence.maintenanceStartDate as String).time)) issue.setCustomFieldValue(mainEndDateCf, new Timestamp(dateFormat.parse(licence.maintenanceEndDate as String).time)) } else { // couldn't find licence } }
}catch (any) { log.warn("Failed to get SEN details", any)}

Line 47: All of these fields must exist with the type as shown

Evaluation licenses are not available via the marketplace API, as far as we can see. We have a database that we can query for these…​ the code for this is not shown.

Updating Tickets when bugs are Fixed

When a user reports a bug, either already known or not yet known, we link to the public bug (creating it if necessary). Then we close the support ticket as aKnown Issue, asking the user towatchthe linked bug report. Sometimes they do, sometimes they don’t.

To ensure they are aware when the bug is fixed and released, we add a post-function on theReleasetransition for the bug workflow which adds a comment to all support tickets that link to it:

Getting the Most Out of Service Management (2)

(Video) 3/21 Quick Wins - Get the most out of your HR Service Delivery solution (Ask the Expert)

When the bug isreleased, the service desk tickets are updated with the following comment (and a mail is sent, etc):

Getting the Most Out of Service Management (3)

Adding organizations when a Service Management issue gets created

One of the features in Jira Service Desk Server 3.3.0 (now Jira ServiceManagement) is the organizations, which are groups of customers that can be used in multiple projects. When you add an organization to a project, its members can raise requests in the project and share them with the organization.

The example is a script listener, in order to overcome the limitation where if an agent creates a ticket (not through the customer portal) an organization is not automatically added.

The following listener, which listens for anIssue Createdevent, adds to the organization custom field all the organizations configured for the specific project.

import com.atlassian.fugue.Optionimport com.atlassian.jira.component.ComponentAccessorimport com.atlassian.jira.issue.ModifiedValueimport com.atlassian.jira.issue.MutableIssueimport com.atlassian.jira.issue.util.DefaultIssueChangeHolderimport com.atlassian.servicedesk.api.ServiceDeskManagerimport com.atlassian.servicedesk.api.organization.OrganizationServiceimport com.atlassian.servicedesk.api.organization.OrganizationsQueryimport com.atlassian.servicedesk.api.util.paging.LimitedPagedRequestimport com.atlassian.servicedesk.api.util.paging.LimitedPagedRequestImplimport com.onresolve.scriptrunner.runner.customisers.PluginModuleimport com.onresolve.scriptrunner.runner.customisers.WithPlugin@WithPlugin("com.atlassian.servicedesk")@PluginModuleServiceDeskManager serviceDeskManager@PluginModuleOrganizationService organizationServiceMutableIssue issue = issuedef currentUser = ComponentAccessor.getJiraAuthenticationContext().getLoggedInUser()def serviceDeskProject = serviceDeskManager.getServiceDeskForProject(issue.projectObject)// if the project is not a Service Desk one then do nothingif (serviceDeskProject.isLeft()) { log.error "${serviceDeskProject?.left()?.get()}" return}def serviceDeskId = serviceDeskProject?.right()?.get()?.id as Integer// get the available organizations for that projectdef organizationsQuery = new OrganizationsQuery() { @Override Option<Integer> serviceDeskId() { return new Option.Some<Integer>(serviceDeskId) } @Override LimitedPagedRequest pagedRequest() { return new LimitedPagedRequestImpl(0, 50, 100) }}// get all the organizations configured for that projectdef organizationsToAdd = organizationService.getOrganizations(currentUser, organizationsQuery)?.right()?.get()?.results// get the Organizations custom fielddef cf = ComponentAccessor.getCustomFieldManager().getCustomFieldObjectByName("Organizations")// finally update the organizations custom fieldcf.updateValue(null, issue, new ModifiedValue(issue.getCustomFieldValue(cf), organizationsToAdd), new DefaultIssueChangeHolder())

Automatically Clone an Issue

This tutorial will take you through the steps needed to create a new issue in another project and transfer the information needed, once your original request is resolved.

Use Cases:

  1. When a user raises a bug report, if it is verified, you want to automatically add it to your backlog in your development project.

  2. When a request for an item is approved by your manager, you want it to be placed in another project so that the appropriate team can can acquire it.

  3. When a person has been successfully hired, you want to auto raise a ticket to IT so that their login and basic IT is provided for them.

  4. When an incident has been fixed and you need to file a Root Cause Analysis(RCA) ticket in another project.

Steps:

We need to setup aClones an issue, and links post functionin the transition that closes your ticket.

1. Set up the condition:

a): the request type is the one pertinent to us. In this case "Bug Report"

b): the transition to closed with a resolution that implies that you are going to do something with that ticket. In this case "Bug Reproduced".

import com.atlassian.jira.component.ComponentAccessorimport com.atlassian.servicedesk.api.requesttype.RequestTypeServiceimport com.onresolve.scriptrunner.runner.customisers.WithPlugin@WithPlugin("com.atlassian.servicedesk")def requestTypeService = ComponentAccessor.getOSGiComponentInstanceOfType(RequestTypeService)if (issue.issueType.name == "Incident") { def sourceIssueRequestTypeQuery = requestTypeService .newQueryBuilder() .issue(issue.id) .requestOverrideSecurity(true) .build() def requestTypeEither = requestTypeService.getRequestTypes(currentUser, sourceIssueRequestTypeQuery) if (requestTypeEither.isLeft()) { log.warn "${requestTypeEither.left().get()}" return false } def requestType = requestTypeEither.right.results[0] if (requestType.name == "Bug Report" && issue.resolution.name == "Bug Reproduced") { return true }}return false
(Video) How to Make the Most out of the Service Management Module in Dynamics CRM 2016

2. Setup the other fields.

Setup the target project, target issue type and fields to copy.

Getting the Most Out of Service Management (4)

This is example, you could choose to copy the whole issue if you wish.

Create RCA Confluence Page

This tutorial will show you a complex example on how to move data from Jira Service Management to Confluence.

Use Cases:

RCA analysis usually needs a sharing of information and document collaboration that is very hard to achieve in Jira. That’s why a Confluence integration is a better idea for this particular example.

Steps:

We need to setup a "Custom Scripted Function". Also, in order for this to work, you must have a reciprocal appLink between your Confluence and Jira.

1. Set up the condition:

a): the request type is the one pertinent to us. In this case "Incident"

b): the transition to closed with a resolution that implies that you are going to do something with that ticket. In this case "Bug Reproduced"

2. Use this script to copy the information to Confluence.

import com.atlassian.jira.component.ComponentAccessorimport com.atlassian.jira.config.properties.APKeysimport com.atlassian.sal.api.net.Requestimport com.atlassian.sal.api.net.Responseimport com.atlassian.sal.api.net.ResponseExceptionimport com.atlassian.sal.api.net.ResponseHandlerimport com.atlassian.servicedesk.api.organization.OrganizationServiceimport com.onresolve.scriptrunner.runner.customisers.WithPluginimport com.opensymphony.workflow.WorkflowContextimport groovy.json.JsonBuilderimport groovy.xml.MarkupBuilder@WithPlugin("com.atlassian.servicedesk")/*Fetch and check for the confluence link*/def applicationLinkService = ComponentAccessor.getComponent(ApplicationLinkService)def confluenceLink = applicationLinkService.getPrimaryApplicationLink(ConfluenceApplicationType)/*If your issue isn't an incident, you don't want to create a RCA ticket*/if (issue.issueType.name != "Incident") { return}/*Check that the confluence link exists*/if (!confluenceLink) { log.error "There is no confluence link setup" return}def authenticatedRequestFactory = confluenceLink.createAuthenticatedRequestFactory()/*Start getting information about the issue from Service desk*/def issueLinkManager = ComponentAccessor.getIssueLinkManager()def commentManager = ComponentAccessor.getCommentManager()def customFieldManager = ComponentAccessor.getCustomFieldManager()def organizationService = ComponentAccessor.getOSGiComponentInstanceOfType(OrganizationService)/*SLA related fields*/def timeFirstResponse = issue.getCustomFieldValue(customFieldManager.getCustomFieldObjectByName("Time to first response"))def timeResolution = issue.getCustomFieldValue(customFieldManager.getCustomFieldObjectByName("Time to resolution"))def organizations = issue.getCustomFieldValue(customFieldManager.getCustomFieldObjectByName("Organizations"))def currentUserId = ((WorkflowContext) transientVars.get("context")).getCaller()def currentUser = ComponentAccessor.getUserManager().getUserByKey(currentUserId)def writer = new StringWriter()def xml = new MarkupBuilder(writer)xml.h2("This is the RCA analysis thread for the issue above.")xml.p("${issue.summary}")xml.p("This issue was raised by ${issue.reporter.name} on ${issue.getCreated()} " + "and resolved by ${currentUser.name} with resolution ${issue.getResolution().name}")xml.h3("Time to first response:")xml.p("Start date: ${timeFirstResponse.completeSLAData?.startTime[0].toDate().toString()}")xml.p("Stop date: ${timeFirstResponse.completeSLAData?.stopTime[0].toDate().toString()}")xml.h3("Times to resolution:")xml.p("Start date(s): ${timeResolution.completeSLAData?.startTime[0].toDate().toString()}")xml.p("Stop date(s): ${timeResolution.completeSLAData?.stopTime[0].toDate().toString()}")xml.h3("Description:")xml.p("${issue.description}</p>")//You might want to log information about your users and organizations.xml.h3("Organizations")organizations?.each { xml.p("<b>${it.name}</b>") def usersEither = organizationService.getUsersInOrganization(currentUser, organizationService.newUsersInOrganizationQuery().customerOrganization(it).build()) if (usersEither.isLeft()) { log.warn usersEither.left().get() return } usersEither.right().get().results.collect { "${it.displayName}" }.each { xml.p(it) }}//You want to collect the outward links of your issue.def outwardLinks = issueLinkManager.getOutwardLinks(issue.id)xml.h3("Outward Issue Links")if (outwardLinks instanceof List) { outwardLinks?.collect { buildIssueURL(it.destinationObject.key) }?.join(" ").each { xml.p(it) }} else { xml.p(buildIssueURL(outwardLinks.destinationObject.key))}//You want to collect the inward links of your issue.def inwardLinks = issueLinkManager.getInwardLinks(issue.id)xml.h3("Inward Issue Links")if (inwardLinks instanceof List) { inwardLinks?.collect { buildIssueURL(it.destinationObject.key) }?.join(" ").each { xml.p(it) }} else { xml.p(buildIssueURL(inwardLinks.destinationObject.key))}//You might also want to collect the comments on the issue:xml.h3("Comments")commentManager.getComments(issue)?.collect { "${it.getAuthorFullName()} : $it.body" }.each { xml.p(it)}//Here you parse the whole of the information collected into the RCA ticket.def params = [ type : "page", title: "RCA analysis: ${issue.key}", space: [ key: "TEST" //This should be the name of your space, you should set it accordingly ], body : [ storage: [ value : writer.toString(), representation: "storage" ] ]]//This is used to send a REST request to the Confluence link.authenticatedRequestFactory .createRequest(Request.MethodType.POST, "rest/api/content") .addHeader("Content-Type", "application/json") .setRequestBody(new JsonBuilder(params).toString()) .execute(new ResponseHandler<Response>() { @Override void handle(Response response) throws ResponseException { if (response.statusCode != HttpURLConnection.HTTP_OK) { throw new Exception(response.getResponseBodyAsString()) } } })//This is an aux function to build the URL for the issue.String buildIssueURL(String issueKey) { def baseUrl = ComponentAccessor.getApplicationProperties().getString(APKeys.JIRA_BASEURL) """ <a href="$baseUrl/browse/$issueKey">$issueKey</a> """}

Email Linked Issue Watchers, Request Participants & Organizations

Email Reporter, Watchers, Request Participants and Organizations of Linked Issues When Transitioning

This Post-Function script will allow you to trigger notifications users/customers (reporter, watchers, request participants and organizations) for a linked issue. This was written assuming this would be most helpful to notify users when the linked issues were being resolved, but could fit anywhere in the workflow.

Use Cases:

  1. Your helpdesk team is receiving issues related to a software bug. Your customers' organizations can be added to the helpdesk issue and then receive an email when the software team has closed their linked issue.

  2. Business users may have an IT issue linked as a blocker, but might have no interest in watching an IT team’s issues for updates due to the volume of comments/edit. If they would like to receive a notification only when it is finished, this script can shield them from all the rest of the Jira notifications.

    (Video) Introducing Jira Service Management

Steps

1. Identify the appropriate Workflow

This post-function should live in the Jira workflow that needs to relay the emails out to other projects. See the use cases above for more detail.

2. Edit the Workflow

You will want to edit the workflow and navigate to the specific transition where you want these emails to trigger. Keep in mind, you may have to update the verbiage of the email to account for different transitions or meanings. See below for more on that.

3. Add the script

Add the script to a custom script post-function.

import com.atlassian.jira.component.ComponentAccessorimport com.atlassian.jira.issue.Issueimport com.atlassian.jira.mail.Emailimport com.atlassian.jira.user.ApplicationUserimport com.atlassian.servicedesk.api.organization.CustomerOrganizationimport com.atlassian.servicedesk.api.organization.OrganizationServiceimport com.atlassian.servicedesk.api.util.paging.SimplePagedRequestimport com.onresolve.scriptrunner.runner.customisers.WithPlugin@WithPlugin("com.atlassian.servicedesk")final def LINK_NAME = "causes"def issueLinks = ComponentAccessor.getIssueLinkManager().getOutwardLinks(issue.getId())def causedByIssues = ComponentAccessor.getIssueLinkManager().getOutwardLinks(issue.getId())?.findAll { it.issueLinkType.outward == LINK_NAME}if (!causedByIssues) { log.debug "Does not cause any issues" return}causedByIssues.each { def destinationIssue = it.destinationObject def watcherManager = ComponentAccessor.watcherManager // this should be an admin you wish to use inside the script OR currentUser def adminUser = ComponentAccessor.userManager.getUserByKey("admin") def strSubject = "An issue linked to ${destinationIssue.getKey()} has been resolved" def baseURL = ComponentAccessor.getApplicationProperties().getString("jira.baseurl") def strIssueURL = "<a href='${baseURL}/browse/${issue.getKey()}'>${issue.getKey()}</a>" def strDestinationURL = "<a href='${baseURL}/browse/${destinationIssue.getKey()}'>${destinationIssue.getKey()}</a>" def strBody = """${strIssueURL} has been resolved. This issue has a &quot;${LINK_NAME}&quot; issue link which points to ${strDestinationURL}. You received this notification because you are watching ${strDestinationURL}.""" def emailAddressTo = destinationIssue.reporterUser ? destinationIssue.reporterUser.emailAddress : adminUser.emailAddress def emailAddressesCC = [] emailAddressesCC = watcherManager.getWatchers(destinationIssue, Locale.ENGLISH)?.collect { it.emailAddress } emailAddressesCC.addAll(getOrganizationMembersEmailsInIssue(destinationIssue, adminUser)) emailAddressesCC.addAll(getParticipantsEmailsInIssue(destinationIssue)) emailAddressesCC = emailAddressesCC.unique() emailAddressesCC = emailAddressesCC.join(",") sendEmail(emailAddressTo, emailAddressesCC, strSubject, strBody)}void sendEmail(String to, String cc, String subject, String body) { log.debug "Attempting to send email..." def mailServer = ComponentAccessor.getMailServerManager().getDefaultSMTPMailServer() if (mailServer) { Email email = new Email(to) email.setCc(cc) email.setSubject(subject) email.setBody(body) email.setMimeType("text/html") mailServer.send(email) log.debug("Mail sent to (${to}) and cc'd (${cc})") } else { log.warn("Please make sure that a valid mailServer is configured") }}List<String> getOrganizationMembersEmailsInIssue(Issue issue, ApplicationUser adminUser) { def organisationService = ComponentAccessor.getOSGiComponentInstanceOfType(OrganizationService) def cf = ComponentAccessor.customFieldManager.getCustomFieldObjectByName("Organizations") def emailAddresses = [] (issue.getCustomFieldValue(cf) as List<CustomerOrganization>)?.each { def pageRequest = new SimplePagedRequest(0, 50) def usersInOrganizationQuery = organisationService.newUsersInOrganizationQuery().pagedRequest(pageRequest).customerOrganization(it).build() // this is a paged response, it will return only the first 50 results, if you have more users in an organization // then you will need to iterate though all the page responses def pagedResponse = organisationService.getUsersInOrganization(adminUser, usersInOrganizationQuery) if (pagedResponse.isLeft()) { log.warn pagedResponse.left().get() } else { emailAddresses.addAll(pagedResponse.right().get().results.collect { it.emailAddress }) } } emailAddresses}List<String> getParticipantsEmailsInIssue(Issue issue) { def cf = ComponentAccessor.customFieldManager.getCustomFieldObjectByName("Request participants") def cfVal = issue.getCustomFieldValue(cf)?.collect { it.emailAddress } cfVal}

You will need to edit this script.

Variables to look to edit are…​

a) LINK_NAME - this determines which issue link relation you are looking for as the trigger for the emails. It currently holds a value of "causes." This means that the post-function looks to check if the current transitioning issue "causes" any other issues, then checks those other issues for watchers and notifies them.

b) adminUser - This should be a user that will persist with the ability to query Organizations and to receive the email if no reporter exists.

c) strSubject - This is a short summary of the email and may need to be adjusted if you use this post-function to continue into another unresolved status.

d) strBody - This is an in-depth description of what issues were affected and why the user is receiving the notification. It also references resolving an issue so definitely change this if you are not using a transition landing in a resolved state.

Also, keep in mind…​

a) This script only notifies for one issue link type. If you want it to notify on multiple, you would need to add a string array or another mechanism to this script or duplicate the script.

b) The more watchers/Request participants/Organization customers are on the linked issue, the longer the post-function will take to execute.

c) The script assumes that both issues are on the same instance of Jira, meaning they will have the same URL.

(Video) Grow Your NEMT Business: How to Scale for Success | RouteGenie

d) The script CCs everyone at once to avoid the time consuming activity of sending out tons of email.

FAQs

What makes a good service management? ›

What qualities make an outstanding service manager? Just a few: technical ability, people skills, leadership skills, empathy, a positive attitude, a willingness to serve, multi-tasking and organizational skills, ability to delegate, vision, and the ability to see the big picture.

What are the 3 most important things in customer service? ›

Essentially, the 3 important qualities of customer service center around three “p”s: professionalism, patience, and a “people-first” attitude. Although customer service varies from customer to customer, as long as you're following these guidelines, you're on the right track.

What is the key to service management? ›

Service Definition

Defining services is the key to service management. A service definition enables both the customer and the service provider to know what they can and cannot expect from a service.

What are two things managers can do to improve the quality of a service? ›

7 Tips for Improving Service Quality Management
  • Encourage agent feedback. ...
  • Have agents listen to their calls. ...
  • Send post-contact surveys after every interaction. ...
  • Establish clear KPIs. ...
  • Evaluate regularly. ...
  • Give all agents clear and consistent standards. ...
  • Take a team approach to eliminate bias.

What are the 4 Ps of service management? ›

The 4 Ps of Service Design

People. Products. Partners. Processes.

What are the 3 C's of service? ›

The three Cs of customer satisfaction: Consistency, consistency, consistency. It may not seem sexy, but consistency is the secret ingredient to making customers happy. However, it's difficult to get right and requires top-leadership attention.

What are the 5 P's of customer service? ›

The 5 areas you need to make decisions about are: PRODUCT, PRICE, PROMOTION, PLACE AND PEOPLE. Although the 5 Ps are somewhat controllable, they are always subject to your internal and external marketing environments. Read on to find out more about each of the Ps.

What are the 4 P's that improve customer service? ›

Promptness, Politeness, Professionalism and Personalization: these 4 characteristics are the key ingredients to any successful service interaction, and when you think about it, they are the basics you expect to receive as a consumer.

What are the 3 A's in customer service? ›

A - Acknowledge that their concerns are valid. A - Align with the customer, agreeing that you would feel the same were you in their shoes. A - Assure the customer that you will be able to solve their problem to their satisfaction.

What are the 5 pillars of management? ›

At the most fundamental level, management is a discipline that consists of a set of five general functions: planning, organizing, staffing, leading and controlling. These five functions are part of a body of practices and theories on how to be a successful manager.

What are the 7 Elements of service? ›

Seven Ps of Service Marketing: product (service), price, place (distribution), promotion, people, physical evidence, and process. Marketers work on creating a proper blending of these seven Ps to satisfy the needs of consumers in the service sector.

What are the 6 key elements of service? ›

6 Key Elements to Include in Your Customer Service Strategy
  • A Company-Wide Mission.
  • A Recruitment Process to Hire The Right People.
  • A Commitment to Ongoing Training.
  • A Customer Service Policy.
  • A Focus on Empowering Your Team.
  • An Effective Feedback Loop.
Apr 17, 2020

What are the 10 things you can do to improve service quality? ›

How to Improve Customer Service
  • Understand customer needs. ...
  • Seek and promote customer feedback. ...
  • Set and communicate clear service standards. ...
  • Delight your customers by exceeding their expectations. ...
  • Capture and share examples of great service. ...
  • Create easy and effortless customer service. ...
  • Personalise your customer service.

How can service management be improved? ›

From our experience, here are seven to consider:
  1. Roadmap your IT service management strategy from the beginning. ...
  2. Solve ITSM problems using technology tools available to you. ...
  3. Build a searchable knowledge base to avoid reinventing the wheel. ...
  4. Track and measure progress. ...
  5. Consider fresh approaches and methods.

What are the 5 parts of a service plan? ›

There are five processes within the service strategy lifecycle stage:
  • Strategy management for IT services.
  • Service portfolio management.
  • IT financial management.
  • Demand management.
  • Business relationship management.

What are the components of service management? ›

Generally, service management comprises six different capabilities that companies should consider for optimization:
  • Service strategy and service offerings. ...
  • Spare parts management. ...
  • Returns, repairs, and warranties. ...
  • Field service management or field force effectiveness. ...
  • Customer management.

What are the 3 service provider types? ›

The three service types are recognized by the IT industry although specifically defined by ITIL and the U.S. Telecommunications Act of 1996.
  • Type I: internal service provider.
  • Type II: shared service provider.
  • Type III: external service provider.

What are the 3 R's of service quality? ›

The Three Rs of customer service marketing are Relatable, Relevant, and Respectful and they are vital to the success of your ability to grow and scale your business.

What are the 3 elements of service quality? ›

If you're going to improve the service aspect of your firm, you'll need to focus on the three components of service: the people delivering the service, the quality of the service delivery, and the systems the business uses to deliver that service.

How to improve customer satisfaction? ›

20 Ways to Increase Customer Satisfaction
  1. Understand your customers. ...
  2. Create a customer-centric culture. ...
  3. Put yourself in the customer's shoes. ...
  4. Lead with empathy, always. ...
  5. Always ask for feedback. ...
  6. Act on customer feedback. ...
  7. Give your support teams everything they need to succeed. ...
  8. Respond to customer reviews.
Mar 30, 2022

What are the 4 C's of customer service? ›

To set yourself apart, you need to incorporate the 4C's, which stand for customer experience, conversation, content, and collaboration. Look at them as pillars that hold your client service together. Working on these components in unison and actively managing them will transform your business.

What is the 10 10 Rule customer service? ›

I've expanded the Disney concept in my customer service training workshops by encouraging employees to greet customers within 10 seconds of coming within 10 feet of them. I call it the 10-10 rule. You can have fun by applying the 10-10 rule to other scenarios.

What are the six rules for good customer service? ›

Six Rules for Delivering a Superior Customer Service
  • Know your customer.
  • Keep them informed.
  • Serve them quickly.
  • Provide them with access.
  • Build trust.
  • Give advice and guidance.
Jul 5, 2016

What are the top 3 5 priorities in customer success? ›

So these are the five key pieces to customer success. Onboarding success, product success, customer success, company success, and team success. These 5 key aspects to customer success need an ideal focus and attention if you are to ensure your company's present and future success.

What are the 4 main customer needs? ›

But as a general rule, the four crucial things a customer needs are:
  • A fair price.
  • A good service.
  • A good product.
  • To feel valued.
Aug 31, 2020

What are the three areas of service management best practices? ›

7 Best Practices for Service Management Success
  • Best Practice 1: Evaluate Your ITSM Maturity and Create a Clearly Defined Strategy Toward Business Goals. ...
  • Best Practice 2: Automate Tasks and Create Self-Sufficient Self-Service. ...
  • Best Practice 3: Establish Metrics and KPIs for Your Service Management Strategy and Automation.
Aug 3, 2021

What are the 5 service qualities? ›

The five service quality dimensions are tangibility, reliability, responsiveness, assurance, and empathy.

Videos

1. Service Management: Not Just for IT Anymore
(Isos Technology)
2. Bloated Budgets | End Bad Service Management Now | Atlassian
(Atlassian)
3. ITSM - What is it? Introduction to IT Service Management
(SysAid)
4. Delayed Timelines | End Bad Service Management Now | Atlassian
(Atlassian)
5. Jira Service Management Fundamentals - June 2021
(Expium)
6. 5 Innovative Asset Management Use Cases Every Service Management Team Should Know
(Isos Technology)
Top Articles
Latest Posts
Article information

Author: Mrs. Angelic Larkin

Last Updated: 02/23/2023

Views: 6630

Rating: 4.7 / 5 (67 voted)

Reviews: 82% of readers found this page helpful

Author information

Name: Mrs. Angelic Larkin

Birthday: 1992-06-28

Address: Apt. 413 8275 Mueller Overpass, South Magnolia, IA 99527-6023

Phone: +6824704719725

Job: District Real-Estate Facilitator

Hobby: Letterboxing, Vacation, Poi, Homebrewing, Mountain biking, Slacklining, Cabaret

Introduction: My name is Mrs. Angelic Larkin, I am a cute, charming, funny, determined, inexpensive, joyous, cheerful person who loves writing and wants to share my knowledge and understanding with you.