Skip to content

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.

Property Default Description
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.
Property Default Description
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.

Property Default Description
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.
Property Default Description
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 instances run asynchronously on a dedicated thread pool.

Property Default Description
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.
Property Default Description
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.
Property Default Description
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.
Property Default Description
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.
Property Default Description
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.

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

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.

Property Default Description
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.

Property Default Description
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.

Property Default Description
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.
Property Default Description
logging.file.name ${catalina.home}/logs/okmflow.log Path to the application log file. Check it first when troubleshooting.