Skip to Content
Technical Articles
Author's profile photo Toan PHAM-TRONG

Create Value Mapping using API

Basic Acknowledgement

A lot of very interesting blogs around CPI Value Mapping were published for the past 5 years, I noticed that automatic process was not possible because API is missing an easy way to create Value Mapping.

In the latest blog, SAP Cloud Integration: maintenance of Value Mapping artifacts through OData API

, author is suggesting this manual preliminary step  :

“Create a VM object and maintain Source and Target Agencies as well the Identifiers needed by your scenario. Please note that it is required to maintain the first default entry manually as it’s not possible to save an object without at least one value mapping entry. Deploy your initial VM to your tenant.”

My first blog is suggesting a workaround to this step, to create Value Mapping using API.

Exploring API

Existing documentation

First method : “upsert” suggest ability to insert or update :



POST /UpsertValMaps allows to add values to an existing  Value Mapping,

but trying to insert a value to a non-existing  <SrcAgency/SrcId/TgtAgency/TgtId> would respond with 404 :

"Could not find source agency:SourceAgency, source identifier:123, target agency:TargetAgency and target identifier:456"

2nd method :




POST /ValueMappingDesigntimeArtifacts

upload a value mapping


Available parameters

Let’s make a focus on parameter ArtifactContent

“ArtifactContent”: “integration flow zip content in base64-encoded format”

Let’s assume this is as zipped representation of an exported Value Mapping.


So let’s try to :

  • export (from CPI interface (Design => Arfifacts) a newly created value mapping
  • delete this value mapping (from the same interface)
  • encode zipped binary file as base64 String (this makes it compatible with json content)
  • try to call API /ValueMappingDesigntimeArtifacts, valuing ArtifactContent parameter with previously encoded in Base64 string

And it creates the Value Mapping => Hurray !


Now let’s dig deeper in the zip archive file, it reveals following structure


Zip archive folder structure


Looking into  value_mapping.xml file :


value_mapping.xml file content


Playing with this zip content,  we can assume that it is possible to :

-delete the value mapping (via CPI interface)

-alter zip file to change some values in value_mapping.xml

-encode zip faile in base 64

-re-create value mapping through API call.


We have understood that the

  • POST method allows us to create a value mapping.
  • we can change archive content to create value mapping we want (with at least a couple of entries)


Now let’s try to design a flow that will allow us to create a value mapping :



For sure : CPI has the toolbox to handle zip and base64 contents.


Starting point : it seems easier to me to start from an existing archive zip file, and to alter value_mapping.xml file content.


Let’s start with an existing and downloaded Value Mapping zip file.

Just to be sure, let’s empty value_mapping.xml file, inside zip archive.

Then let’s encode this zip as base-64 String using notepad++.

=> this base64 string will be helpful soon !



suggested Iflow


This is proposal of steps to build the iflow :

Step 1 : content modifier setting body with my base64 string

Step 2 : base64 decode (obtaining a zip file)

Step 3  : zip splitter  : iterating on archive files, one by one

router testing file name = value_mapping.xml

${header.zipFileName} = ‘value_mapping.xml’

Step 4 : set the body with payload corresponding to ValueMapping xml representation

that could be found earlier :


Step 5 : Gather in zip mode => re-creates zip file

Step 6 : base64 encoding => result is a base64 String representing Value Mapping and that can be passed to API method


For now, using this base64 string with API call from Postman :

POST /ValueMappingDesigntimeArtifacts

as « ArtifactContent »




Created Value Mapping

Conclusion :

We are able to use base64 artifactContent parameter to create a Value Mapping through API.

I suggested a CPI flow to create this base64 string.

Nevertheless, we are unable to create a value mapping without a first set of value. So it may be hard to separate Value mapping creation from its dataset.

I hope you found this blog helpful, don’t hesitate to comment or ask questions, I will do my best to answer to you quickly.



Related community content links and other related blog post

Dynamic Value Mapping in SAP CPI | SAP Blogs (2018)

Key-Value Mapping in CPI for huge data sets has never been easier | SAP Blogs (2018)

Key-Value Mapping in SAP Cloud Platform Integration (CPI) with an integration Flow | SAP Blogs (2018) (2020)

SAP Cloud Integration: maintenance of Value Mapping artifacts through OData API (2023)

Assigned Tags

      1 Comment
      You must be Logged on to comment or reply to a post.
      Author's profile photo Piotr Radzki
      Piotr Radzki

      Hi Toan,

      looks good, we got almost the whole end to end process covered. Thanks for mentioning my blog.

      BR, Piotr