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.
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
| Rule | Behavior |
|---|---|
| Syntax | ${VARIABLE} — for example, ${DAWISO_API_TOKEN} |
| Allowed names | Letters, digits, and underscores. The first character must be a letter or an underscore. |
| Position | A placeholder can fill a whole value or sit inside a longer string, such as "https://${HOST}/api" |
| Count | One string can contain several placeholders |
| Missing variable | The placeholder stays in the value and DIR logs a warning. Validation still passes; authentication fails later. |
| Activation | Always 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 value | Placeholder support |
|---|---|
ingestionCloud.apiToken | Yes |
ingestionCloud.urlAddress | Yes |
dataSource.connection.* | Yes — passwords, client secrets, tokens, hosts, user names |
dataSource.settings.* | Yes — string settings only |
general.workingFolder | Yes |
general.extractOnly | No — 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.
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
extractOnlyor 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.