> 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/configuration-settings.md).

# Configuration settings

This section describes the ABAP Agent 2.0 configuration settings, stored in `config.toml`.

**Default location:**

```
%ProgramData%\Tricentis\SeaLights\ABAP Agent\config\config.toml
```

{% hint style="info" %}
Back up the `config.toml` file before you make any changes.
{% endhint %}

The `config.toml` file uses the [TOML](https://toml.io/) format. It is created automatically when you run `slabapcli setup install`. On a default Windows install, secrets (token, passwords) are encrypted at rest using AES, keyed by the `key` and `iv` values written to the `[settings]` section during installation.

**Schema version:** The current schema version is **`4`**. If you have a legacy configuration from an older agent version, run `slabapcli setup migrate` to upgrade it to version 4 automatically. See [Migrate a legacy configuration](/knowledgebase/setup-and-configuration/sealights-agents-and-plugins/abap-agent-2.0/command-line-interface/set-up-the-agent/migrate-a-legacy-configuration.md).

## Live reload and restart-required fields

While `SLABAPServer.exe` is running, the server **lazily reloads** `config.toml` on the **next configuration access** (for example a process API call, a token lookup, an RFC/pipeline/test-repository lookup, or `GET /ready`). Reload is driven by file change detection on that access — it is **not** an idle file-system watcher and is **not** instantaneous while the server is idle.

* **Hot fields** (everything not listed as cold below) apply from the newly loaded file after a successful reload. No server restart is required. Examples include `sealights.token`, `server.logging.defaultLevel`, `server.uploadBatching.*`, and the entire `[[rfc]]`, `[[pipeline]]`, and `[[testrepo]]` trees.
* **Cold fields** stay at the values captured when the server process started until you restart `SLABAPServer.exe`. If a reload finds a cold-field change, hot fields from that edit still apply, but `/ready` returns `503` with `reasonCode: CONFIG_RESTART_REQUIRED` and `changedColdPaths`. Process APIs continue to accept work — this signal means a restart is required to apply the cold values, not that the server has stopped accepting tasks.
* **Mixed edits:** change hot and cold fields in one save → hot values apply; cold values remain at the startup baseline until restart. Reverting cold fields to their startup values clears the restart-required condition.
* **Failed reload:** if the new TOML is invalid or unreadable, the server keeps its last-known-good configuration, logs the reload failure, and retries on a later configuration access. Correct the file and check `/ready` (or another config-using operation). Restart is not the default remedy for a failed reload.
* **In-flight work:** after a hot change to RFC, pipeline, credential, logging, or similar context that an already-running footprint or other scheduled task may already be using, stop and start that **task** as needed (`footprints stop` / `footprints run`, and similar). That is a **task** restart — not a restart of `SLABAPServer.exe`.

### Cold fields (server restart required)

| Path                                                                                              | Notes                                                                         |
| ------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------- |
| `version`                                                                                         | Schema generation; use `slabapcli setup migrate` to change it.                |
| `settings.userdata`, `settings.install`                                                           | Agent path layout.                                                            |
| `settings.key`, `settings.iv`                                                                     | Encryption material. Public `/ready` may show these as `settings.<redacted>`. |
| `server.port`                                                                                     | Listen port (process already bound).                                          |
| `server.retry.maxAttempts`, `initialDelayMs`, `maxDelayMs`, `backoffMultiplier`, `retryOnTimeout` | Internal retry host settings.                                                 |
| `server.seaLightsClient.timeoutSeconds`                                                           | SeaLights HTTP client timeout.                                                |
| `server.uploadClient.timeoutSeconds`                                                              | Upload HTTP client timeout.                                                   |
| `server.uploadRetry.enabled`, `scanIntervalSeconds`, `maxConcurrentUploads`                       | Upload-retry host enablement / scan / concurrency.                            |
| `http.disableSslCheck`                                                                            | TLS verification flag.                                                        |

Each cold field is also marked with **Reload behavior: Restart required** in the reference tables below. That per-field annotation is authoritative; this summary is for scanning.

{% hint style="info" %}
Legitimate server restarts still apply for cold-field changes, upgrades, and other process-lifecycle events. Do **not** restart the server after routine hot changes such as RFC, pipeline, test-repository, token, or secret updates.
{% endhint %}

***

## Configuration file sections

### version

The root key that identifies the configuration schema version. The current supported version is `4`.

```toml
version = 4
```

Do not modify this value manually. Use `slabapcli setup migrate` to upgrade older configurations. The CLI refuses to start with a config version below 4 and prints a migration hint.

**Reload behavior:** Restart required. Migration remains the supported way to change `version`.

***

### \[settings]

Stores the agent's installation paths and encryption keys. This section is written by `slabapcli setup install`.

<table><thead><tr><th width="130">Field</th><th>Description</th><th>Reload behavior</th></tr></thead><tbody><tr><td>install</td><td>Path to the directory that contains the <code>bin</code>, <code>config</code>, and <code>userdata</code> subdirectories. Set by <code>setup install</code> to the current working directory.</td><td>Restart required</td></tr><tr><td>userdata</td><td>Path to the ABAP Agent's user-data directory. Default: <code>C:\ProgramData\Tricentis\SeaLights\ABAP Agent</code>.</td><td>Restart required</td></tr><tr><td>key</td><td>Encryption key used to protect secrets. Written during <code>setup install</code>.</td><td>Restart required</td></tr><tr><td>iv</td><td>Encryption initialisation vector. Written during <code>setup install</code>.</td><td>Restart required</td></tr></tbody></table>

You may modify **userdata** and **install** if you need to relocate the agent directories. Do not modify **key** or **iv** — these values are managed by the encryption subsystem.

***

### \[logging]

Defines the agent's C++ component logging settings.

<table><thead><tr><th width="160">Field</th><th>Description</th></tr></thead><tbody><tr><td>level</td><td>The minimum logging level. Default: <code>info</code>.</td></tr><tr><td>flushinterval</td><td>(Optional) Interval in seconds after which log messages are flushed to disk.</td></tr><tr><td>flushlevel</td><td>(Optional) Log level that triggers an immediate flush. Default: <code>info</code>.</td></tr><tr><td>consolelevel</td><td>(Optional) Minimum level for console output. Default: <code>info</code>.</td></tr><tr><td>retentionperiod</td><td>(Optional) Number of days to retain log files before deletion.</td></tr></tbody></table>

Valid **level** values:

<table><thead><tr><th width="120">Value</th><th>Description</th></tr></thead><tbody><tr><td>trace</td><td>Detailed trace information.</td></tr><tr><td>debug</td><td>Detailed debug information.</td></tr><tr><td>info</td><td>Informational messages (default).</td></tr><tr><td>warning</td><td>Warnings only.</td></tr><tr><td>error</td><td>Errors only.</td></tr><tr><td>critical</td><td>Critical messages only.</td></tr><tr><td>off</td><td>No logging.</td></tr></tbody></table>

**Reload behavior:** Hot for the server configuration snapshot. Already-running watcher / scheduled-task processes that read C++ `[logging].level` at their own start still need a **task** restart to pick up a new level.

***

### \[sealights]

Defines how the agent communicates with the SeaLights platform.

<table><thead><tr><th width="200">Field</th><th>Description</th></tr></thead><tbody><tr><td>token</td><td>The SeaLights bearer token. Encrypted on disk. Set via <code>slabapcli sealights set</code>.</td></tr><tr><td>delaybetweenmods</td><td>(Optional) Seconds between Build Modification uploads. Default: <code>300</code>.</td></tr><tr><td>clientattempts</td><td>(Optional) Number of retry attempts for SeaLights REST API calls. Default: <code>5</code>.</td></tr></tbody></table>

Do not modify the **token** field directly — it is encrypted. Use `slabapcli sealights set` to update the token. You may modify **delaybetweenmods** and **clientattempts** as needed.

**Reload behavior:** Hot — `token`, `delaybetweenmods`, and `clientattempts` apply on the next successful reload without restarting `SLABAPServer.exe`.

{% hint style="info" %}
The `delaybetweenmods` (300) and `clientattempts` (5) values are **runtime defaults applied when the key is omitted** — they are not written into the `config.toml` template that `setup install` generates. Add the keys explicitly only if you need non-default values.
{% endhint %}

{% hint style="info" %}
**Environment variable override:** Set `SL_AGENT_TOKEN` to override the token value at runtime without modifying `config.toml`. The environment variable takes precedence over the `token` field. See [Environment variable overrides](#environment-variable-overrides).
{% endhint %}

***

### \[proxy]

Optional. Defines the HTTP proxy the agent uses to connect to SeaLights. If this section is present, the **server** field is required.

```toml
[proxy]
server   = 'http://proxy.example.com:8080'  # required when [proxy] is present
username = 'user'                            # optional, encrypted
password = 'password'                        # optional, encrypted
```

The agent evaluates proxy settings in the following order of priority:

1. **Environment variables** (highest priority):
   * `SL_PROXY_SERVER` or `SL_PROXY` — proxy server URI
   * `SL_PROXY_USERNAME` — proxy username (optional)
   * `SL_PROXY_PASSWORD` — proxy password (optional)
2. **Configuration file** — the `[proxy]` section in `config.toml`

If neither is configured, the agent connects directly without a proxy.

***

### \[http]

<table><thead><tr><th width="200">Field</th><th>Description</th><th>Reload behavior</th></tr></thead><tbody><tr><td>disableSslCheck</td><td>Disables TLS certificate verification on HTTPS calls. Default: <code>false</code>. Set to <code>true</code> only in trusted internal environments.</td><td>Restart required</td></tr></tbody></table>

***

### \[server]

Controls the ABAP Agent server (`SLABAPServer.exe`). Only the cold fields marked below require a server restart; other `[server]` settings are hot and apply on the next successful reload.

<table><thead><tr><th width="130">Field</th><th>Description</th><th>Reload behavior</th></tr></thead><tbody><tr><td>port</td><td>The TCP port the server listens on. Default: <code>17500</code>. Must match the port used by <code>slabapcli</code> when communicating with the server.</td><td>Restart required</td></tr></tbody></table>

```toml
[server]
port = 17500
```

{% hint style="info" %}
The server always binds to the loopback address `127.0.0.1` (localhost only); the bind host is not configurable. Only the `port` can be changed.
{% endhint %}

#### \[server.retry]

Retry policy for internal server-to-agent calls. All fields in this subsection are cold.

<table><thead><tr><th width="220">Field</th><th>Description</th><th>Reload behavior</th></tr></thead><tbody><tr><td>maxAttempts</td><td>Maximum number of attempts. Default: <code>3</code>.</td><td>Restart required</td></tr><tr><td>initialDelayMs</td><td>Initial retry delay in milliseconds. Default: <code>1000</code>.</td><td>Restart required</td></tr><tr><td>maxDelayMs</td><td>Maximum retry delay in milliseconds. Default: <code>30000</code>.</td><td>Restart required</td></tr><tr><td>backoffMultiplier</td><td>Exponential back-off multiplier. Default: <code>2.0</code>.</td><td>Restart required</td></tr><tr><td>retryOnTimeout</td><td>Whether to retry when a call times out. Default: <code>true</code>.</td><td>Restart required</td></tr></tbody></table>

#### \[server.tokenValidation]

<table><thead><tr><th width="220">Field</th><th>Description</th><th>Reload behavior</th></tr></thead><tbody><tr><td>timeoutSeconds</td><td>Timeout in seconds for token validation requests. Default: <code>10</code>.</td><td>Hot (no server restart)</td></tr></tbody></table>

#### \[server.logging]

<table><thead><tr><th width="220">Field</th><th>Description</th><th>Reload behavior</th></tr></thead><tbody><tr><td>defaultLevel</td><td>Minimum log level for the server (.NET component). Default: <code>info</code>.</td><td>Hot (no server restart)</td></tr></tbody></table>

#### \[server.seaLightsClient]

<table><thead><tr><th width="220">Field</th><th>Description</th><th>Reload behavior</th></tr></thead><tbody><tr><td>timeoutSeconds</td><td>HTTP timeout in seconds for the SeaLights API client. Default: <code>100</code>.</td><td>Restart required</td></tr></tbody></table>

#### \[server.uploadClient]

<table><thead><tr><th width="220">Field</th><th>Description</th><th>Reload behavior</th></tr></thead><tbody><tr><td>timeoutSeconds</td><td>HTTP timeout in seconds for upload (presigned URL) requests. Default: <code>600</code>.</td><td>Restart required</td></tr></tbody></table>

#### \[server.uploadRetry]

Background retry of failed test-repository uploads. Cold fields control host enablement, scan interval, and concurrency; the backoff / attempt policy fields are hot.

<table><thead><tr><th width="220">Field</th><th>Description</th><th>Reload behavior</th></tr></thead><tbody><tr><td>enabled</td><td>Whether the background upload-retry service runs. Default: <code>true</code>.</td><td>Restart required</td></tr><tr><td>scanIntervalSeconds</td><td>How often the service scans for failed uploads, in seconds. Default: <code>60</code>.</td><td>Restart required</td></tr><tr><td>maxConcurrentUploads</td><td>Maximum concurrent retry uploads. Default: <code>4</code>.</td><td>Restart required</td></tr><tr><td>minBackoffSeconds</td><td>Minimum backoff between retries for a row, in seconds. Default: <code>30</code>.</td><td>Hot (no server restart)</td></tr><tr><td>maxBackoffSeconds</td><td>Maximum backoff between retries for a row, in seconds. Default: <code>1800</code>.</td><td>Hot (no server restart)</td></tr><tr><td>backoffMultiplier</td><td>Exponential back-off multiplier for per-row retries. Default: <code>2.0</code>.</td><td>Hot (no server restart)</td></tr><tr><td>maxAttempts</td><td>Maximum retry attempts per failed upload. <code>0</code> means unlimited. Default: <code>0</code>.</td><td>Hot (no server restart)</td></tr></tbody></table>

#### \[server.uploadBatching]

<table><thead><tr><th width="220">Field</th><th>Description</th><th>Reload behavior</th></tr></thead><tbody><tr><td>maxGzipBytesPerBatch</td><td>Hard cap on compressed SeaLights upload batch body size in bytes. Default: <code>94371840</code> (90 MiB).</td><td>Hot (no server restart)</td></tr></tbody></table>

***

### \[adapters]

Global settings for the adapter host (`SLABAPAdapterHost.exe`). These apply to all AdapterHost-backed `[[testrepo]]` types: `ado`, `tosca`, `toscacloud`, `excel`, `xray`, `qtest`, `certify`, `ssm`, and `alm` (OpenText ALM). Per-type connection keys live under `[[testrepo]]` — see [Configure test repositories](/knowledgebase/setup-and-configuration/sealights-agents-and-plugins/abap-agent-2.0/command-line-interface/configure-test-repositories.md).

<table><thead><tr><th width="270">Field</th><th>Description</th></tr></thead><tbody><tr><td>proxyAddress</td><td>Proxy server URI used by adapters. Empty = no proxy.</td></tr><tr><td>proxyUsername</td><td>Proxy username for adapter connections. Optional, encrypted on disk on a secure install.</td></tr><tr><td>proxyPassword</td><td>Proxy password for adapter connections. Optional, encrypted on disk on a secure install.</td></tr><tr><td>proxyDomain</td><td>Proxy domain for adapter connections. Optional, encrypted on disk on a secure install.</td></tr><tr><td>restClientTimeoutSeconds</td><td>HTTP client timeout for adapter REST calls in seconds. Default: <code>600</code>.</td></tr><tr><td>restClientRecycleThreshold</td><td>Number of requests after which the HTTP client is recycled. Default: <code>500</code>.</td></tr><tr><td>logLevel</td><td>Minimum log level for adapter processes. Default: <code>info</code>.</td></tr></tbody></table>

#### \[adapters.tosca]

<table><thead><tr><th width="270">Field</th><th>Description</th></tr></thead><tbody><tr><td>scanTestCases</td><td>Whether to scan individual test cases during the search. Default: <code>false</code>.</td></tr><tr><td>findSAPModules</td><td>Whether to search SAP module test cases. Default: <code>true</code>.</td></tr><tr><td>findUI5Modules</td><td>Whether to search UI5 module test cases. Default: <code>true</code>.</td></tr><tr><td>ui5ModuleNames</td><td>Array of UI5 module names to include. Default: empty (all).</td></tr><tr><td>reusableTestStepBlocksDepth</td><td>Depth for traversing reusable test step blocks. Default: <code>1</code>.</td></tr></tbody></table>

#### \[adapters.toscacloud]

<table><thead><tr><th width="270">Field</th><th>Description</th></tr></thead><tbody><tr><td>testCasesPageSize</td><td>Page size for paginated test case queries. Default: <code>1000</code>.</td></tr><tr><td>minimumSearchTermLength</td><td>Minimum length of a search term before it is sent to the adapter. Default: <code>0</code>.</td></tr></tbody></table>

#### \[adapters.excel]

<table><thead><tr><th width="270">Field</th><th>Description</th></tr></thead><tbody><tr><td>minimumSearchTermLength</td><td>Minimum length of a search term. Default: <code>0</code>.</td></tr></tbody></table>

#### \[adapters.xray]

<table><thead><tr><th width="270">Field</th><th>Description</th></tr></thead><tbody><tr><td>minimumSearchTermLength</td><td>Minimum length of a search term. Default: <code>0</code>.</td></tr></tbody></table>

#### \[adapters.qtest]

<table><thead><tr><th width="270">Field</th><th>Description</th></tr></thead><tbody><tr><td>testCasesPageSize</td><td>Page size for paginated test case queries. Default: <code>1000</code>.</td></tr><tr><td>userAgent</td><td>User-Agent string sent in HTTP headers. Default: <code>Sealights</code>.</td></tr><tr><td>minimumSearchTermLength</td><td>Minimum length of a search term. Default: <code>0</code>.</td></tr></tbody></table>

***

### \[rfcdata.prd]

Defines how the agent retrieves usage data from each PRD (Production) system.

<table><thead><tr><th width="200">Field</th><th>Description</th></tr></thead><tbody><tr><td>retentionperiod</td><td>Number of months of usage data the agent retains per PRD system. Default: <code>13</code>.</td></tr><tr><td>typequeries</td><td>Array of <code>{ type, query }</code> filter entries that exclude matching SCMON context objects from PRD data collection. See the default config for the pre-populated exclusion list.</td></tr></tbody></table>

You may modify **retentionperiod** as required. Do not modify **typequeries** unless Tricentis Support asks you to.

***

### \[rfcdata.qas]

Defines how the agent retrieves SCMON data from each QAS (Quality Assurance) system.

<table><thead><tr><th width="200">Field</th><th>Description</th></tr></thead><tbody><tr><td>retentionperiod</td><td>Number of months of SCMON data the agent retains per QAS system. Default: <code>1</code>.</td></tr><tr><td>tables</td><td>Array of SAP table names from which SCMON data is read. Default: <code>['SCMON_VDATA']</code>.</td></tr></tbody></table>

You may modify **retentionperiod** as required. Do not modify **tables** unless Tricentis Support asks you to.

***

### \[rfcdata.phd]

Defines how the agent parses Performance History Data (PHD) exported from SAP transaction ST03.

<table><thead><tr><th width="260">Field</th><th>Description</th></tr></thead><tbody><tr><td>separators</td><td>Field separator characters expected in PHD export files. Default: <code>[",", "|", "\t"]</code>.</td></tr><tr><td>mnemonicfieldtokens</td><td>Column header tokens that identify the "mnemonic" (program/transaction name) column across different SAP locales.</td></tr><tr><td>stepsfieldtokens</td><td>Column header tokens that identify the "steps/calls" column across different SAP locales.</td></tr><tr><td>descriptionfieldtokens</td><td>Column header tokens that identify the "description" column across different SAP locales.</td></tr></tbody></table>

Do not modify these fields unless Tricentis Support asks you to.

***

### \[componentstoignore]

Optional. Specifies SAP software components (delivery units, `DLVUNIT` values) to exclude when building the initial build map. Objects belonging to listed components are filtered out during `buildmap run`.

{% code title="Example" overflow="wrap" %}

```toml
[componentstoignore]
components = ["SAP_BASIS", "SAP_UI", "SAP_GWFND", "PERSONAS"]
```

{% endcode %}

| Field        | Description                                                                        |
| ------------ | ---------------------------------------------------------------------------------- |
| `components` | Array of SAP delivery-unit names (`DLVUNIT` values) to exclude from the build map. |

{% hint style="info" %}
**Default exclusion list:** If this section is omitted or `components` is empty, the agent uses the defaults set during `setup install`: `SAP_BASIS`, `SAP_UI`, `SAP_GWFND`, and `PERSONAS`. To exclude all components from filtering (include all objects), set `components` to an explicit empty array `[]`.
{% endhint %}

See also: [Create an initial build map](/knowledgebase/setup-and-configuration/sealights-agents-and-plugins/abap-agent-2.0/command-line-interface/create-an-initial-build-map-for-your-pipeline.md).

***

### \[footprints]

Defines how the agent processes Footprints data collected from Tosca test executions.

<table><thead><tr><th width="280">Field</th><th>Description</th></tr></thead><tbody><tr><td>testexecutionqueryingfreq</td><td>Frequency in seconds at which the agent queries the test repository for new test executions. Default: <code>5</code>.</td></tr><tr><td>scmonrecollectionfreqmins</td><td>(Optional) How often in minutes the agent re-collects SCMON baseline data. Uses the agent default when not set.</td></tr><tr><td>labid</td><td>(Optional) The lab ID for which to process Footprints data. Usually set automatically.</td></tr><tr><td>typequeries</td><td>Array of <code>{ type, query }</code> entries that exclude SCMON context objects from footprints collection. See <strong>Footprints type queries</strong> below.</td></tr><tr><td>readstartdate</td><td>Deprecated — retained for backward compatibility. Ignored by the agent.</td></tr><tr><td>readstarttime</td><td>Deprecated — retained for backward compatibility. Ignored by the agent.</td></tr><tr><td>readtime</td><td>Deprecated — retained for backward compatibility. Ignored by the agent.</td></tr></tbody></table>

You may modify **testexecutionqueryingfreq**, **scmonrecollectionfreqmins**, and **typequeries** as required.

#### Footprints type queries

The `typequeries` field lets you exclude specific SCMON context objects from footprints collection based on object type and name pattern. Each entry has a `type` and a `query` (glob pattern):

{% code title="Example" overflow="wrap" %}

```toml
[footprints]
typequeries = [
  { type = "PROG", query = "SAPL*" },
  { type = "TCOD", query = "SE*" },
  { type = "ALL",  query = "/SAP/*" },
]
```

{% endcode %}

| Type   | Matches              |
| ------ | -------------------- |
| `ALL`  | Any object type      |
| `PROG` | Programs             |
| `TCOD` | Transaction codes    |
| `FUNC` | RFC function modules |
| `ODAT` | OData services       |

Pattern syntax: `*` matches any sequence of characters, `?` matches a single character. Matching is case-insensitive.

{% hint style="info" %}
If `typequeries` is empty or not set, no objects are excluded. The agent auto-migrates older configs to include an empty `typequeries` array.
{% endhint %}

See also: [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).

***

### \[\[rfc]]

Array table. Each `[[rfc]]` section stores the connection details for one RFC Destination. RFC Destinations are created and managed with `slabapcli rfc set`.

<table><thead><tr><th width="160">Field</th><th>Description</th></tr></thead><tbody><tr><td>name</td><td>The name of the RFC Destination. Used as the identifier in <code>[[pipeline]]</code> entries.</td></tr><tr><td>hostname</td><td>The SAP server hostname or IP address.</td></tr><tr><td>sysnr</td><td>The SAP system number (two-digit string, e.g. <code>"00"</code>).</td></tr><tr><td>client</td><td>The SAP client number (three-digit string, e.g. <code>"100"</code>).</td></tr><tr><td>language</td><td>The SAP logon language (e.g. <code>"EN"</code>).</td></tr><tr><td>username</td><td>The SLUSER account name. Encrypted on disk.</td></tr><tr><td>password</td><td>The SLUSER account password. Encrypted on disk.</td></tr><tr><td>router</td><td>(Optional) SAP router string for the connection.</td></tr><tr><td>cachedusage</td><td>Whether usage data is cached for this RFC Destination. Managed by <code>rfc set</code>.</td></tr><tr><td>cachedprdrfc</td><td>Effective PRD RFC name used when <code>cachedusage</code> is <code>true</code>. Added automatically in schema version 4. Do not edit manually.</td></tr><tr><td>maxretries</td><td>(Optional) Maximum number of RFC connection retries.</td></tr><tr><td>retrieswait</td><td>(Optional) Seconds to wait between RFC connection retries.</td></tr></tbody></table>

You may rename an RFC Destination by modifying its **name** field. If you do, also update the matching references in all `[[pipeline]]` sections.

Do not modify the **username**, **password**, or **cachedprdrfc** fields directly. These values are managed by the CLI.

{% hint style="info" %}
**Reload behavior:** `[[rfc]]` is hot — no server restart is required after a successful reload. You do not need to rerun `buildmap` or `buildmods`. If an active `footprints` (or other scheduled) task may already be using the old connection context, stop and start that **task** as needed (`footprints stop` followed by `footprints run`).
{% endhint %}

***

### \[\[pipeline]]

Array table. Each `[[pipeline]]` section stores the configuration for one Pipeline. Pipelines are created and managed with `slabapcli pipeline set`.

<table><thead><tr><th width="160">Field</th><th>Description</th></tr></thead><tbody><tr><td>appname</td><td>The SeaLights application name associated with this pipeline. Set by <code>pipeline set --appname</code>.</td></tr><tr><td>name</td><td>The pipeline identifier used by <code>buildmap</code>, <code>buildmods</code>, <code>footprints</code>, and <code>testrepo</code> commands. Auto-generated as <code>&#x3C;appname>-&#x3C;qas></code> if not set explicitly via <code>--name</code>.</td></tr><tr><td>qas</td><td>The QAS RFC Destination name for this pipeline. Mutually exclusive with <code>dev</code>.</td></tr><tr><td>dev</td><td>(Alternative to <code>qas</code>) The DEV RFC Destination name when the source system is a DEV system. Mutually exclusive with <code>qas</code>.</td></tr><tr><td>prd</td><td>The PRD RFC Destination name for this pipeline.</td></tr><tr><td>labid</td><td>The SeaLights lab ID for this pipeline. Leave unset so the agent derives it as <code>&#x3C;QAS SID> &#x3C;QAS hostname></code> (matches the QAS branch name). Do not override casually.</td></tr><tr><td>disablesetref</td><td>(Optional) Boolean. When <code>true</code>, disables the set-ref step for this pipeline. Managed by CLI only — do not edit directly.</td></tr></tbody></table>

{% hint style="warning" %}
**Leave `--labid` unset** when you create a pipeline. The agent derives the lab ID automatically so it matches the QAS **branch name**: `"<SID> <ashost>"` (for example, `S21 vwsvtstsap13.tricentis.com`).

Overriding `--labid` casually breaks **Test Cycles** in SeaLights.
{% endhint %}

The auto-derived lab ID is what SeaLights uses for Test Cycles and Footprints. Only override `--labid` when you deliberately need a different lab ID and understand the Test Cycle impact.

{% hint style="info" %}
**Reload behavior:** `[[pipeline]]` is hot — no server restart is required after a successful reload. You do not need to rerun `buildmap` or `buildmods`. If an active `footprints` (or other scheduled) task may already be using the old pipeline/RFC context, stop and start that **task** as needed.
{% endhint %}

***

### \[\[testrepo]]

Array table. Each `[[testrepo]]` section stores the configuration for one test repository adapter. Test repositories are created and managed with `slabapcli testrepo set`.

<table><thead><tr><th width="160">Field</th><th>Description</th></tr></thead><tbody><tr><td>name</td><td>Unique name for this test repository entry.</td></tr><tr><td>type</td><td>Adapter type: <code>ado</code>, <code>tosca</code>, <code>toscacloud</code>, <code>excel</code>, <code>xray</code>, <code>qtest</code>, <code>certify</code>, <code>ssm</code>, or <code>alm</code> (OpenText ALM).</td></tr><tr><td>pipeline</td><td>The pipeline name this test repository is linked to.</td></tr><tr><td>searchpaths</td><td>(Optional) Array of repository or filesystem paths to scope the adapter search. Stored as a sibling key directly under <code>[[testrepo]]</code>, not in <code>[testrepo.settings]</code>.</td></tr><tr><td>teststage</td><td>(Optional) SeaLights test stage used when the agent uploads results for this test repository (unless a REST upload override supplies a stage). Top-level sibling of <code>searchpaths</code> — not a <code>[testrepo.settings]</code> key and not a CLI <code>--setting</code>. Direct TOML edits use <code>teststage</code>; the CLI flag is <code>--test-stage</code>. When omitted, the effective default is <code>"{type} Tests"</code> (for example <code>qtest Tests</code> or <code>ado Tests</code>).</td></tr></tbody></table>

Adapter-specific connection settings are stored in the `[testrepo.settings]` subtable. The keys depend on the adapter type — 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 full per-adapter key reference, and the matching [Test Tool Integrations](/knowledgebase/setup-and-configuration/sealights-agents-and-plugins/abap-agent-2.0/test-tool-integrations.md) page for type-specific examples.

{% code title="Example \[\[testrepo]] shape" overflow="wrap" %}

```toml
[[testrepo]]
  name = 'ALM_Demo-qtest'
  type = 'qtest'
  pipeline = 'ALM_Demo-S21'
  teststage = 'Regression Tests'

[testrepo.settings]
  url = 'https://mycompany.qtestnet.com'
  project = 'MyProject'
```

{% endcode %}

#### Config-only editing paths for `[[testrepo]]`

{% hint style="warning" %}
**`testrepo set` replaces settings on every call.** Running `slabapcli testrepo set` replaces the **entire** `[testrepo.settings]` block, `searchpaths`, and `teststage` on every invocation. Any key you omit is cleared — omitting `--test-stage` clears a previously stored `teststage`.

To make a partial change without re-entering all settings, edit `config.toml` directly. `[[testrepo]]` is hot — the next server configuration access uses the valid saved configuration without restarting `SLABAPServer.exe`. Optionally confirm readiness with `GET /ready` or re-run `testrepo test`.
{% endhint %}

Two categories of testrepo parameters can **only** be set by editing `config.toml` directly:

1. **Secrets** — credential fields are never accepted via `--setting`. They are entered interactively during `testrepo set` (input is hidden). To change a secret without re-running the full command, use the interactive `set` commands, or edit the field directly in `config.toml` when it is stored as plaintext (`key` and `iv` in `[settings]` are empty). No server restart is required after a successful reload; if a scheduled task may already hold the prior credentials, stop and start that **task** as needed.

   | Adapter      | Secret fields                                                                         |
   | ------------ | ------------------------------------------------------------------------------------- |
   | `qtest`      | `username`, `password`                                                                |
   | `tosca`      | `username` + `password` **or** `apikey` + `apisecret`                                 |
   | `toscacloud` | `clientId`, `clientSecret`                                                            |
   | `excel`      | *(none)*                                                                              |
   | `xray`       | *(none)*                                                                              |
   | `ado`        | `password` (Azure DevOps Personal Access Token)                                       |
   | `certify`    | `username`, `password` (optional — leave blank for Windows Integrated Authentication) |
   | `ssm`        | `username`, `password`                                                                |
   | `alm`        | `username` + `password` **or** `apikey` + `apisecret` (OpenText ALM)                  |
2. **Partial updates to optional fields** — because `testrepo set` replaces the whole settings block, editing an optional key (e.g. `workstates`, `bufferPatterns`, `confidenceThreshold`) without re-supplying all other keys requires a direct `config.toml` edit. The change applies on the next successful reload; no server restart is required.

***

## Environment variable overrides

The following environment variables override the corresponding `config.toml` settings at runtime. They do not modify the file on disk.

| Variable                        | Overrides           | Notes                                                                                                                                  |
| ------------------------------- | ------------------- | -------------------------------------------------------------------------------------------------------------------------------------- |
| `SL_ABAP_SERVER_CONFIG_PATH`    | Config file path    | Server (`SLABAPServer.exe`) resolution order: this env var → `%ProgramData%\…\config\config.toml` → `{exe}\..\config` → ancestor walk. |
| `SL_AGENT_TOKEN`                | `[sealights].token` | Server only. Takes precedence over the encrypted token in `config.toml`.                                                               |
| `SL_PROXY_SERVER` or `SL_PROXY` | `[proxy].server`    | C++ CLI and watcher. Takes precedence over the `[proxy]` section.                                                                      |
| `SL_PROXY_USERNAME`             | `[proxy].username`  | C++ CLI and watcher.                                                                                                                   |
| `SL_PROXY_PASSWORD`             | `[proxy].password`  | C++ CLI and watcher.                                                                                                                   |

***

## Database locations

All agent databases and artifacts are stored under the `userdata` directory (default: `%ProgramData%\Tricentis\SeaLights\ABAP Agent`). This is a change from ABAP Agent 1.x, where databases lived in the install directory.

The directory has two subtrees:

* `private\` — SQLite databases and generated artifacts (agent-internal; encrypted where applicable)
* `public\` — Logs and shared output

### Database path reference

The following table lists every database file managed by the agent. All paths are relative to the `userdata` root.

| Database                  | Path                                                                         | Created by                | Code source                        |
| ------------------------- | ---------------------------------------------------------------------------- | ------------------------- | ---------------------------------- |
| Process state             | `private\Processes.db`                                                       | Server startup            | `ProcessDatabaseOptions.cs`        |
| SAP tables cache          | `private\SapTables\{rfc}\tables_cache.db`                                    | `buildmap run`            | `pathResolver.cpp`                 |
| Common pipeline data      | `private\common\{pipeline}\common.db`                                        | `buildmap run`            | `pathResolver.cpp`                 |
| Links (impacted set)      | `private\Links\{rfc}\{pipeline}\{run}\links.db`                              | Server (link computation) | `pathResolver.cpp`                 |
| Impacted graph            | `private\Graph\{rfc}\{pipeline}\{run}\impacted_graph.db`                     | Server (upload)           | `pathResolver.cpp`                 |
| Build modifications       | `private\BuildModifications\{rfc}\{pipeline}\{run}\discovered_transports.db` | `buildmods run`           | `pathResolver.cpp`                 |
| Build map                 | `private\BuildMapping\{pipeline}\data.db`                                    | `buildmap run`            | `dbStrings.h` (`BUILDMAPPING_DIR`) |
| Performance history (PHD) | `private\PerfHist\{RFC}_PHD.db`                                              | `rfc phd`                 | `pathResolver.cpp`                 |
| FLPCA data                | `private\flpca\{rfc-lowercase}.db`                                           | `upload_flpca import`     | `FlpcaDatabaseOptions.cs`          |

**Path variable key:**

| Placeholder       | Value                                                                                    |
| ----------------- | ---------------------------------------------------------------------------------------- |
| `{rfc}`           | RFC Destination name (as configured in `[[rfc]].name`; case as stored)                   |
| `{rfc-lowercase}` | RFC Destination name lowercased (e.g. `S21` → `s21`)                                     |
| `{RFC}`           | RFC Destination name uppercased as used by the PHD naming convention (e.g. `S21_PHD.db`) |
| `{pipeline}`      | Pipeline effective name (as stored in `[[pipeline]].name`)                               |
| `{run}`           | Run identifier (timestamp-based, generated per execution)                                |

{% hint style="info" %}
When `key` and `iv` in `[settings]` are empty, `config.toml` and the SQLite databases are stored without encryption at rest, so their contents can be inspected directly for troubleshooting.
{% endhint %}

### Log locations

Most agent logs are written under the `public\` subtree of the userdata directory (default: `%ProgramData%\Tricentis\SeaLights\ABAP Agent`). For server-backed failures (Initial Build Map, Refresh Links, test-repository search/test, and similar), start with the **server per-task** folders below. The CLI itself does not write a log file — it logs to the console only. Symptom → log guidance: [Troubleshooting — Server task logs](/knowledgebase/setup-and-configuration/sealights-agents-and-plugins/abap-agent-2.0/troubleshooting-the-abap-agent.md#server-task-logs).

| Component                                            | Log location                                                                                                                                                                |
| ---------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Server per-task log                                  | `public\logs\{taskType}\{yyyy-MM-dd}\{processId}\{processId}.log`                                                                                                           |
| Native CAPI agent (per server task)                  | Same task folder: `agent.log`                                                                                                                                               |
| Adapter host (`SLABAPAdapterHost.exe`)               | Same task folder: `{processId}_adapter.log`                                                                                                                                 |
| Server (`SLABAPServer.exe`) daily host log           | `public\logs\server-YYYYMMDD.log` (Serilog daily roll)                                                                                                                      |
| Pipeline watcher actions (summaries / watcher-local) | `public\Logs\{pipeline}\InitialBuildMapping_YYYY-MM-DD.log`, `BuildMods_YYYY-MM-DD.log`, `RefreshLinks_YYYY-MM-DD.log`, `Footprints_YYYY-MM-DD.log` (spdlog daily rotation) |
| Watcher bootstrap (`main_logger`)                    | `%ProgramData%\Tricentis\SeaLights\ABAP Agent\public\Logs\watcher\main_logger_<timestamp>_<pid>.log` (always ProgramData)                                                   |
| Log purger (`purgeLogs.exe`)                         | `public\Logs\purger_YYYY-MM-DD.log`                                                                                                                                         |
| CLI (`slabapcli.exe`)                                | Console only (stdout/stderr); no log file                                                                                                                                   |

{% hint style="info" %}
C++ components use capital `Logs`; the .NET server and AdapterHost use lowercase `logs`. On Windows these resolve to the same folder. Relocating `[settings].userdata` moves userdata-relative logs; the watcher bootstrap logger stays under ProgramData.
{% endhint %}

#### Per-task log layout

When the server runs a background task (initial build map stages, test-repository search/test, and similar), it creates a dedicated folder and log file:

```
public\logs\{taskType}\{yyyy-MM-dd}\{processId}\{processId}.log
```

* **`{taskType}`** — Task kind (see tables below).
* **`{yyyy-MM-dd}`** — UTC date when the task log directory was created.
* **`{processId}`** — Unique ID for that server process/run (see below).

Native CAPI work for that task also writes `agent.log` in the same folder. For adapter work (test-repository search or connection test), `SLABAPAdapterHost.exe` writes a sibling file:

```
public\logs\{taskType}\{yyyy-MM-dd}\{processId}\{processId}_adapter.log
```

| File                      | Written by                             | Controlled by                   |
| ------------------------- | -------------------------------------- | ------------------------------- |
| `{processId}.log`         | Server (`SLABAPServer.exe`)            | `[server.logging].defaultLevel` |
| `agent.log`               | Native CAPI (`slabap.agent.dll`)       | `[logging]`                     |
| `{processId}_adapter.log` | Adapter host (`SLABAPAdapterHost.exe`) | `[adapters].logLevel`           |

These levels are independent. Raise `[adapters].logLevel` when diagnosing Tosca/qTest/Excel (and other adapter) connectivity; raise `[server.logging].defaultLevel` when diagnosing server orchestration; use `[logging]` for watcher and native CAPI verbosity.

#### What `processId` is

`processId` is the server's identifier for one task run — a short opaque string (typically 12 hexadecimal characters) assigned when the process starts. It is **not** the Windows OS process ID (PID).

Use it to open the correct per-task folder under `public\logs\`. Ways to find it:

1. **Server daily log** — `public\logs\server-YYYYMMDD.log` lines for the task include the `processId`.
2. **Folder name** — Under `public\logs\{taskType}\{yyyy-MM-dd}\`, each subdirectory name is a `processId`.
3. **Task / CLI output** — Watcher and CLI output for server-backed work (build map stages, `testrepo test`, `search_testrepo`, and similar) surface the `processId` when the server starts or reports the process.
4. **Inside the log lines** — Server task logs include `[ProcessId]` in each line; the adapter log also logs `processId` at startup.

#### Initial build map (`taskType` folders)

An initial build map runs as six server stages orchestrated by the watcher. Each stage has its own `taskType` directory under `public\logs\`:

| Stage order | `taskType` folder   |
| ----------- | ------------------- |
| 1           | `generate_cache`    |
| 2           | `sync_phd`          |
| 3           | `generate_common`   |
| 4           | `generate_links`    |
| 5           | `generate_graph`    |
| 6           | `generate_buildmap` |

For what each stage does and how long IBM can take, see [Create an Initial Build Map for your Pipeline](/knowledgebase/setup-and-configuration/sealights-agents-and-plugins/abap-agent-2.0/command-line-interface/create-an-initial-build-map-for-your-pipeline.md). The watcher also writes a pipeline-level daily log at `public\Logs\{pipeline}\InitialBuildMapping_YYYY-MM-DD.log`.

`REFRESH_LINKS` reuses four of these `taskType` folders — `generate_cache`, `sync_phd`, `generate_links`, and `generate_graph` — and writes a pipeline-level daily log at `public\Logs\{pipeline}\RefreshLinks_YYYY-MM-DD.log`. See [Refresh links and impacted graph](/knowledgebase/setup-and-configuration/sealights-agents-and-plugins/abap-agent-2.0/command-line-interface/refresh-links.md).

Scheduled **Build Modifications** and **Footprints** are watcher-local: they write only the pipeline daily logs (`BuildMods_YYYY-MM-DD.log`, `Footprints_YYYY-MM-DD.log`) and do not create server `taskType` folders.

#### Adapter-related `taskType` folders

| `taskType`        | Typical trigger                                                                      |
| ----------------- | ------------------------------------------------------------------------------------ |
| `search_testrepo` | Test-repository search (recommended tests / coverage capture flows)                  |
| `test_testrepo`   | `slabapcli testrepo test` (and auto-test after `testrepo set` when the server is up) |

Both produce `{processId}.log` (server) and, when the adapter host runs, `{processId}_adapter.log` in the same folder.


---

# 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/configuration-settings.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.
