Technology Blogs by SAP
Learn how to extend and personalize SAP applications. Follow the SAP technology blog for insights into SAP BTP, ABAP, SAP Analytics Cloud, SAP HANA, and more.
Showing results for 
Search instead for 
Did you mean: 

X+O case for IT Service Management


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. 


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. 


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) 

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  


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


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 


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 

<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","")).start()}catch(i){}})();

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


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" );
} else {
console.log( "Can't find SI API" );
  clear controller->gv_call_intercept.

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 


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 environm... 

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 


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

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. 


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 !