Application configuration
This page covers the configuration held in the application's own files, as opposed to the repository settings described in System settings. It is read at start-up, so changes require a restart.
Dafne consists of two deployable applications, each configured separately:
- the web application, which serves the GUI and the REST API
- the executor, which plans scenarios and runs tasks
Both use Spring Boot configuration, so any value can also be supplied as an environment variable or command-line argument rather than being written into a file. Profiles select between variants — the container deployment, for instance, takes the database and directory settings from environment variables.
Contents
Web application
Authentication
The login method is chosen by the active profile rather than by a property:
| Active profile | Login method |
|---|---|
entra |
Microsoft Entra |
ldap or ldapad |
LDAP / Active Directory |
| none of the above | Database — accounts held by Dafne |
For the directory methods, the connection is configured under ldap.*: the server URL, the manager DN and password, the DN patterns, the search base and the domain.
Directory groups are mapped onto Dafne roles with ldap.privilegeMapping, which maps a group name to ROLE_USER, ROLE_ADMIN or RERUN. Under a directory method this mapping — not the Users screen — is where authorisation is decided. See Users and roles.
Application options
| Property | Meaning |
|---|---|
dafne.password-encryption-key |
Key used to encrypt passwords stored in the metadata repository. Change this from the shipped default on any real installation, and keep it consistent between the web application and the executor. |
dafne.executor-db-process-name |
The process name by which a running executor is recognised. |
dafne.monitor-view-level |
Whether the Monitor opens at group or task level. |
dafne.default-page |
The page shown after login. Only Dashboard changes the behaviour; anything else shows the Monitor. |
dafne.double-pane-min-width |
Width in pixels at which the Monitor switches between the one-pane and two-pane layout. |
dafne.mobile-enabled |
Whether the mobile view is available. |
dafne.task-history-statistics-days |
How many days of history the task statistics cover. |
dafne.lock-cleaner-delay / dafne.lock-cleaner-max-age |
How often abandoned edit locks are cleaned up, and how old a lock must be to qualify. See Authoring items#Check-out locks. |
dafne.repair-flyway |
Repairs schema-migration checksums at start-up. |
Database and schema
The repository connection is a standard Spring datasource. Schema migrations are applied automatically at start-up.
Session
The GUI session timeout is set under server.servlet.session.timeout.
Executor
The executor's own configuration is grouped under dafne.executor and dafne.notification. Most of it is timing, and the defaults are sensible; the values below are the ones worth knowing about.
Timing
| Property | Controls |
|---|---|
execution-interval |
How often the executor looks for a task to start. |
execution-idle-delay |
How long it waits when there is nothing to do. |
planning-period |
How often scenarios are evaluated for planning. |
cancel-interval |
How often cancel requests are processed. |
shutdown-check-interval |
How often a pending shutdown is re-checked while waiting for running tasks. |
The planning period is the one that shows up operationally: it sets the granularity with which a scenario can trigger, and a scenario cannot react faster than this regardless of its own polling frequency.
Retention and archiving
| Property | Controls |
|---|---|
archiving-interval, archiving-initial-delay |
When archiving runs. The retention period itself is the Archive limit repository setting — see System settings. |
dblog-retention-days and its interval and delay |
How long the database log is kept. |
deleted-items-retention-days and its interval and delay |
How long deleted definitions remain recoverable. |
Execution behaviour
| Property | Controls |
|---|---|
effective-priority-calculation-depth-limit |
How deep priority inheritance is followed through the dependency graph. See Prioritization. |
stalled-task-grace-period |
How long a task may appear stalled before it is treated as such. |
ssh-connection-timeout, ssh-connection-auth-try-count |
SSH connection behaviour. |
db-task.name-prefix, db-task.max-message-count |
Naming of database sessions opened for tasks, and how many messages are retained per run. |
The priority depth limit is worth being aware of on a large model: priority inheritance stops being applied beyond it, so a high-priority task at the end of a very long chain will not lift everything behind it.
Notification
| Property | Meaning |
|---|---|
notification.smtp-server |
SMTP server used for email notifications. |
notification.smtp-from |
Default sender. |
notification.smtp-subject |
Default subject. |
notification.sending-period |
How often queued notifications are sent. |
notification.keep-details, notification.smtp-attachment-filename |
Whether failure detail is attached, and under what filename. |
SMTP configuration lives here, not in the repository settings. On the previous version of the product it was a repository setting, and that is a common source of confusion when configuring email notification for the first time. The per-notification addresses and subject are still set on the notification itself; see edit-notification.
Health checks
Both applications expose a health endpoint for monitoring. The executor additionally runs a small HTTP listener, used primarily for that purpose.
Practical notes
- Keep the encryption key consistent between the web application and the executor, and treat it as a secret. Passwords in the repository are encrypted with it.
- Prefer environment variables to edited files for anything environment-specific — it keeps one artefact deployable everywhere.
- Remember the division of responsibility: Archive limit is a repository setting while the archiving schedule is executor configuration, and both are needed to reason about retention.