SAP BTP plugin
The Camunda SAP Business Technology Platform (BTP) plugin is an artifact run on BTP. It consists of a UI5 app, a CAP service layer and backend (using PostgreSQL), and an approuter for traffic dispatching.
The BTP plugin connects to Camunda 8 SaaS to provide:
- A generic Fiori app for starting BPMN processes and displaying Camunda Forms in the Fiori design language.
- A generic endpoint to start BPMN processes with.
Prerequisites
-
Camunda API Client
Create an API client for your Camunda SaaS cluster with the full scope:Zeebe,Tasklist,Operate,Optimize,Secrets
-
Locally, for configuring via
csap
only (see below): Node.js >= 20 LTS
On SAP BTP:
-
Cloud Foundry CLI with the multiapps plugin installed on the machine executing the deployment.
-
SAP BTP subaccount with a Cloud Foundry environment enabled and a created space.
-
A minimum of 4 GB storage quota and 4 GB runtime memory.
-
Entitlements for:
- BTP PostgreSQL, hyperscaler option
- Ensure the available BTP PostgreSQL, hyperscaler option, and configuration options match your sizing plan. For example, for multi-region databases or high availability, the BTP plugin defaults to a minimum, only specifying PostgreSQL version 16 (see
/core/pg-options.json
) and a single database instance, with no high availability.
- Ensure the available BTP PostgreSQL, hyperscaler option, and configuration options match your sizing plan. For example, for multi-region databases or high availability, the BTP plugin defaults to a minimum, only specifying PostgreSQL version 16 (see
- Destination Service,
lite
plan - Connectivity Service,
lite
plan - Authorization and Trust Management Service,
application
plan
- BTP PostgreSQL, hyperscaler option
Features
- Model user tasks in your BPMN process—they will be automatically detected and rendered by the BTP plugin at runtime.
-
Equip the last user task with a custom header
final-user-task
and the value:success
to display the last user task on the "happy path".fail
to use that user task to communicate a failed process to the user.
-
Auto-start a process via URL parameter using
run=<processID>
.
For example,https://<btp plugin url>/index.html?channelId=<id>&run=application-process
. -
For debugging purposes, add
debug=true
as the URL parameter.
For example,https://<btp plugin url>/index.html?channelId=<id>&run=application-process&debug=true
. -
/inbound
endpoint for starting a BPMN process in Camunda
Camunda Forms in SAP Fiori
Layout: Only a single-row layout is supported:
Custom properties are not supported:
Supported Form Features and Properties
Camunda Forms Feature / Property | Supported in Camunda BTP Plugin? | Comments | |
---|---|---|---|
Input | |||
Text field | ✅ | ||
Text area | ✅ | ||
Number | ✅ | ||
Date time | ✅ | Only UTC values will be stored - Date format yyyy-MM-dd , for example 2025-02-29"12 - Hours format will be stored as the string 10:12:34 pm - 24 hours format will be stored as the string 22:12:34 | |
Expression | ❌ | ||
Filepicker | ❌ | ||
Selection | |||
Checkbox | ✅ | ||
Checkbox group | ❌ | ||
Radio group | ✅ | Only static options source is supported. | |
Select | ✅ | Only static options source is supported. | |
Tag list | ❌ | ||
Presentation | |||
Text view | ✅ | ||
Image view | ✅ | ||
Table | ❌ | ||
HTML view | ✅ | ||
Document preview | ❌ | ||
Spacer | ❌ | ||
Separator | ❌ | ||
Containers | |||
Group | ❌ | ||
Dynamic list | ❌ | ||
iframe | ❌ | ||
Action | |||
Button | ❌ |
Configuration and deployment
Use csap
for setting up the BTP plugin, as a manual configuration is cumbersome and error-prone.
With Camunda, no setup/config work is necessary to use the BTP plugin.
Configuring the BTP plugin using csap
Either walk yourself through the prompts or provide all information to the CLI:
-
csap setup
will guide you interactively. -
Assuming your Camunda cluster's API credentials are sourced in your shell environment, this will do the configuration for you:
csap setup --for btp-plugin \
--camunda 8.7 \
--deployment SaaS \
--btpRoute camunda-btp-plugin.cfapps.eu10-004.hana.ondemand.com
The host name provided as btpRoute
will be the URL to the BTP plugin's app; following the example above: https://camunda-btp-plugin.cfapps.eu10-004.hana.ondemand.com
.
Deploying to BTP
- Log into the desired SAP BTP subaccount via the Cloud Foundry
cli
(cf-cli):
$> cf login
API endpoint: https://api.cf. ...
...
cd
to the foldercsap
logs after a successful build, for example,/tmp/camunda/8.6/sap-btp-plugin
- Issue
cf deploy mta_archives/*.mtar
- Add the
-f
switch to force an update, for example, by deploying the same version again (cf deploy mta_archives/*.mtar -f
). - Consider adding
--delete-services
to recreate eventually failed service creation of previous deployment. For example,cf deploy mta_archives/*.mtar -f --delete-services
.
- Add the
For advanced deployment configuration, consider working with your SAP practice, starting from the created mta.yaml
deployment descriptor (in the $TMP
folder as output by csap
).
Working with the BTP plugin
The BTP plugin provides a guided, one-user multi-page flow where a single user progresses through a sequence of steps to complete a task or workflow. It renders subsets of Camunda Forms, with each page representing a distinct part of the process.
After deployment, the BTP plugin is available at the btpRoute
provided: https://<btpRoute>
. If called manually (for example, in the browser) it will redirect automatically to /app/index.html?channelId=<unique id>
. The <unique id>
or "channel ID" links the output device to the BTP plugin, representing a dedicated "output channel".
Starting a BPMN process in the browser
Start any Camunda BPMN process manually via the menu bar.
In the popup, enter the ID of the BPMN to run.
Alternatively, the process can be auto-started by directly calling the URL:
https://<btp plugin url>/index.html?channelId=<random id>&run=fiori-bupa-search
Starting a BPMN process via API
Make a POST
http call to https://<btpRoute>/backend/inbound
with this defined payload:
{
"bpmnProcessId": "processId", # ex above: fiori-bupa-search
"user": "beck@renegade.org", # unique id of the user
"wait": false, # or true to wait for the BPMN run to finish and get the result back
"variables": { # optional
"some_key": "some_value",
"some_other_key": 10
}
}
The advantage over Camunda REST API: use the authentication realm between BTP and S/4 / ECC, there is no need for adminstrating additional credentials.