Configuration

OKMFlow is configured through the $TOMCAT_HOME/okmflow.properties file. Any property not present there falls back to the default value bundled in the application. This page documents the properties an administrator may need to change; properties not listed here are internal Spring Boot wiring and should be left untouched.

Database connection

PropertyDefaultDescription

spring.datasource.driver-class-name

org.mariadb.jdbc.Driver

JDBC driver class. Change it together with the URL when using a database engine other than MariaDB (see the Installation guide for MySQL, PostgreSQL, SQL Server and Oracle examples).

spring.datasource.url

jdbc:mariadb://localhost:3306/okmflow?...

JDBC connection URL, including host, port and database name.

spring.datasource.username

openkm

Database user.

spring.datasource.password

openkm

Database password.

Schema management

PropertyDefaultDescription

spring.jpa.hibernate.ddl-auto

validate

Must stay set to validate. Since v1.8, Flyway is the only mechanism allowed to change the database schema; Hibernate only checks that the entities match it.

spring.jpa.properties.hibernate.dialect

org.hibernate.dialect.MariaDBDialect

Hibernate SQL dialect, must match the configured database engine.

spring.flyway.enabled

true

Enables Flyway schema migrations on startup. Should not be disabled.

spring.flyway.baseline-on-migrate / spring.flyway.baseline-version: only needed once, temporarily, when bringing a pre-Flyway installation under Flyway control. See the Migration from v1.7 to v1.8 guide.

OpenKM integration

PropertyDefaultDescription

openkm.rest.url

http://localhost:8080/openkm

Base URL of the OpenKM instance OKMFlow connects to via web services/REST.

openkm.rest.user

okmAdmin

OpenKM user that OKMFlow logs in as to read/write documents, notify users, etc. Needs administrator privileges on the OpenKM side.

openkm.rest.password

admin

Password for openkm.rest.user.

openkm.rest.token.expiration

365

Minutes the OpenKM session token obtained on login stays valid. OKMFlow caches the token and only logs in again once it expires; lowering this forces more frequent re-authentication.

Server

PropertyDefaultDescription

server.port

8180

TCP port the embedded Tomcat listens on.

server.servlet.context-path

/workflow

Base path of the web application and its REST API. Changing it changes every URL, including the one configured in OpenKM as workflow.adapter.url.

Process execution pool

Process instances run asynchronously on a dedicated thread pool.

PropertyDefaultDescription

core.pool.size

5

Number of threads the pool keeps alive at all times to execute process instances.

max.pool.size

10

Maximum number of threads the pool can grow to once the queue below is full.

queue.capacity

25

Number of pending executions the pool queues before growing past core.pool.size. If the queue is full and the pool is already at max.pool.size, the task runs on the calling thread instead of being rejected.

PropertyDefaultDescription

max.search.results

500

Maximum number of rows returned by the process/task search panel. Raising it allows more results per search at the cost of more memory and slower responses.

Scheduled tasks

PropertyDefaultDescription

scheduled.actions.rate

PT60S

How often (ISO-8601 duration) OKMFlow checks running/waiting process instances for scheduled node actions (timers) that are due. Lowering it makes timers more reactive at the cost of more database load.

pending.task.instances.rate

PT60S

How often (ISO-8601 duration) OKMFlow scans pending task instances for overdue dates and triggers the overdue notification.

Mail notifications

PropertyDefaultDescription

task.notification.subject

New task assigned: ...

Subject of the e-mail sent when a task is assigned to a user. Supports FreeMarker placeholders such as ${taskInstance.taskNodeName}.

task.notification.overdue.subject

Overdue task: ...

Subject of the e-mail sent when an assigned task becomes overdue.

task.notification.body

classpath:tpl/task-assignment-body.html

Location of the HTML template used as the task assignment e-mail body. Point it to file:/path/to/custom.html to use a custom template without rebuilding the application.

task.notification.overdue.body

classpath:tpl/task-overdue-body.html

Location of the HTML template used as the overdue task e-mail body. Same file: override as above.

See the Migration from v1.8 to v1.9 guide if you are upgrading an installation that customized task.notification.body with inline text.

Grouped notifications

PropertyDefaultDescription

grouped.notifications.enabled

false

Enables grouping task notifications per recipient and sending them in a single daily e-mail instead of one e-mail per task.

grouped.notifications.cron

0 0 0 * * *

Cron expression controlling when accumulated notifications are grouped and sent.

Purge jobs

These jobs delete old audit/history data so the database does not grow indefinitely. All are disabled by default.

PropertyDefaultDescription

Process instance purge: deletes ended process instances (and their task instances, variables and logs) older than the retention period. Running, waiting, paused and error instances are never touched.

process.instance.purge.enabled

false

Enables the job.

process.instance.purge.cron

0 0 3 * * *

Cron expression controlling when it runs.

process.instance.purge.retention.days

90

Number of days an ended process instance is kept before being deleted.

Process instance log purge: deletes rows from the process instance audit log older than the retention period.

process.instance.log.purge.enabled

false

Enables the job.

process.instance.log.purge.cron

0 0 2 * * *

Cron expression controlling when it runs.

process.instance.log.purge.retention.days

90

Number of days an audit log row is kept before being deleted.

Variable log purge: deletes rows from the workflow variable change audit log older than the retention period.

variable.log.purge.enabled

false

Enables the job.

variable.log.purge.cron

0 0 2 * * *

Cron expression controlling when it runs.

variable.log.purge.retention.days

90

Number of days an audit log row is kept before being deleted.

Logging

PropertyDefaultDescription

logging.file.name

${catalina.home}/logs/okmflow.log

Path to the application log file. Check it first when troubleshooting.

Properties not listed on this page (JMX domain, security propagation strategy, MVC view resolver paths, banner location, ANSI output, stacktrace filtering, etc.) are internal Spring Boot configuration. They should only be changed under support guidance.