Skip to Content
Technical Articles
Author's profile photo Vimal Pillai

SAP Signavio Integration with SAP Solution Manager using Integration Suite

This blog covers the details on integrating SAP Signavio system with SAP Solution Manager using Integration Suite and different issues encountered during the setup. The blog does not cover in-depth functional aspects of Siganvio or Solution Manager. The blog provides a direction and an attempt to those who wants to connect Signavio to Solution Manager using Reverse Proxy connections (Integration Suite and Cloud Connector in this blog). This approach can be taken to build POC OR demo a solution showcase the Capability of Signavio and Solution Manager systems to synchronize Processes.

More information on Signavio can be found at: https://www.signavio.com/downloads/short-reads/process-manager-sap-solution-manager-integration/

Introduction

With the inception of API’s it has been really easier to setup a system by just knowing the initiating service and the required data to be processed. The ‘Cherry on Top’ is the service enablement capability in SAP which can consume/subscribe to OData and REST services with utmost ease. This integration is also about consuming API’s which reside in systems outside the ERP layers of SAP landscape. SAP Signavio Process Manager offers intuitive, cloud-based, professional process modeling. The comprehensive solution enables organizations to document, model, design, and simulate processes, as well as outline their interconnection to create a shared understanding with increased performance at scale. In simple words, Business User can now define/modify industry Best Practice processes that align to their organization processes without much efforts and investigations.

Integration Overview

SAP Signavio provides capability to directly integration with SAP Solution Manager through its Connector Setup Page. The connection is mainly OData based and JSON messages are read and processed back and forth. The task becomes really easy if the Signavio and Solution Manager are hosted in the same environment. But what if the Solution Manager is in a DMZ layer where services cannot be accessed outside the Organization Network, the role of Integration Suite plays a pivotal role to connect these systems and also secure the integration. We cover various possible integration approaches in this blog.

Pre-Requisite

SAP Solution Manager v7.2

Signavio Account and Access to configure Connector Page

SAP Integration Suite

Integrations Approaches

There are 3 different ways to connect Signavio with Solution Manager system.

  1. Connect through direct OData Service URL of Solution Manager. This URL looks something like below:https://:<SolutionManagerHost>:<port>/sap/opu/odata/sap/PROCESSMANAGEMENT/<solutionManagerHost> stands for the Host of your SAP Solution Manager server and <port> for its port numberThis is a straightforward setup if Solution Manager services /sap/opu/odata/sap are activated using the SICF transaction.
  2. Allow Signavio IP Address to be whitelisted in the recipient Network system and thereby allowing access to Solution Manager system. IP Details are available in the below page accoding to the Signavio subscription: https://documentation.signavio.com/suite/en-us/Content/process-manager/userguide/sap-solman/configure-solman7.2.htm
  3. Integration Suite provides us another option to connect Signavio and Solution Manager using API Calls. For our case we connect through  SAP API Management and/or SAP Cloud integration (CPI) of the Integration Suite. Cloud Connector would be used to connect Integration Suite to SAP Solution Manager system

This blog covers the steps for option 3.

Technical Architecture and Design Approach

SAP currently has the option of direct connection from Signavio with SAP Solution Manager using OData Services in the Connector setup page. For the POC described in this blog, SAP API Management was used along with SAP CPI and the solution is build on case-to-case basis rather than generic packaged solution. The reason for not having a packaged integration in CPI or API Management is the nature of the URL’s called from Signavio. Each URL is parameterized except the Primary URL. There are no options in SAP CPI to create parameterized Endpoint URL’s and hence each Business Solution needs to be individually developed.

SAP API Management used in this integration is to check the service calls, debug the flow, enable secure policies and to also make sure to replicate the Direct Connection approach.(Signavio Connection needs a Host and Port combination to establish the connection).

In the initial days of the POC development, it was required to know which API’s the Signavio call internally to setup the whole configuration. API Management proved to be a boon here capturing each call and subsequent API’s that are internally called from Signavio code. The Developer Tools of Chrome also helps to find the API’s triggered during the Connector setup.

Signavio Connector Page

Signavio uses API’s to perform various service calls with HTTP Operations (GET, POST, PUT, etc). Most of the API’s discussed in this blog are GET and PUT requests. Before importing/exporting a Process from SAP Solution Manager, the Connection setup is done in the Connector section of the SAP Signavio Process Manager using below link:

Connector URL: https://<SignavioHostName>/g/statics/solman72/configuration/connector

Access Connector Page:

  1. To Open Connector Goto the the Home Page and Navigate to the right and click on profile. Select Process Manager from Drop Down
  2. Clicking Process Managers take to the Explorer window, where you select ‘Manager Solution Manager 7.2’ Setup option
  3. This opens the Connector Page for further configuring the API:

API’s Used for Integration

The Configuration Page is the global setting to establish connection between Signavio and Solution Manager. The different tabs allows changes to configurations as well as copying processes from Solution Manager.

Each Page internally calls individual group of API’s to perform the whole setup. The Connection Setting is the only Page where we provide a Solution Manager URL or a Reverse Proxy Connection to enable Signavio for data communication with Solution Manager. This is also called the Global Setup page for connecting to Solution Manager.

Details of the setup are provided in: https://documentation.signavio.com/suite/en-us/Content/process-manager/userguide/sap-solman/configure-spm-for-solman-7.2.htm

The API following the below convention:

https://<APIMHostName>:<Port>/EntityPath

Below are the API’s used to perform the integration:

Signavio API Name HTTP Method EntityPath
Primary URL GET /ProcessManagement
BranchSet GET /ProcessManagement/BranchSet
BranchContent GET /ProcessManagement/BranchContent
BranchContentSet GET /ProcessManagement/BranchContentSet(BranchId=’Id of Branch’,ScopeId=’Id of Scope’,SiteId=”,SystemRole=”)/$value
BranchContentImporterSet PUT /ProcessManagement/BranchContentImporterSet(BranchId='<Id>’,ChangeDocumentId=”)/$value
ContentModelSetSchema GET /ProcessManagement/ContentModelSet
ContentModelSet GET /ProcessManagement/ContentModelSet(‘1.0’)/$value
DocumentTypeSet GET /ProcessManagement/SolutionSet(‘Id of Solution’)/DocumentTypeSet
LogicalCompnentGroupSet GET /ProcessManagement/SolutionSet(‘Id of Solution’)/LogicalComponentGroupSet
ScopeSet GET /ProcessManagement/SolutionSet(‘Id of Solution’)/ScopeSet
SolutionSet GET /ProcessManagement/SolutionSet
CreateDocument GET /ProcessManagement/CreateDocument(BranchId='{branchId}’,ChangeDocumentId=”,DoctypeName='{documentType}’,IsDocumentURL=’TRUE’,DocTitle='{documentTitle}’)
DocumentSet GET /ProcessManagement/DocumentSet(BranchId='{branchId}’,DocumentId='{documentId}’

Except the Primary URL all other URL’s are called internally from Signavio to Solution Manager to get details of each entity of the Process Management Service. This is required to populate all the different pages and enable import/export functionalities. Although called internally each API needs to be build in the Integration Suite.

The Primary URL is to be provided in the connection page for ‘URL of Solution Manager instance’

Each function Attribute Mapping, Dictionary Mapping, Processes in the Connector configuration internally calls group or API’s to collect information, process them and communicate data with Solution Manager.

Each API is an OData Entity in itself. Details can be found at: https://wiki.scn.sap.com/wiki/display/SM/Process+Management+API

Depending on the Solution, Branch and Scope the execution of processes changes. These values are required to build the API as these are the actual calls from Signavo to Solution Manager.

Solution ID: The SolutionId and SolutionName can be extracted using the SolutionSet API.

Scope ID: ScopeId can be extracted using the ScopeSet API

Branch ID: BranchId can be extracted using the BranchSet API

Build the Solution

SAP API Management

The approach to Build the integration is similar for each API. Steps are as below:

  1. Open API Portal of SAP API Management.
  2.  Goto Develop and Click on Create (Opens Create API Page).
  3. Choose URL , provide the required details and click Create.

URL – This would be the Enpoint URL of SAP Cloud Integration

API Base Path – The Base Suffix except the Host and Port. (Eg. if API is build for https://<CPI/APIMHostName>:<Port>/ProcessManagement/BranchContentSet(BranchId=’Id of Branch’,ScopeId=’Id of Scope’,SiteId=”,SystemRole=”)/$value, then Base Path is /ProcessManagement/BranchContentSet(BranchId=’Id of Branch’,ScopeId=’Id of Scope’,SiteId=”,SystemRole=”)/$value). BranchId and ScopeId would need to be Hard-coded based on above explanation on case-to-case basis solutioning).

Signavio requires X-CSRF-Token in each API call and hence we can make use of policies to achieve this functionality.

 

Key Value Maps

Before setting up policies we need to create credentials to be used for header data.

For this, Goto Key Value Maps, Click Create and provide the credential information.

Policies 

4 policies are used to get the X-CSRF-Token for Signavio to use in subsequent API Calls.

 

CredentialFetch - To assign the Parameters (UserName and Password). Use the below code:

<!-- Key/value pairs can be stored, retrieved, and deleted from named existing maps by configuring this policy by specifying PUT, GET, or DELETE operations -->
<!-- mapIdentifier refers to the name of the key value map -->
<!-- Don't use Key Value Maps to store your logs as this can impact API Proxy runtime flow -->
<KeyValueMapOperations mapIdentifier="credentials" async="true" continueOnError="false" enabled="true" xmlns="http://www.sap.com/apimgmt">
<!-- PUT stores the key value pair mentioned inside the element -->
<Get assignTo="private.BasicAuthUsername" index='1'>
<Key><Parameter>username</Parameter></Key>
</Get>
<Get assignTo="private.BasicAuthPassword" index='1'>
<Key><Parameter>password</Parameter></Key>
</Get>
<Scope>environment</Scope>
</KeyValueMapOperations>

basicAuth - Assign Username and Password to Header.

<BasicAuthentication continueOnError='false' enabled='true' xmlns='http://www.sap.com/apimgmt'>
<Operation>Encode</Operation>
<IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>
<User ref='private.BasicAuthUsername'></User>
<Password ref='private.BasicAuthPassword'></Password>
<AssignTo createNew="true">request.header.Authorization</AssignTo>
</BasicAuthentication>

scCSRF - Service Call to Fetch the Token

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ServiceCallout async="true" continueOnError="false" enabled="true" xmlns="http://www.sap.com/apimgmt">
<Request>
<Set>
<Headers>
<Header name="x-csrf-token">fetch</Header>
<Header name="Authorization">{request.header.Authorization}</Header>
</Headers>
<Verb>GET</Verb>
</Set>
<IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>
</Request>
<Response>callOutResponse</Response>
<Timeout>30000</Timeout>
<HTTPTargetConnection>
<URL>CPIEndpointURL</URL>
</HTTPTargetConnection>
</ServiceCallout>

amCSRF - Response processing

<!-- This policy can be used to create or modify the standard HTTP request and response messages -->
<AssignMessage async="false" continueOnError="false" enabled="true" xmlns='http://www.sap.com/apimgmt'>
<!-- Sets a new value to the existing parameter -->
<Set>
<Headers>
<Header name="x-csrf-token">{callOutResponse.header.x-csrf-token}</Header>
<Header name="Cookie">{callOutResponse.header.Set-Cookie.1};{callOutResponse.header.Set-Cookie.2}</Header>
</Headers>
</Set>
<IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>
<AssignTo createNew="false" type="request">request</AssignTo>
</AssignMessage>

Condition String- (request.verb = "POST" OR request.verb = "PUT" OR request.verb = "DELETE" OR request.verb = "GET")

These are the common steps to configure all the rest of API’s.

SAP Cloud Integration

Create interfaces for each API using HTTP adapter for Source and Target end points.

Please note the receiver HTTP URL would be similar to the API URL’s mentioned above as we would make connection to Solution Manager via Cloud Connector and query the Entity.

OData Adapter can also be used for this integration in the receiver end.All messages are in JSON form and necessary conversions would be required.

Thats it!!! Integration is complete. You can now export or import processes from/to Solution Manager.

The Processes in Signavio would appear in Solution Manager as below:

The setup can be debugged by switching on the Debugging feature in API Management for each API’s. CPI Payload trace shows the details of request and response messages.

Summary

In nutshell this blog is an attempt to provide Integration Developers a direction to integration Signavio API’s with SAP Solution Manager using Integration Suite approach. This might not be a feasible solution if a Direct connection is available (which is recommended).

Please provide your feedback and comments on this approach.

Many Thanks to Andreas Zahn, Thomas Garay and Joerg Blom for providing help and support.

Special mention to Signavio Developer and Support teams in providing information to make this integration possible.

Assigned Tags

      2 Comments
      You must be Logged on to comment or reply to a post.
      Author's profile photo Deepak Jaiswal
      Deepak Jaiswal

      Very detailed explanation. Great blog..

      Keep blogging 🙂

      Author's profile photo suchita tomar
      suchita tomar

      Very Nice blog with detailed explanation for step by step guidance. Keep it up…!!