Dawiso Integration Runtime (DIR) reads connection properties, source credentials, and the Dawiso API token from its configuration JSON file. Any string value in that file can contain a ${VARIABLE} placeholder. DIR replaces it with the value of the matching environment variable when it reads the file. The secrets then live wherever DIR runs: as environment variables on the host, in the container, or on the account a scheduled task uses. The configuration file itself can be stored in version control or generated by deployment automation.

Warning

Placeholder substitution requires DIR 2026.3.0 or later. Earlier versions pass ${VARIABLE} to the metadata source as literal text, and the connection fails during authentication.

Placeholder syntax and rules

RuleBehavior
Syntax${VARIABLE} — for example, ${DAWISO_API_TOKEN}
Allowed namesLetters, digits, and underscores. The first character must be a letter or an underscore.
PositionA placeholder can fill a whole value or sit inside a longer string, such as "https://${HOST}/api"
CountOne string can contain several placeholders
Missing variableThe placeholder stays in the value and DIR logs a warning. Validation still passes; authentication fails later.
ActivationAlways active. There is no setting to turn substitution on or off.

Substitution runs every time DIR reads the configuration file, before the file is validated. Case matters on Linux and macOS, where environment variable names are case-sensitive; on Windows they are not.

Supported and unsupported values

Placeholders are resolved in string values at any depth of the configuration. Property names and non-string values are left untouched.

Configuration valuePlaceholder support
ingestionCloud.apiTokenYes
ingestionCloud.urlAddressYes
dataSource.connection.*Yes — passwords, client secrets, tokens, hosts, user names
dataSource.settings.*Yes — string settings only
general.workingFolderYes
general.extractOnlyNo — boolean value
general.retention.*No — numeric values
Any property name (the key itself, not its value)No — only values are substituted

Example configuration

{
  "general": {
    "workingFolder": ".\\WorkingFolder",
    "extractOnly": false
  },
  "ingestionCloud": {
    "urlAddress": "https://your-instance.dawiso.com",
    "apiToken": "${DAWISO_API_TOKEN}"
  },
  "dataSource": {
    "providerKey": "core_sql_server",
    "uuid": "0f5c9b1e-2f57-4a7c-9a4c-0a2f1d3e4b55",
    "format": "full",
    "connection": {
      "server": "${SQL_SERVER_HOST}",
      "databases": "AdventureWorks",
      "userName": "${SQL_SERVER_USER}",
      "password": "${SQL_SERVER_PASSWORD}"
    }
  }
}

Set the environment variables

Set the variables for the account that runs DIR, then start the ingestion as usual.

Windows

Set the variables once for the user account, so that scheduled runs inherit them:

[Environment]::SetEnvironmentVariable("DAWISO_API_TOKEN", "<token>", "User")
[Environment]::SetEnvironmentVariable("SQL_SERVER_PASSWORD", "<password>", "User")

Windows Task Scheduler runs the .bat file under the account you select in the task, and that account’s variables apply.

Warning

Setting the variables with set inside the .bat file puts the secrets back into a plain text file. Set them for the account or inject them from your secret store instead.

Linux and macOS

Export the variables in the shell, systemd service unit, or cron wrapper that starts DIR:

export DAWISO_API_TOKEN="<token>"
export SQL_SERVER_PASSWORD="<password>"
dotnet DawisoIntegrationRuntime.dll -c sql_server_config.json

Docker

Pass the variables to the container with -e, or keep them in a file and pass --env-file:

docker run --rm \
  -e DAWISO_API_TOKEN \
  -e SQL_SERVER_PASSWORD \
  -v "/path/to/sql_server_config.json:/config/sql_server_config.json" \
  -v "/path/to/Data:/App/WorkingFolder" \
  dawisopublic.azurecr.io/di-runtime:latest --config /config/sql_server_config.json

In Kubernetes, store each variable as a key in a Secret, then reference that key from the container’s environment.

Check the log for resolved placeholders

DIR reports every placeholder it finds. A resolved placeholder produces an information entry:

Substituted env var 'DAWISO_API_TOKEN' in config at 'ingestionCloud.apiToken'

A variable that is not set produces a warning, and the value keeps the placeholder text:

Env var 'SQL_SERVER_PASSWORD' referenced in config at 'dataSource.connection.password' not found, leaving placeholder as-is

The log records the variable name and the position in the configuration file. Resolved values are never written to the log.

Limitations

  • A missing variable fails authentication, not validation. The configuration passes validation because the placeholder text is not empty. The run fails later, when DIR authenticates against the metadata source or Dawiso Cloud using the literal placeholder text instead of a real credential. The warning in the log names the variable.
  • Default values are not supported. Syntax such as ${VARIABLE:-fallback} is not recognized.
  • Placeholder text cannot be escaped. A value that contains ${...} is always treated as a placeholder. If a password has that shape, store the whole password in an environment variable and reference it.
  • Only strings are substituted. Numeric and boolean settings, such as extractOnly or the retention values, must be written directly in the file.

Environment variables are readable by the account that runs DIR and by administrators of the host. For an authentication method that stores no secret at all, see Ingestion with Azure Managed Identity.