Hi guys, in this article I want to share step by step how to integrated with SHAREPOINT from SAP CPI. Before go to explore how to design iFlow for this, we will take a look about SHAREPOINT and REST API of it. To practice this article, we need one account office 365 with SHAREPOINT in there.


To call REST API of SHAREPOINT we have to go 4 steps:

  • Register Add-In ( Client ID, Client Secret)
  • Grant Permissions to Add-In ( Grant permission for Client ID)
  • Generate the Access Token
  • Access the SharePoint resource

Step 01 : Create Client ID and Client Secret

  • After done, we will have Client ID, Client Secret. Next, we will grant permission for this Client ID.

Step 02 : Grant permission for Client ID

SHAREPOINT have 4 scope URI:

SHAREPOINT have 4 authorize

  • Read
  • Write
  • Manage
  • Full Control

We can grant permission at level tenant or level site.

  • (1) : Input Client ID
  • (2): Click button Lookup. SHAREPOINT will fill information of this Client ID
  • (3) : Input permission XML with syntax
  • (1) : Scope
  • (2) : Right (Read, Write, Manage, Full Control)

Step 03 : Get access token

Step 3.1 Get TENANT ID, Resource

Use POSTMAN, call one request with method GET to endpoint : https://<domain-name>/sites/<site-name>/_vti_bin/client.svc/

At header of response, take a look in field

  • WWW-Authenticate
    • Bearer realm : Value of this field is Tenant ID
    • client_id : Value of this field is resource

Step 3.2 Get Access Token

To get access token, we need informations

  • grant_type : client_credentials
  • client_id : ClientID@TenantID (Client ID get in step 01, TenantID get in Step 3.1)
  • client_secret : Client Secret in step 01
  • resource : resource/<domain-name>@TenantID
  • Endpoint : https://accounts.accesscontrol.windows.net/<TenantID>/tokens/OAuth/2
  • Method : POST

Step 04 : Access resource of SHAREPOINT

All operation on SHAREPOINT, we will call endpoint at level SITE. This is endpoint at level SITE


NOTES : After config Client ID, Client Secret and grant permission. When We call resource We receiver error: Authorize – Token. To fix this Issue, We need run PowerShell

4.1 Create folder in documents

HOST: htts://<domain-name>

RESOURCE : /sites/<site-name>/_api/web/folders



  • Key : ServerRelativeUrl
  • Value : Shared Documents/<Folder-Name>

Content-type : JSON

ACCEPT : application/json;odata=verbose

4.2 Get all folder in Shared Documents

HOST: htts://<domain-name>

RESOURCE : /sites/<site-name>/_api/web/GetFolderByServerRelativeUrl(‘/sites/<site-name>/Shared Documents’)/Folders


ACCEPT : application/json;odata=verbose

4.3 DELETE folder

HOST: htts://<domain-name>

RESOURCE : /sites/<site-name>/_api/web/GetFolderByServerRelativeUrl(‘/sites/<site-name>/Shared Documents/<folder-name>’)


4.4 Get all files in folder

HOST: htts://<domain-name>

RESOURCE : /sites/<site-name>/_api/web/GetFolderByServerRelativeUrl(‘/sites/<site-name>/Shared Documents/<folder-name>’)/Files


ACCEPT : application/json;odata=verbose

4.5 Get file with file name

HOST: htts://<domain-name>

RESOURCE : /sites/<site-name>/_api/web/GetFolderByServerRelativeUrl(‘/sites/<site-name>/Shared Documents/<folder-name>’)/Files(‘<file-name-and-extension>’)/$value


ACCEPT : application/json;odata=verbose

4.6 Upload File to Folder

HOST: htts://<domain-name>

RESOURCE : /sites/<site-name>/_api/web/GetFolderByServerRelativeUrl(‘/sites/<site-name>/Shared Documents/<folder-name>’)/files/Add(url='<file-name>’,overwrite=<true/false>)


ACCEPT : application/json;odata=verbose


OK, we explored how to get access token and take some request REST API of SHAREPOINT in POSTMAN tool. In this section, we will use SAP CPI to call REST APIs of SHAREPOINT. This scenario used for in cases we want upload file from SAP backend by ABAP code to SHAREPOINT. This scenario, we have to do:

  • SAP backend will send file to SFTP
  • SAP CPI collect file from SFTP and send it to SHAREPOINT.

OK, for simple in this article, I will copy/paste file XML into SFTP server and check on SHAREPOINT. In fact, file will sent by ABAP Proxy from backend.

Further more, in integration flow I will hardcode value of access token. In fact, You will call to REST API of SHAREPOINT, as step by step in section above, to get access token.

  • Text to Array Byte : This is a groovy Script to transfer data in body to steam by with code
  • Header & Access Token : This is a content modifier, hard code access token
  • Request Reply : Call REST API upload file to SHAREPOINT
  • Address : REST API upload file to SHAREPOINT. We get file name by syntax : ${file.onlyname}


01. Wrong Access Token

02. Access token is expired

03. Happy case


In this article, I shared step by step how to integration with SHAREPOINT through SAP CPI. I also shared how to working with REST API of SHAREPOINT. More details for REST API of SHAREPOINT, kindly visit link : https://docs.microsoft.com/en-us/sharepoint/dev/sp-add-ins/working-with-folders-and-files-with-rest

Thanks for your reading and any advise, kindly leave your comment below.



One comment

  1. This is really helpful blog!
    I’m trying the same thing as you did. At the mean time, I’m also trying to get the access token via CPI instead of Postman. However, I did not get the token successfully and wondering if you have any experience on it?


Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.