Incident Resolution Satisfaction Surveys on SharePoint

Incident Resolution Satisfaction Surveys on SharePoint

  • Comments 14
  • Likes

A key measurement of incident management is customer satisfaction.  Typically customer satisfaction is measured using a survey which captures the customer’s satisfaction with the timeliness of the resolution, the resolution itself, and the attitude of the IT person providing the service.  In a typical incident management workflow the affected user of an incident is emailed a link to fill out a survey when the incident is closed.  The user’s response should be able to correlate back to the incident and the analyst resolving the incident.

In Service Manager 2010, we decided not to implement an in-box solution for surveys because there are many other existing survey platforms out there which customers could use.  Instead of spending time on reinventing the wheel we invested the time in other areas like deep integration with System Center products.

Since this capability is obviously important, I wanted to share with you how to set up surveys to work with Service Manager.  SharePoint is a very flexible platform and has an out-of-box capability to manage surveys. In this blog post I’ll show you how to set up a simple customer satisfaction survey on SharePoint, how to link to that SharePoint survey from an email, and pass information about the incident ID and analyst to the survey seamlessly.

First – make sure you have a Windows SharePoint Services 3.0 (WSS) or SharePoint Portal Server 2007 (SPS 2007) site set up somewhere.  I used Windows SharePoint Services to set this up.  The survey functionality is essentially the same between these two versions of SharePoint.  WSS is a free download from Microsoft that can install on Windows Server 2003, 2008, or 2008 R2.

The next step is to create a new Survey on your SharePoint site.  To do this, log into your SharePoint site as a SharePoint administrator.  Click on Site Actions to get the menu and then click on Create:

image

On the next page, click Survey under Tracking:

image

Fill in a Name and Description (optional).  Make sure you set Allow Multiple Responses to Yes.

image

 

 

Click Next and you’ll be at the first screen where you can enter survey questions.  Enter IncidentID as the first Question and select ‘Single line of text’. 

image

Leave everything else the same and click Next Question. 

For the second question, repeat as above but call the question ‘Analyst’.

image

 

Now repeat the cycle of adding as many questions as you like until you are done adding questions and click Finish.  When you click Finish SharePoint will take you to a page that looks like this:

image

Click on Advanced Settings.

On the Advanced Settings page set Read Access to ‘Only their own’ since we don’t want users reading each others survey results.  Set Edit Access to ‘None’ since we don’t want users changing their surveys after they are submitted.  Administrators and users with the Manage Lists permission on this survey will be able to read and edit all survey results if necessary.  Leave Search = Yes if you want the admins to be able to search the survey results.  Click OK when you are done.

image

You can get more fancy here if you want to by reordering questions, adding/removing questions, changing questions, setting permissions, configuring workflows, etc.  That’s just standard SharePoint functionality so I’m not going to cover it here.

Once you are back on the List Settings page you will see a Web Address for your site near the top:

image

Copy the URL and paste it in your browser address bar to navigate to your new survey (Don’t ask me why this isn’t a hyperlink! :)  ).

This will take you to an overview page that looks like this:

image

Click on Respond to this Survey to see your survey form.  This is what mine looks like:

image

Now, we don’t really want to show the end user the Incident ID or Analyst field now do we?  Also, Service Manager already knows this information so I’ll show you how to automatically populate this when the user clicks on the email link and how to hide these controls on the form so the user doesnt have to see them or fill them in/mess them up.

You don’t necessarily need to understand what QueryStrings are because I am going to show you how to do this step by step, but it will make things more understandable if you take a minute to read up on QueryStrings if you don’t already know about them.

To perform the next steps you will need to install the FREE SharePoint Designer 2007.

Once you have SharePoint designer installed and started you will need to connect to your server.  Click on File –> Import –> Import Site Wizard…

image

Select FrontPage Server Extensions or SharePoint Services and enter the URL to your server (mine is “smdc”).  Click Next

image 

 

 

 

 

 

 

 

Click Next on this screen:

image

Click Finish on this screen:

image

 

You’ll now have a replica of the SharePoint site files on your local computer.  You can see the folder/file hierarchy on the left:

image

Expand Lists and then the folder of your survey:

image

Double click the NewForm.aspx file which will open it in the editing window.

Now we are going to insert some javascript in here that will take the values you pass on the querystring to the form fields.  Immediately after the last <asp:Content> element and before the <table> element paste in the following javascript.

image

=================================================

<script type="text/javascript">

 

    // This javascript sets the default value of a input field identified

    // by <<FIELD DISPLAY NAME>> to the value stored in the querysting variable

    // identified by <<QUERYSTRING VARIABLE NAME>>

 

    // NOTE: this only works for single line of text inputs

 

    // Customize this javascript by replacing <<FIELD DISPLAY NAME>> and

    // <<QUERYSTRING VARIABLE NAME>> with appropriate values.

   

    // Copyright(c) Microsoft.  All rights reserved.

    // This code is licensed under the Microsoft Public License.

    // http://www.microsoft.com/opensource/licenses.mspx

 

    // THIS CODE IS PROVIDED *AS IS* WITHOUT WARRANTY OF ANY KIND,

    // EITHER EXPRESSED OR IMPLIED, INCLUDING ANY IMPLIED WARRANTIES

    // OF FITNESS FOR A PARITCULAR PURPOSE, MERCHANTABILITY, OR

    // NON-INFRINGEMENT.

 

    // Original Author: Travis Wright (twright@microsoft.com)

    // Original Creation Date: Dec 7, 2009

    // Original Version: 1.0

 

    _spBodyOnLoadFunctionNames.push("fillDefaultValues");

 

    function fillDefaultValues() {

        var qs = location.search.substring(1, location.search.length);

        var args = qs.split("&");

        var vals = new Object();

        for (var i = 0; i < args.length; i++) {

            var nameVal = args[i].split("=");

            var temp = unescape(nameVal[1]).split('+');

            nameVal[1] = temp.join(' ');

            vals[nameVal[0]] = nameVal[1];

        }

        setInputValueFromFieldName("IncidentID", vals["IncidentID"], true);

        setInputValueFromFieldName("Analyst", vals["Analyst"], true);

        //setLookupFromFieldName("<<FIELD DISPLAY NAME>>", vals["<<QUERYSTRING VARIABLE NAME>>"]);

    }

 

    function setInputValueFromFieldName(strFieldName, strValue, boolHide) {

        //this gets the input textbox so you can set the value

        var tag = getTagFromTagNameAndTitle("input", strFieldName);

        tag.value = strValue;

 

        //if you want to hide the input textbox pass boolHide = true

        //this is ugly but the only way to do this given the way SharePoint lays out forms

 

        if (boolHide) {

            tag.parentNode.parentNode.parentNode.style.visibility = "hidden";

            var TDs = document.getElementsByTagName("TD");

            for (var i = 0; i < TDs.length; i++) {

                var tempString = TDs[i].id;

                if (trim(TDs[i].innerHTML) == strFieldName) {

                    TDs[i].parentNode.style.visibility = "hidden";

                }

            }

        }

    }

 

    function getTagFromTagNameAndTitle(tagName, title) {

        var tags = document.getElementsByTagName(tagName);

        for (var i = 0; i < tags.length; i++) {

            var tempString = tags[i].id;

            if (tags[i].title == title) {

                return tags[i];

            }

        }

        return null;

    }

 

    function trim(str, chars) {

        return ltrim(rtrim(str, chars), chars);

    }

 

    function ltrim(str, chars) {

        chars = chars || "\\s";

        return str.replace(new RegExp("^[" + chars + "]+", "g"), "");

    }

 

    function rtrim(str, chars) {

        chars = chars || "\\s";

        return str.replace(new RegExp("[" + chars + "]+$", "g"), "");

    }

 

</script>

================================================= 

 Now, save the file.

Click on the Web Site tab:

image

In the lower right select Syncronize and then click ‘Publish Web site’.

image

Now if you go back to fill out your survey you will see that the Analyst and IncidentID textboxes are no longer visible:

image

Nice!  Now we need to configure the incident notification template to to our users when the incident status changes to Closed.  Rather than go through this step by step, I’m going to point you back to a post I did awhile ago on configuring templates and subscriptions.  In that blog post I showed you how to pass the IncidentID on the query string.  To pass the assigned to Analyst User Name you’ll need to select the Assigned To User.UserName property.  Your template should look something like this:

image

Next we need to configure the incident event workflow to send the email notification when the status changes to Closed to the affected user.  To do that go to the Administration workspace, expand the Workflows node, and select the Configuration view.

image

Then select the Incident Event Workflow Configuration item and click Properties in the task pane. 

image

On this dialog click Add

image

Click Next on the welcome screen.

image

 

 

 

 

 

 

 

 

 

Name your workflow and change the ‘Check for events’ to ‘When an incident is updated’.  Click Next.

image

Select the Changed to tab.  Check the Status checkbox in the Available properties list and click Add.  In the Criteria builder change the drop down value to Closed.  Click Next.

image

Click Next on the Incident Template screen since we don’t need to update the incident itself in this case.

image

Check the Enable notification checkbox.  Select Affected User in the User drop down.  Select the notification template you created earlier from the Message template drop down.  Click Add.  Click Next.

image

Click Create.

image

Click Close.

Click OK.

You’re done!  Now, let’s test it by assigning an incident to yourself and then closing the incident.  If you get an email and can click the link to take you to the survey you are golden!

Now you can use all the power of SharePoint lists to do all kinds of things like use the RSS Feed, Export to Excel for further analysis using charts/filtering/sorting, or be alerted when a new survey is filled out.

image image

You can also give a quick visual chart on the results in SharePoint:

image

Using the information in this blog post you could even bring this web page or a report from SQL Reporting Services into the main Service Manager console for easy access!

 image

The management pack to add this view to the console is attached.  You’ll need to change the URL in the XML to match your URL before importing into Service Manager.

Hopefully measuring your quality of service helps you provide better service!  Good luck!

Attachment: Microsoft.Demo.SurveyResultsView.xml
Your comment has been posted.   Close
Thank you, your comment requires moderation so it may take a while to appear.   Close
Leave a Comment
  • We have worked on intehrating the some of the portal web parts with 2010 and i was wondering if this solution work with SharePoint 2010.

  • @Hbehery - I havent specifically tested it with SP2010, but it should work essentially the same.

  • OK. This definitely works in SharePoint 2010. However, if you are branching, you have to make IncidentID and Analyst on the first page of the survey.

  • We are currently in the process of bringing the incident management component of System Center Service Manager online.  Originally, we were going to link the surveys out to an outside survey provider, but when I ran across this article, this pretty much solves our problem.  

  • Can we make this 'Incident Resolution Satisfaction Survey' filling mandatory for the customers?Also, is it possible to send reminder notifications to the end users to complete the survey if they haven't already??

  • Dear Travis,

    I have implemented this to SharePoint 2010 and SM 2012.

    now i had the survey and Incident ID and the Analyst text boxes are hidden. but it's not connected to my incident ID and analyst worked I've added only one survey and this is a reult

    IncidentID

    undefined

    Number Of Responses1 Percentage Of Responses(100%)

    Total: 1

    2. Analyst

    undefined

    Number Of Responses1 Percentage Of Responses(100%)

    and in the service manager console, I modified the URL in the XML before importing and when i open the work items i got page cannot be displayed , while the summary page is displayed in IE at the same server.

    Thank you

  • I've got the same problem as MedhatRizk with the query strings not pulling in the ID and Analyst data in SharePoint 2010 and just showing up as "undefined".

    I've got it set up now to allow the user to click a link in the notification e-mail, it opens a browser and allows them to fill in the survey. The proper fields are hidden. After submitting the survey, they are redirected to another page thanking them for their survey, with a link to click to go back to the main page of the SSP.

    Every test survey I take though the ticket ID and Analyst strings are not pulled in, and makes the survey less useful when I can't reference an ID and Analyst.

    I'm guessing that the java code provided in the original post doesn't work in the SharePoint 2010 environment? Anyone have this working on SharePoint 2010 at all? I'm not sure what else to do at this point, as I don't exactly know code, not really my thing.

  • Thanks so much for this. I was able to implement it using a different ticketing system, and this is (almost) exactly what we were looking for.

    Does anyone know if it's possible to have the survey auto-submit as well? The goal is to make a 1-click survey, kind of like Netflix does in their email surveys. On ticket closure, the customer receives an email with 5 separate links that correlate to a satisfaction level between 1-5.

    With the solution presented here, it still takes one extra click to hit the submit button, but it would be great if all they had to do was click the link in the email and that was it.

  • Has anyone used this SharePoint functionality with the Remedy (BMC Incident Management/ticketing system)?

    Matt Compton, what ticketing solution did your team use to successfully integrate with SharePoint?

  • Id love to be able to do this in MOSS 2013

  • Hi,
    Please try our solution http://www.scutils.com/products/survey-lite. And read the blog post how to create a report with the satisfaction survey's data http://bit.ly/1i60D3E.
    We used to use this approach but met issues with reporting, etc. and finished with creating our own. I hope that could help.
    Cheers,
    Marat

  • I can't seem to get the Analyst and ID fields to pass to the survey, they show up as undefined in the survey results.

    The fields come accross in the url, just aren't getting passed to to the survey itself.

    I am using SCSM 2012 R2 and SharePoint 2013.

  • we've written an HTML5 employee self service portal which is not dependent on Silverlight. IE: it runs on iPads, Cell Phones, MACs and PC's. It also includes a built in Employee Satisfaction Survey module and is much easier and usable for employees - http://www.caseddimensions.com/scsm_self_service_portal/

  • I was hesitant at creating this survey in my environment because of the problems I have seen people having with undefined ID and Analyst, but I tried it today and it worked. I am using SharePoint 2010 with System Center 2012 Service Manager R2 and getting valid data for both the ID and analyst in my survey.

    I used Travis' instructions and code from this blog, with the exception of pasting the javascript in a different location that Carlos Pantoja recommended for SharePoint 2010 in Carlos' blog.
    http://blogs.technet.com/b/carlospantoja/archive/2012/08/09/incident-resolution-satisfaction-surveys-on-sharepoint-2010.aspx

    Here are the brief steps of how I created the template:
    1) Type everything exactly as Travis has it up to the http:
    2) Change the URL to match the URL for the survey on my SharePoint server (See point C below.)
    3) After NewForm.aspx, manually type ?IncidentID=
    4) Use the Insert button. Select Incident on the left, ID on the right, and click Add.
    5) Manually type &Analyst=
    6) Use the Insert button. Select Assigned to User on the left, User Name on the right, and click Add.
    7) Manually type "> survey
    8) Manually type the rest of the words you want to use in your survey.

    Those of you who are getting undefined, here are a few things to look for:
    A) Make sure you use the "Insert" button while building your template in SCSM to insert the Incident Assigned to User and Incident ID fields. (It is better to do this than manually typing to reduce typo errors.)
    B) Make sure any code you copy is not using extended characters such as slanted quotes. One way to do this is paste your copied code into notepad, then copy it from notepad. That will convert your quotes to standard ASCII.
    C) If the link to your SharePoint survey has spaces, you need to replace the spaces with %20. Travis' example code shows %20 being used for the spaces.
    SharePoint tip: When you initially create the survey, do not put spaces in the title. The URL for your survey will match whatever you put here, so if you leave out spaces, your URL will not have spaces. You can immediately edit the survey title after you create it and add spaces so it looks nice.


    I hope this helps someone. I am very pleased with the survey Travis created, and it is working fine on newer versions.