Skip to Content
Technical Articles

SAP Solution Manager – Qualtrics Integration

X+O case for IT Service Management


INTRODUCTION 

Qualtrics is an experience management platform, which combines the experience data and operational data (X+O) and provides meaningful and deep insights into customer expectations, patterns and helps to improve satisfaction.  

The details and uses of Qualtrics are outlined in various other resources (refer links section below). 

In this article I will try to explain how the integration from an on-premise system (in our case it was the SAP Solution Manager system 7.2) to Qualtrics works. I will try to highlight the important touch points with respect to integration, various technical aspects and how you can benefit in general from the integration. 

USE CASE 

Our SAP Solution Manager ITSM solution was using CRM Standard survey suite for collecting positive call ratings for a ticket.  

Wherein the customer rate the service delivery or issue resolution on different parameters like overall satisfaction, initial response time, update period, time to resolution and quality of solution. 

Customers can also rate the ticketing tool experience and provide comments for improvement of tool and service delivery or resolution of issue. We decided to move satisfaction survey to the Qualtrics platform. 

With this change of the survey platform the following goals were targeted: 

  • Improved user experience for customers filling the survey 
  • Easy maintenance of survey 
  • Better manage end user experience across support channels 
  • State of the art analysis of customer feedback and comments 
  • Visualize trends and patterns and to react on it 
  • Reveal correlation between user feedback and support process 

We had the task also to bring survey results back into SAP Solution Manager along with link to filled in survey. This will be attached as part of the ticket for the benefit of service desk agents to query on ticket ratings and view them. 

Otherwise every processor in the organization needs to have a user created in the Qualtrics survey platform. 

USEFUL LINKS 

Create free account in Qualtrics to play around with survey creation with limited features (Research core, Actions Website/App feedback projects Dashboards are not possible) 

https://www.qualtrics.com/free-account/ 

Website / App Feedback Technical Documentation – Qualtrics Support 

Qualtrics API 

Single Page Application – Qualtrics Support 

API Integration Basic Overview – Qualtrics Support 

Actions Basic Overview – Qualtrics Support 

Blog Series – SAP API Management – API Providers: Part 1: Accelerating connectivity through APIs and SAP API Management | SAP Blogs 

Connecting and Exposing APIs from Cloud Platform Integration | SAP Blogs 

SAP API Management – Overview & Getting started | SAP Blogs 

Create an API Provider System  

DATA FLOW 

Below you find the data flow between different systems for our case.

  • Starting with “User” interacting with SAP On-Premise system
  • Trigger survey feedback via Qualtrics where users rate service delivery or issue resolution
  • Survey responses are sent back to SAP On-Premise system via SAP Cloud Platform – API Management via SAP Cloud Connector
  • Used OData service for data transfer from Qualtrics to SAP On-Premise system

DETAILS

I will briefly touch on Qualtrics survey platform and Integration to SAP Solution Manager system. For detailed explanation please refer to help documents in “Links” section.

Steps for achieving Qualtrics to SAP Solution Manager integration :

  • Create Survey project in Qualtrics
  • Distributing the survey
    • Site Interceptor
    • Let’s also look at the simple URL with embedded data to collect feedback
  • Add the site interceptor script in header BSP component and Create HTML elements on the webpage for Site Interceptor
  • Create OData service to fetch the results back from Qualtrics
  • Whitelist the service in web dispatcher and in Cloud Connector account
  • Create API provider and API (used the technical user) deploy the API
  • Create action in Qualtrics Survey project to trigger the POST call to API
  • Survey data stored in SAP Solution Manager

Create Survey project in Qualtrics 

At first you need to create a survey project as below in Qualtrics 

 

Survey Preview –>

Created embedded data in the survey to be captured in the “Survey Flow”

 In the above example I will try to capture objectID, email and Name of the customer 

Distributing the survey 

Qualtrics provides different ways to invoke or distribute survey and collect experience data. 

You can either use Website/App Feedback (Site interceptor), distribute the URL with embedded attributes or send via mail. 

Site Interceptor: 

Step 1: Create Website/App Feedback project 

Step 2: Create a pop-over Creative and Publish 

 

Step 3: Create an Intercept with the creative as the popover, survey target as on-prem test 

 

Note: You can define creatives with different sizes so that you can also specify action sets for different screen resolution to show creatives (of different sizes for e.g. monitor/mobile/laptop) and also for different hosts or based on a JavaScript expression or based on HTML element on the website. 

Step 4: Embedded data for Site Intercept 

 

You can also use “Value from JavaScript” to read values from html elements in your application or create hidden html elements for survey embedded data.

Qualtrics Survey Interceptor will read from these html elements and pass them to response data. 

document.getElementById or document.querySelector to read an element or with pattern 

Step 5: Publish and Activate your Intercept 

Go to “Settings” tab and copy the JavaScript code snippet (this will be placed in your BSP application component htm page) 

 

Select option “Display with custom JavaScript code (Manually)”  

Letalso look at the simple URL with embedded data to collect feedback 

Notice the embedded data towards the end of URL 

?Q_CHL=si&objectID=12345&email=xyz%40sap%2Ecom&name=xyz 

which passes the embedded data to the Qualtrics Survey

Add the site interceptor script in header BSP component and Create HTML elements on the webpage for Site Interceptor 

Add the site interceptor script (section above on Site Interceptor) in the BSP Component. For our use case we placed the script in the CRM_WORKAREAHDR/WorkAreaHeader.htm page 

<!--BEGIN QUALTRICS WEBSITE FEEDBACK SNIPPET--> 

<script type='text/javascript'> 

(function(){var g=function(e,h,f,g){ 

this.get=function(a){for(var a=a+"=",c=document.cookie.split(";"),b=0,e=c.length;b<e;b++){for(var d=c[b];" "==d.charAt(0);)d=d.substring(1,d.length);if(0==d.indexOf(a))return d.substring(a.length,d.length)}return null}; 

this.set=function(a,c){var b="",b=new Date;b.setTime(b.getTime()+6048E5);b="; expires="+b.toGMTString();document.cookie=a+"="+c+b+"; path=/; "}; 

this.check=function(){var a=this.get(f);if(a)a=a.split(":");else if(100!=e)"v"==h&&(e=Math.random()>=e/100?0:100),a=[h,e,0],this.set(f,a.join(":"));else return!0;var c=a[1];if(100==c)return!0;switch(a[0]){case "v":return!1;case "r":return c=a[2]%Math.floor(100/c),a[2]++,this.set(f,a.join(":")),!c}return!0}; 

this.go=function(){if(this.check()){var a=document.createElement("script");a.type="text/javascript";a.src=g;document.body&&document.body.appendChild(a)}}; 

this.start=function(){var a=this;window.addEventListener?window.addEventListener("load",function(){a.go()},!1):window.attachEvent&&window.attachEvent("onload",function(){a.go()})}}; 

try{(new g(100,"r","QSI_S_ZN_9Ah03bqMBAKrxY1","https://abcdefgh-surveyaccount.qualtrics.com/WRSiteInterceptEngine/?Q_ZID=ZN_9Ah03bqMBAKrxY1")).start()}catch(i){}})(); 

</script><div id='ZN_9Ah03bqMBAKrxY1'><!--DO NOT REMOVE-CONTENTS PLACED HERE--></div> 

<!--END WEBSITE FEEDBACK SNIPPET--> 

Also add the below code to trigger the site intercept in the webUI on click of an action or when a variable is set 

<%
  if not controller->gv_call_intercept is initial.
%>
<span hidden id="objectID"><%= lv_objectID %></span> 
<span hidden id="email"><%= lv_email %></span> 
<span hidden id="name"><%= lv_name %></span> 

<script type="text/javascript">
if ( typeof QSI !== 'undefined' && typeof QSI.API !== 'undefined' ) {
console.log( "Calling SI API" );
 QSI.API.unload();
 QSI.API.load().done(QSI.API.run);
} else {
console.log( "Can't find SI API" );
}
<%
  clear controller->gv_call_intercept.
%>
</script> 

Ensure to create hidden HTML elements in the webpage with the same name as you mentioned in the survey as well as Site Interceptor Embedded data.  

Details on QSI.API.load(), unload() and run() is available in the Qualtrics API documentation.

Create OData service to fetch the results back from Qualtrics 

As a next step I have created a simple OData service to fetch the survey feedback from Qualtrics and store it in the ticket in our SAP Solution Manager ITSM. 

Basically a POST with a technical user and password from Qualtrics sends the data to SAP Solution Manager system 

https://yourhost:port/sap/opu/odata/sap/ZQUALTRICS_SVY_SRV/SurveyFromQualtricsSet?$format=json 

with JSON structure 

{ 
    "d": { 
        "results": [ 
            { 
                "__metadata": { 
                    "id": " https://yourhost:port/sap/opu/odata/sap/ZQUALTRICS_SVY_SRV/SurveyFromQualtricsSet (1234567890l)", 
                    "uri": " https://yourhost:port/sap/opu/odata/sap/ZQUALTRICS_SVY_SRV/SurveyFromQualtricsSet (1234567890l)", 
                    "type": "ZQUALTRICS_SVY_SRV.SurveyFromQualtrics" 
                }, 
                "ObjectID": "1234567890", 
                "Q1": 10, 
                "Q2": 1, 
                "Q3": 0, 
                "Comments": "Test 1", 
                "ResponseId": "123asdfg", 
                "ResponseLink": "Qualtrics Preview Link", 
                "ErrorText": "" 
            } 
        ] 
    } 
} 

Refer to below blog post on how to create OData service 

OData service development with SAP Gateway – code-based service development – Part I | SAP Blogs 

or any other material available in SAP Community 

The survey results are passed to the SAP Solution Manager system if the  

  • Answer to first question is less than 8 
  • Answer to second question is not satisfied 
  • Answer to third question is no 
  • I also trigger an email to the email id passed part of the embedded data, along with the Call of OData service to notify the user about the rating and dis-satisfaction (could be manager or lead)

Note: If you can already expose your OData service to the external world from your SAP System, then you dont have to consider the next steps and directly continue with consuming the OData service in Qualtrics. But in our case the OData needs to be exposed and we choose SAP CP API Management.

Whitelist the service in web dispatcher and in SAP Cloud Connector account 

As a next step you need  

  1. Activate your OData service, maintain destination (depends on whether you have a central hub deployment or Embedded deployment) 
  2. Whitelist your OData service URL from SAP Solution Manager system or Gateway system in the web dispatcher 
  3. Whitelist the OData service also in the Cloud Connector account of you SAP CPI 

You can refer to below blog posts/information 

Consume SAP Gateway OData Service in SAP Cloud Platform Workflow | SAP Blogs 

Consume an OData Service Using the Cloud Connector | Tutorial group 

Part 3: How to use SAP Cloud Platform Connectivity and Cloud Connector in the Cloud Foundry environment | SAP Blogs 

Create API provider and API (used the technical user)- deploy the API 

Next you will create API Provider and an API to trigger from Qualtrics in SAP Cloud Platform API Management portal. 

API Provider will refer to your service URL with a technical user and password. 

I have created the API as below 

https://my.apimanagement.hana.ondemand.com/sap/opu/odata/sap/ZQUALTRICS_SVY_SRV/SurveyFromQualtricsSet 

Refer: 

Blog Series – SAP API Management – API Providers: Part 1: Accelerating connectivity through APIs and SAP API Management | SAP Blogs 

Connecting and Exposing APIs from Cloud Platform Integration | SAP Blogs 

SAP API Management – Overview & Getting started | SAP Blogs 

Create an API Provider System  

Create action in Qualtrics Survey project to trigger the POST call to API 

Here I will create 2 actions in the Qualtrics survey platform  

Action 1:Trigger email 

Selected the Event as Survey Response – Created 

Conditions – when the answer to first question is detractor  

And 2nd and 3rd question answered as not satisfied and no 

This will send a mail automatically to the email ID from the embedded data (${e://Field/email}) 

Action 2: Trigger OData service Call 

  1. First select the Event as “Survey Response – Created” 
  2. No Conditions – as we want to send all responses to back end, but if you want to send only responses with low feedback you can very well do that 
  3. Tasks – Choose ‘Web Service Request”
  4. Create Authorization token
  5. Enter Credentials and save
  6. Enter API which you created in SAP Cloud Platform API Management and map embedded data fields to the API Request body
  7. Save your actions and now it is ready to send data to SAP Solution Manager 
  8. Reporting Tab in actions also gives you the history of actions triggered API call or Emails
  9. Click on status to view the Request header/body as well as Response from API call

Survey data stored in SAP Solution Manager 

Once the POST call is successful from Qualtrics it will attach the survey feedback into the ticket in SAP Solution Manager system. 

Conclusion

The full integration of Qualtrics survey platform to SAP Solution Manager has been beneficial for us to gain positive customer satisfaction and service delivery. We also use the dashboards/reports for analyzing X+O Data using Qualtrics ‘s very own Text analytics, Sentiment analysis and other techniques.

I have not covered the inbuilt reporting/dashboards capability in Qualtrics. which can be found in Qualtrics website.

Bringing the results back from Qualtrics also helps in other scenarios or use cases for e.g. if you are planning to create leads or opportunities in a CRM system or if you want to create complaints based on customer feedback in CRM Service. Or if you want to get ideas for product improvements and convert them into Jira Backlog (yes, you can also create Issues/Backlog items in Jira), Create tickets for customer experience in SAP Solman or ServiceNow or Zendesk etc.

Think of various X+O cases in your areas or products and explore the full potential of Qualtrics Integration in different SAP solutions. All the best !

4 Comments
You must be Logged on to comment or reply to a post.
  • Thank you for sharing this!

    How much effort/duration did it took you (your team) to prepare and implement?

    What type of feedback have you received from users from the change of platform? (if they noticed)

    If possible, could you share some reports that can be generated now with Qualtrics?

    Thank you,

    Ruth

    • Hello Ruth,

      It took around 4-6 weeks for training preparation and implementation.

      For users/customers there is not much change, only the look and feel of the survey and how the survey pops-up as an embedded view within CRM webUI. The real benefit is for the Service Delivery owners who can get insights from customer feedback.

      Just as an e.g. get the sentiments of comments entered and then correlate the same with how much time it took to solve the issue.

      What kind of reports you are looking at? we did went live recently and still collecting feedback and preparing the reporting framework.

      Can you DM me if you need further details?

      Best regards,

      Guru

  • Hi Guru 😉

    Do you take into consideration how “Happy” the user was with the ticket resolution and the product for which the ticket was raised?

    Can you map the feedback to our products and solutions? It might help product development and product management!

    How do you initiate the feedback loop back to the users? Considering the XM principle “listen”, “understand” and “act”?

    Btw. our SAC colleagues launched a Qualtrics-SAP connector: https://video.sap.com/media/t/0_tl8w2r02

    Best regards

    Sven York

    • Hi Sven York,

      Thank you for the questions. Let me answer one by one.

      Q:Do you take into consideration how “Happy” the user was with the ticket resolution and the product for which the ticket was raised?

      A: Yes we do consider the “Happy” part, there is a NPS question and there are questions relating to quality of solution, time for solution etc.

      But what we don’t ask is about the products like how was your experience with using so and so product, as in our ticketing tool there are different product areas doing support and the satisfaction (the user expectation from the tool) is about fast resolution of his ticket or fulfillment of service delivery across different product areas or groups.

      Q: Can you map the feedback to our products and solutions? It might help product development and product management!

      A: Not in scope for the moment, but I say this is possible based on the user’s comments. For e.g. if user rates a ticket and gives a comment about xyz product, we can create topics for that product and get sentiments and insights on responses coming for that product.

      Q: How do you initiate the feedback loop back to the users? Considering the XM principle “listen”, “understand” and “act”?

      A: Good question! As the blog was more focusing on the technical aspects of integration I did not cover this part.

      We have a very large user base, We listen to the large customer group via state of the art Qualtrics survey which has the same visual experience in different ticketing applications, accessibility is also enabled. We learn from hundreds of thousand surveys(over a year) received to analyze the O data, to learn from comments, visualize trends and patterns, correlate results.

      Act is where we don’t share this feedback directly with customers, so as such there is no direct feedback loop. But this more from actions on tool side and from product areas or support groups.

      For e.g. Informing agents as and when there is a low feedback via email from Qualtrics to meet customer expectations and understand the experience gap. Providing new features or improvements on the ticketing tool, work on simplification.

      If there is a low feedback on reaction time from for e.g. India Bengaluru office for a product area, The issue can be analyzed to “act” on corrective measures, It could be the shift handover time where the reaction is low, or capacity issues etc. correlate SLA’s or KPI’s (o data) with survey responses(X data) and understand the relation and impact.

      Btw. our SAC colleagues launched a Qualtrics-SAP connector: https://video.sap.com/media/t/0_tl8w2r02

      –> Thank you for the link

      Best regards

      Guru