In this blog I would like to show you how you can easily upload from any source system into SAP Signavio Process Intelligence using SAP Cloud Integration.

SAP Cloud Integration offers a wide range of connectors to on-premise and cloud SAP as well as non-SAP solutions and this data we can leverage in SAP Signavio Process Intelligence to start our process mining journey and can detailled insights into our processes.

In my scenario I setup a scheduler that retrieves the data from an SAP S/4HANA Cloud API in a specific interval. If you like to use another API or connectivity option that is available in SAP Cloud Integration, go for it, the scenario will also work.

Activate API in S/4HANA Cloud

Lets log on to our S/4HANA Cloud system and activate the API.

In this scenario I am leveraging the Commercial Project Read API.

We go to the app “maintain communication user” to create a new technical user that handles the basic authentication for the API

Create%20communication%20user

Create communication user

Then we create a communication system in the app “maintain communication system” and assign our communication user to it. Here you can maintain any host name, as we are only interested in reading data from S/4HANA Cloud.

Create%20communication%20system

Create communication system

Now we activate the respective API. For that we go the app “maintain communication arrangement” and create the arrangement SAP_COM_0054. Once we saved the arrangement our API is ready to be used. We can also see the URL of our API.

Create%20communication%20arrangement

Create communication arrangement

 

Activate API in Signavio Process Intelligence

We logon to Signavio and on the top right corner we access the product Process Intelligence.

Access%20Process%20Intelligence

Access Process Intelligence

Once we access Process Intelligence we can click on the top right corner on “Manage Data”.

Manage%20Data

Manage Data

Then we see our process data pipelines. On the left side click on “Connections”.

Connections

Connections

Here we create a new connection.

Create%20new%20connection

Create new connection

Under “Other” we select Ingestion API and give the connection a name.

Once we save the connection, we get the URL endpoint and a token to call the API.

Endpoint%20and%20token

Endpoint and token

Configure Integration Flow

All APIs that we want to use are ready.

Now we log on to Cloud Integration and create an integration flow that looks like this:

Complete%20integration%20flow

Complete integration flow

Lets go through each element here.

The integration flow starts with a timer event, that we schedule to run every hour between a specific time interval.

Timer%20event

Timer event

In the next step we add a Request Reply as we are calling a synchronous OData API.

In the OData channel we insert the URL we received from the communication arrangement and the credential name from the communication user in S/4HANA Cloud. Note that the credential name needs to be maintained in the monitoring tab under “Security Materials”.

Endpoint%20and%20user

Endpoint and technical user

In the processing tab of the OData channel, we also select the fields we want to retrieve from the API.

In my scenario I selected following fields for demo purposes.

Select%20fields%20in%20OData%20API

Select fields in OData API

Now that we have retrieved the data in XML format, we convert it to CSV as this is the format that the ingestion API expects. For the we use the module XML to CSV converter.

We select the field separator to be comma and include the field names as headers.

XML%20to%20CSV%20convertor

XML to CSV convertor

In the next step I created a content modifier and set the message header “Accept” to “application/json”.

Message%20header%20Accept

Message header Accept

I also set the properties required by the API

Primary key: I use the mandatory field ProjectID

Schema: 

Here we insert the schema of our extracted data.

As we are using it in our exchange property, it has to be in one row without spaces.

{"type":"record","name":"Projects","fields":[{"name":"ProfitCenter","type":["null","string"]},{"name":"CostCenter","type":["null","string"]},{"name":"ProjectName","type":["null","string"]},{"name":"Customer","type":["null","string"]},{"name":"ProjectID","type":["null","string"]},{"name":"ProjManagerId","type":["null","string"]}]}

Content type: multipart/form-data; boundary=cpi

The boundary separates the different values in the payload later.

Token: “Bearer <token from Process Intelligence>”

Here we insert the token we received from activating the ingestion API in Process Intelligence.

Message%20properties

Message properties

In the next step I created an additional content modifier and insert the property content type and token into the header. The reason why I did not do it directly is that I encountered some issues when the message header had a blank space in between, which mine did. If anyone knows a nicer way to handle this, please let me know!

Add%20properties%20to%20header

Add properties to header

Now I added a groovy script to overcome the line ending issues mentioned in this blog.

My groovy script looks like this:

import com.sap.gateway.ip.core.customdev.util.Message;
import java.util.HashMap;
def Message processData(Message message) {
    //Body 
       map = message.getProperties();
	   schema = map.get("schema");
	   primarykeys = map.get("primarykeys");
    //Body 
       def body = message.getBody(String);
       body = body.replaceAll("n", "rn");
       body = """--cpirnContent-Disposition: form-data; name="schema"rnrnrn""" + schema + """rn--cpirn""" + """Content-Disposition: form-data; name="files"; filename="S4.csv"rnContent-Type: text/csvrnrnrn""" + body +"""--cpirnContent-Disposition: form-data; name="primaryKeys"rnrn""" + primarykeys + """rn--cpi--"""

       message.setBody(body);
       return message;
}

In the final step we need to configure a http channel to the ingestion API in Process Intelligence.

As we already provided the authorization directly in the message header with the content modifier, we select no authorization here and just insert the endpoint URL.

Call%20ingestion%20API

Call ingestion API

Results

Once you run the integration flow successfully, you can logon the Process Intelligence where you setup the ingestion API and click on “Linked source data”. There you can see all the fields that have been replicated from Cloud Integration to Process Intelligence

Linked%20source%20data

Linked source data

You can also see that we set ProjectID as our primary key with this indicator:

Data%20fields%20and%20primary%20key

Data fields and primary key

Conclusion

And that sums up the configuration steps to setup your first simple scenario to upload data into Signavio Process Intelligence using Cloud Integration.

However, this is only the start! We will invest more in bringing Cloud Integration and Signavio Process Intelligence together for API-based integration scenarios.

If you have any specific requirement to upload data into Signavio Process Intelligence where you are evaluating different connectivity options, feel free to reach out to me 🙂

Sara Sampaio

Sara Sampaio

Author Since: March 10, 2022

0 0 votes
Article Rating
Subscribe
Notify of
0 Comments
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x