> For the complete documentation index, see [llms.txt](https://docs.sealights.io/knowledgebase/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.sealights.io/knowledgebase/setup-and-configuration/sealights-agents-and-plugins/abap-agent-2.0/test-tool-integrations/calm.md).

# SAP Cloud ALM

SAP Cloud ALM test repository adapter for ABAP Agent 2.0 — CLI and Guides references.

Use adapter type **`calm`** to connect SAP Cloud ALM so the agent can search test cases for your pipeline.

{% hint style="warning" %}
When you create the ABAP pipeline with `pipeline set`, **leave `--labid` unset** unless you deliberately need to override it. The agent derives the default lab ID as `<QAS SID> <QAS RFC hostname>`. Casual overrides can break **Test Cycles** in SeaLights. See [Create and list pipelines](/knowledgebase/setup-and-configuration/sealights-agents-and-plugins/abap-agent-2.0/command-line-interface/create-and-list-pipelines.md).
{% endhint %}

## Configure

* [Configure Test Repositories](/knowledgebase/setup-and-configuration/sealights-agents-and-plugins/abap-agent-2.0/command-line-interface/configure-test-repositories.md) — `slabapcli testrepo set --type calm`
* [Setup and installation](/knowledgebase/setup-and-configuration/sealights-agents-and-plugins/abap-agent-2.0/guides/setup-and-installation.md) (Part 1)
* [Show the value with Test Cycles](/knowledgebase/setup-and-configuration/sealights-agents-and-plugins/abap-agent-2.0/guides/show-the-value-with-test-cycles.md) (Part 2)

### `testrepo set` parameters for `calm`

Non-secret keys use `--setting key=value`. Secrets are entered interactively (not via `--setting`). Plus common options (`--name`, `--type`, `--pipeline`, `--test-stage`) — see [Configure Test Repositories](/knowledgebase/setup-and-configuration/sealights-agents-and-plugins/abap-agent-2.0/command-line-interface/configure-test-repositories.md).

Authentication uses the OAuth **client-credentials** flow: **`clientId`** and **`clientSecret`**.

Alternatively, use **`--servicebinding`** (CALM only) to paste SAP BTP service binding JSON interactively. That flag replaces `tokenUrl`, `apiBase`, `clientId`, and `clientSecret` — do not pass those keys as `--setting` when you use `--servicebinding`.

| Parameter             | Kind    | Required | Description                                                                                       |
| --------------------- | ------- | -------- | ------------------------------------------------------------------------------------------------- |
| `tokenUrl`            | Setting | Yes\*    | UAA base URL from the service binding `uaa.url` (`/oauth/token` is appended when missing).        |
| `apiBase`             | Setting | Yes\*    | API gateway URL from the service binding `endpoints.Api` (`/api` is appended when missing).       |
| `searchPaths`         | Setting | No       | Comma-separated list that scopes the search. Written as top-level `searchpaths` in `config.toml`. |
| `confidenceThreshold` | Setting | No       | Integer 0–100. Minimum confidence for a match. When omitted, the adapter uses `0`.                |
| `clientId`            | Secret  | Yes\*    | OAuth `client_id` for the client-credentials flow.                                                |
| `clientSecret`        | Secret  | Yes\*    | OAuth `client_secret` for the client-credentials flow.                                            |

\*Required when you configure connection fields manually. Omitted when you use `--servicebinding` (values are taken from the pasted JSON).

Supply connection fields with `--setting`, or use `--servicebinding` to paste SAP BTP service binding JSON interactively (CALM only; replaces `tokenUrl`, `apiBase`, `clientId`, and `clientSecret`).

{% tabs %}
{% tab title="Command Prompt" %}
{% code title="Command (manual settings)" overflow="wrap" %}

```batch
slabapcli.exe testrepo set --name "ALM_Demo-calm" --type "calm" --pipeline "ALM_Demo-S21" --setting tokenUrl=https://example.authentication.eu10.hana.ondemand.com/oauth/token --setting apiBase=https://example-api.cfapps.eu10.hana.ondemand.com/api --test-stage "Regression Tests"
```

{% endcode %}

{% code title="Command (service binding)" overflow="wrap" %}

```batch
slabapcli.exe testrepo set --name "ALM_Demo-calm" --type "calm" --pipeline "ALM_Demo-S21" --servicebinding --test-stage "Regression Tests"
```

{% endcode %}
{% endtab %}

{% tab title="PowerShell" %}
{% code title="Command (manual settings)" overflow="wrap" %}

```powershell
.\slabapcli.exe testrepo set --name 'ALM_Demo-calm' --type 'calm' --pipeline 'ALM_Demo-S21' --setting tokenUrl=https://example.authentication.eu10.hana.ondemand.com/oauth/token --setting apiBase=https://example-api.cfapps.eu10.hana.ondemand.com/api --test-stage 'Regression Tests'
```

{% endcode %}

{% code title="Command (service binding)" overflow="wrap" %}

```powershell
.\slabapcli.exe testrepo set --name 'ALM_Demo-calm' --type 'calm' --pipeline 'ALM_Demo-S21' --servicebinding --test-stage 'Regression Tests'
```

{% endcode %}
{% endtab %}
{% endtabs %}

`--test-stage` is optional. See [Configure Test Repositories](/knowledgebase/setup-and-configuration/sealights-agents-and-plugins/abap-agent-2.0/command-line-interface/configure-test-repositories.md) for the default `"{type} Tests"` value, clear-on-omit behavior, and duplicate-stage warning.

When you use manual `--setting` values, the CLI prompts for **`clientId`** and **`clientSecret`** interactively (OAuth client-credentials flow; secrets are not accepted via `--setting`). Do not combine `--servicebinding` with `--setting tokenUrl`, `apiBase`, `clientId`, or `clientSecret`.

{% code title="Expected output (PowerShell, abbreviated)" overflow="wrap" lineNumbers="true" %}

```log
.\slabapcli.exe testrepo set --name 'ALM_Demo-calm' --type 'calm' --pipeline 'ALM_Demo-S21' --setting tokenUrl=https://example.authentication.eu10.hana.ondemand.com/oauth/token --setting apiBase=https://example-api.cfapps.eu10.hana.ondemand.com/api --test-stage 'Regression Tests'
[2026-03-08 10:45:00.123+02:00] [info] Config pathname: C:\ProgramData\Tricentis\SeaLights\ABAP Agent\config\config.toml
Enter clientId:
Confirm clientId:
Enter clientSecret:
Confirm clientSecret:
Configuration for adapter 'ALM_Demo-calm' was saved successfully.
Running connection test for 'ALM_Demo-calm'...
Connection test passed for 'ALM_Demo-calm' (pipeline: 'ALM_Demo-S21').
```

{% endcode %}

Once the test repository is configured and the connection test succeeds:

1. Finish any remaining agent setup for the pipeline (RFC, pipeline, additional test repositories) if you have not already.
2. Schedule repository search with `search_testrepo`.
3. Capture coverage with Footprints and your test runs.

For the full setup order, see [Start the ABAP Agent Server](/knowledgebase/setup-and-configuration/sealights-agents-and-plugins/abap-agent-2.0/command-line-interface/start-the-agent-server.md) and [Configure Test Repositories](/knowledgebase/setup-and-configuration/sealights-agents-and-plugins/abap-agent-2.0/command-line-interface/configure-test-repositories.md).

`search_testrepo` registers a Windows Scheduled Task that runs `watcher.exe SEARCH_TESTREPO` on a cron schedule.

{% tabs %}
{% tab title="Command Prompt" %}
{% code title="Schedule a search" overflow="wrap" %}

```batch
slabapcli.exe search_testrepo run --pipeline <pipeline> --testrepo <name> [--cron "<cron>"]
```

{% endcode %}
{% endtab %}

{% tab title="PowerShell" %}
{% code title="Schedule a search" overflow="wrap" %}

```powershell
.\slabapcli.exe search_testrepo run --pipeline <pipeline> --testrepo <name> [--cron '<cron>']
```

{% endcode %}
{% endtab %}
{% endtabs %}

| Parameter    | Required | Description                                                         |
| ------------ | -------- | ------------------------------------------------------------------- |
| `--pipeline` | Yes      | Pipeline name (`[[pipeline]].name`).                                |
| `--testrepo` | Yes      | Test repository name (`[[testrepo]].name`) linked to that pipeline. |
| `--cron`     | No       | 5-field cron expression. Default: `0 2 * * 0` (Sunday at 02:00).    |

Full command reference (stop, list, prerequisites): [Search Test Repositories](/knowledgebase/setup-and-configuration/sealights-agents-and-plugins/abap-agent-2.0/command-line-interface/search-test-repositories.md).

SeaLights associates test executions with ABAP code changes through **Footprints** on the agent side.

{% stepper %}
{% step %}

## Schedule Footprints for the pipeline

```batch
slabapcli.exe footprints run --pipeline <pipeline-name>
```

This creates a `FOOTPRINTS` scheduled task that periodically collects coverage-related data and sends it to SeaLights. Full syntax and stop command: [Collect Footprints data for your Pipeline](/knowledgebase/setup-and-configuration/sealights-agents-and-plugins/abap-agent-2.0/command-line-interface/collect-footprints-data-for-your-pipeline.md).
{% endstep %}

{% step %}

## Run tests against the QAS system

Execute tests that exercise the ABAP components you care about while Footprints is collecting. The agent matches executed ABAP components against objects in the latest Build Modification and reports them as footprints.
{% endstep %}

{% step %}

## Wait for processing, then check the Coverage Report

SeaLights needs time to process Footprints data. When processing completes, covered ABAP components appear in your application's Coverage Report.
{% endstep %}
{% endstepper %}


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.sealights.io/knowledgebase/setup-and-configuration/sealights-agents-and-plugins/abap-agent-2.0/test-tool-integrations/calm.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
