> ## Documentation Index
> Fetch the complete documentation index at: https://docs.aseeflow.org/llms.txt
> Use this file to discover all available pages before exploring further.

# Process Engine Configuration

The process engine configuration can be placed in both [processes.xml](/reference/deployment-descriptors/descriptors/processes-xml) and the [bpm-platform.xml](/reference/deployment-descriptors/descriptors/bpm-platform-xml) files. If the process engine is configured in either or both of those files, it will be bootstrapped by the ASEE Flow infrastructure and be made available through `BpmPlatform.getProcessEngineService().getProcessEngine("name of process engine")`.

## Example

The following example shows an XML snippet which can be placed in both [processes.xml](/reference/deployment-descriptors/descriptors/processes-xml) and/or [bpm-platform.xml](/reference/deployment-descriptors/descriptors/bpm-platform-xml).

```xml theme={null}
<process-engine name="default">
  <job-acquisition>default</job-acquisition>
  <configuration>org.camunda.bpm.engine.impl.cfg.StandaloneProcessEngineConfiguration</configuration>
  <datasource>java:jdbc/ProcessEngine</datasource>

  <properties>
    <property name="history">full</property>
    <property name="databaseSchemaUpdate">true</property>
    <property name="authorizationEnabled">true</property>
  </properties>

</process-engine>
```

## Syntax Reference

<table class="table table-striped">
  <tr> <th>Tag name </th> <th>Parent tag name</th> <th>Required?</th> <th>Description</th> </tr>
  <tr> <td><code>\<process-engine></code></td> <td><code>\<process-application></code> or <code>\<bpm-platform></code></td> <td>true</td> <td> Container element for the configuration of a process engine. <p> <strong>Attributes:</strong> <ul> <li><code>name</code>: allows you to define the name of the process engine (Required).</li> </ul> </p> <p> <strong>Text Content:</strong> None. </p> </td> </tr>
  <tr> <td><code>\<job-acquisition></code></td> <td><code>\<process-engine></code></td> <td>true</td> <td> Assign the process engine to a job acquisition. <p> <strong>Attributes:</strong> None. </p> <p> <strong>Text Content:</strong> The name of the job acquisition to be used for this process engine. Job acquisitions are configured in the [bpm-platform.xml](/reference/deployment-descriptors/descriptors/bpm-platform-xml) file. </p> <p> <strong>Example:</strong> <code>\<job-acquisition>default\</job-acquisition></code> </p> </td> </tr>
  <tr> <td><code>\<configuration></code></td> <td><code>\<process-engine></code></td> <td>false</td> <td> Provide the name of the process engine configuration class. <p> <strong>Attributes:</strong> None. </p> <p> <strong>Text Content:</strong> The fully qualified classname of the Process Engine Configuration class to be used for this process engine. The class must be a subclass of [ProcessEngineConfigurationImpl](https://docs.camunda.org/javadoc/camunda-bpm-platform/7.24/org/camunda/bpm/engine/impl/cfg/ProcessEngineConfigurationImpl.html)". </p> <p> <strong>Default Value:</strong> [StandaloneProcessEngineConfiguration](https://docs.camunda.org/javadoc/camunda-bpm-platform/7.24/org/camunda/bpm/engine/impl/cfg/StandaloneProcessEngineConfiguration.html) </p> <p> <strong>Example:</strong><br /> <code>\<configuration><br />   my.custom.ProcessEngineConfiguration<br /> \</configuration></code> </p> </td> </tr>
  <tr> <td><code>\<datasource></code></td> <td><code>\<process-engine></code></td> <td>false</td> <td> Provide the JDBC name of the datasource to use for the process engine. <p> <strong>Attributes:</strong> None. </p> <p> <strong>Text Content:</strong> JDBC name of the datasource to use for this process engine. </p> <p> <strong>Default Value:</strong> null. </p> <p> <strong>Example:</strong> <code>\<datasource>java:jdbc/ProcessEngine\</datasource></code> </p> </td> </tr>
  <tr> <td><code>\<properties></code></td> <td><code>\<process-engine></code>, <code>\<plugin></code></td> <td>false</td> <td> Container element for providing a set of process engine configuration (or plugin) properties. <p> <strong>Attributes:</strong> None. </p> <p> <strong>Text Content:</strong> None. </p> </td> </tr>
  <tr> <td><code>\<property></code></td> <td><code>\<properties></code></td> <td>false</td> <td> Set value for process engine configuration property or of a process engine plugin. <p> <strong>Attributes:</strong> <ul> <li><code>name</code>: The name of the property to be set (Required). The process engine configuration (or plugin) class must provide a setter method setXXX() for the property name.</li> </ul> </p> <p> <strong>Text Content:</strong> The value of the property to be set. Property values are converted into String, Integer or Boolean values, depending on the type of the setter in the process engine configuration (or plugin) class. </p> <p> <strong>Example:</strong> <br /> <code>\<property name="authorizationEnabled">true\</property></code> </p> </td> </tr>
  <tr> <td><code>\<plugins></code></td> <td><code>\<process-engine></code></td> <td>false</td> <td> Container element for providing a set of [process engine plugin](/user-guide/process-engine/process-engine-plugins) configurations. <p> <strong>Attributes:</strong> None. </p> <p> <strong>Text Content:</strong> None. </p> </td> </tr>
  <tr> <td><code>\<plugin></code></td> <td><code>\<plugins></code></td> <td>false</td> <td> Container element for providing an individual [process engine plugin](/user-guide/process-engine/process-engine-plugins) configuration. <p> <strong>Attributes:</strong> None. </p> <p> <strong>Text Content:</strong> None. </p> </td> </tr>
  <tr> <td><code>\<class></code></td> <td><code>\<plugin></code></td> <td>false</td> <td> Sets the classname of a [process engine plugin](/user-guide/process-engine/process-engine-plugins). <p> <strong>Attributes:</strong> None. </p> <p> <strong>Text Content:</strong> The fully qualified classname of a process engine plugin. Must be an implementation of [ProcessEnginePlugin](https://docs.camunda.org/javadoc/camunda-bpm-platform/7.24/org/camunda/bpm/engine/impl/cfg/ProcessEnginePlugin.html) </p> </td> </tr>
</table>

## Configuration Properties

The following is a list with the most commonly used process engine configuration properties, along with some explanations. The properties can be used in the `<property name="foo">bar</property>` tag, where `foo` is the name of the property and `bar` is the value of the property.

<table class="table table-striped">
  <tr> <th>Property name</th> <th>Type</th> <th>Description</th> </tr>
  <tr> <td><code>authorizationEnabled</code></td> <td>Boolean</td> <td>Activates [authorization checks](/user-guide/process-engine/authorization-service#enable-authorization-checks).</td> </tr>
  <tr> <td><code>autoStoreScriptVariables</code></td> <td>Boolean</td> <td> Controls whether all global script variables should be automatically stored as process variables or not. Default value is <code>false</code>. <p> <strong>Values:</strong> <code>true</code>, <code>false</code> (Boolean). </p> </td> </tr>
  <tr> <td><code>cmmnEnabled</code></td> <td>Boolean</td> <td> When set to <code>false</code>, the following behavior changes: <ul> <li>The automated schema maintenance (creating and dropping tables, see property <code>databaseSchemaUpdate</code>) does not cover the tables required for CMMN execution.</li> <li>CMMN resources are not deployed as case definitions to the engine.</li> <li>Tasks from CMMN cases are not returned by the task query.</li> </ul> Default value is <code>true</code>. <p> <strong>Values:</strong> <code>true</code>, <code>false</code> (Boolean). </p> </td> </tr>
  <tr> <td><code>databaseSchemaUpdate</code></td> <td>String</td> <td> Sets the value for process engine [database schema creation](/user-guide/process-engine/database/database-configuration). <p> <strong>Values:</strong> <code>false</code>, <code>create-drop</code>, <code>true</code>. </p> </td> </tr>
  <tr> <td><code>databaseTablePrefix</code></td> <td>String</td> <td> Specifies a prefix for any table name included in SQL statements made by the process engine. Can be used to point the engine to a specific schema by setting the value to <code>MY\_SCHEMA.</code> or tables with a naming pattern by setting the value to <code>MY\_TABLE\_PREFIX\_PATTERN\_</code>. </td> </tr>
  <tr> <td><code>defaultNumberOfRetries</code></td> <td>Integer</td> <td> Specifies how many times a job will be executed before an incident is raised. Default value: <code>3</code> </td> </tr>
  <tr> <td><code>defaultUserPermissionNameForTask</code></td> <td>String</td> <td> Set the default [permisson to work on a task](/user-guide/process-engine/authorization-service#default-task-permissions). Allowed values are <code>UPDATE</code> or <code>TASK\_WORK</code>. Default value: <code>UPDATE</code>. </td> </tr>
  <tr> <td><a name="disabledPermissions" /><code>disabledPermissions</code></td> <td>List</td> <td>Define a list of Permissions' names. These permissions will be not taken into account whenever authorization check is performed. </td> </tr>
  <tr> <td><code>dmnEnabled</code></td> <td>Boolean</td> <td> When set to <code>false</code>, the following behavior changes: <ul> <li>The automated schema maintenance (creating and dropping tables, see property <code>databaseSchemaUpdate</code>) does not cover the tables required for DMN execution.</li> <li>DMN resources are not deployed as decision definitions or decision requirements definitions to the engine.</li> </ul> Default value is <code>true</code>. <p> <strong>Values:</strong> <code>true</code>, <code>false</code> (Boolean). </p> </td> </tr>
  <tr> <td><code>enableExceptionsAfterUnhandledBpmnError</code></td> <td>Boolean</td> <td> If set to <code>true</code>, Process Engine Exception is thrown when [unhandled BPMN Error](/reference/bpmn20/events/error-events#unhandled-bpmn-error) occurs. Default value: <code>false</code> <p> <strong>Values:</strong> <code>true</code>, <code>false</code> (Boolean). </p> </td> </tr>
  <tr> <td><code>enableExpressionsInAdhocQueries</code></td> <td>Boolean</td> <td> If set to <code>true</code>, expressions can be used when creating and executing adhoc queries. For details, see the section on [security considerations for custom code](/user-guide/process-engine/securing-custom-code) in the user guide. Default value is <code>false</code>. <p> <strong>Values:</strong> <code>true</code>, <code>false</code> (Boolean). </p> </td> </tr>
  <tr> <td><code>enableExpressionsInStoredQueries</code></td> <td>Boolean</td> <td> If set to <code>true</code>, expressions can be used when creating and executing stored queries. For details, see the section on [security considerations for custom code](/user-guide/process-engine/securing-custom-code) in the user guide. Default value is <code>true</code>. <p> <strong>Values:</strong> <code>true</code>, <code>false</code> (Boolean). </p> </td> </tr>
  <tr> <td><code>enableFetchProcessDefinitionDescription</code></td> <td>Boolean</td> <td> If set to false, Bpmn Model Instance is not fetched and cached whenever a process definition query is performed and thus the returned process definition does not contain the description. Default value is <code>true</code>. <p> <strong>Values:</strong> <code>true</code>, <code>false</code> (Boolean). </p> </td> </tr>
  <tr> <td><code>enableXxeProcessing</code></td> <td>Boolean</td> <td> If set to <code>true</code>, enables XML eXternal Entity (XXE) Processing. When disabled, it provides protection against XXE Processing attacks. Default value is <code>false</code>. <p> <strong>Values:</strong> <code>true</code>, <code>false</code> (Boolean). </p> </td> </tr>
  <tr> <td><code>enableScriptCompilation</code></td> <td>Boolean</td> <td> Controls whether the process engine should attempt to compile script sources and cache the compilation result or not. Default value is <code>true</code>. <p> <strong>Values:</strong> <code>true</code>, <code>false</code> (Boolean). </p> </td> </tr>
  <tr> <td><code>forceCloseMybatisConnectionPool</code></td> <td>Boolean</td> <td> Controls whether a Mybatis-managed database connection pool is force closed when the process engine is closed. Closing the pool closes all active and idle database connections. <p> <strong>Values:</strong> <code>true</code> (default), <code>false</code>. </p> </td> </tr>
  <tr> <td><code>failedJobRetryTimeCycle</code></td> <td>String</td> <td> Sets how often a job is retried after a fail and how long the engine should wait until it tries to execute a job again. See the [user guide](/user-guide/process-engine/the-job-executor#retry-time-cycle-configuration) for more details on this setting. </td> </tr>
  <tr id="ensureJobDueDateNotNull"> <td><code>ensureJobDueDateNotNull</code></td> <td>Boolean</td> <td> Ensures that each job has it's <code>DueDate</code> property set. If the Job <code>DueDate</code> property hasn't been explicitly set, the current time is added. Default value is <code>false</code>. <p> <strong>Values:</strong> <code>true</code>, <code>false</code> (Boolean). </p> </td> </tr>
  <tr id="enable-historic-instance-permissions"> <td><code>enableHistoricInstancePermissions</code></td> <td>Boolean</td> <td> If the value of this flag is set to <code>true</code>, [Historic Instance Permissions](/user-guide/process-engine/authorization-service#historic-instance-permissions) are enabled. Default value is <code>false</code>. <p> <strong>Values:</strong> <code>true</code>, <code>false</code> (Boolean). </p> </td> </tr>
  <tr id="enforceSpecificVariablePermission"> <td><code>enforceSpecificVariablePermission</code></td> <td>Boolean</td> <td> If the value of this flag is set to <code>true</code>, the [default permissions](/user-guide/process-engine/authorization-service#default-read-variable-permissions) to see/read variables are: <ul> <li>READ\_INSTANCE\_VARIABLE, READ\_HISTORY\_VARIABLE, and READ\_TASK\_VARIABLE on Process Definition resource, and READ\_VARIABLE on Task resource</li> <li>READ\_VARIABLE on Historic Task resource</li> </ul> Default value is <code>false</code>. <p> <strong>Values:</strong> <code>true</code>, <code>false</code> (Boolean). </p> </td> </tr>
  <tr> <td><code>history</code></td> <td>String</td> <td> Sets the [level of the process engine history](/user-guide/process-engine/history/history-configuration#choose-a-history-level). <p> <strong>Values:</strong> <code>none</code>, <code>activity</code>, <code>audit</code>, <code>full</code>. </p> </td> </tr>
  <tr id="enableDefaultDbHistoryEventHandler"> <td><code>enableDefaultDbHistoryEventHandler</code></td> <td>Boolean</td> <td> If the value of this flag is <code>true</code>, an instance of the default <code>DbHistoryEventHandler</code> class is included in the collection of History Events Handlers. This flag should be used in conjunction with the <code>customHistoryEventHandlers</code> List property when defining custom History Event Handlers. The default value is <code>true</code>. <p> <strong>Values:</strong> <code>true</code>, <code>false</code> (Boolean). </p> </td> </tr>
  <tr id="historyRemovalTimeStrategy"> <td><code>historyRemovalTimeStrategy</code></td> <td>String</td> <td> Controls if and when the [removal time](/user-guide/process-engine/history/history-cleanup#instance-removal-time) of an historic instance is set. The default value is <code>end</code>.<br /> Please also see the [<code>historyCleanupStrategy</code>](/reference/deployment-descriptors/tags/process-engine#historyCleanupStrategy) configuration parameter.<br /><br /> <strong>Values:</strong> <code>start</code>, <code>end</code>, <code>none</code> (String). </td> </tr>
  <tr id="hostname"> <td><code>hostname</code></td> <td>String</td> <td> Sets the name of the host on which the Process Engine will run. The hostname property is also used as the Metrics Reporter identifier. <br /><br /> A custom hostname can be generated by providing an implementation of the [HostnameProvider](https://docs.camunda.org/javadoc/camunda-bpm-platform/7.24/org/camunda/bpm/engine/impl/history/event/HostnameProvider.html) interface and and setting the engine property <code>hostnameProvider</code> to an instance of that class. <br /><br /> </td> </tr>
  <tr> <td><code>jdbcDriver</code></td> <td>String</td> <td> Sets the fully qualified classname of the JDBC driver to use. <p> This is usually used if the process engine is NOT configured using a <code>\<datasource></code> (see above) but using the built-in mybatis connection pool instead. </p> </td> </tr>
  <tr> <td><code>jdbcPassword</code></td> <td>String</td> <td> Sets the password of the JDBC connection. <p> This is usually used if the process engine is NOT configured using a <code>\<datasource></code> (see above) but using the built-in mybatis connection pool instead. </p> </td> </tr>
  <tr> <td><code>jdbcUrl</code></td> <td>String</td> <td> Sets the JDBC url for the database connection. <p> This is usually used if the process engine is NOT configured using a <code>\<datasource></code> (see above) but using the built-in mybatis connection pool instead. </p> </td> </tr>
  <tr> <td><code>jdbcUsername</code></td> <td>String</td> <td> Sets the username of the JDBC connection. <p> This is usually used if the process engine is NOT configured using a <code>\<datasource></code> (see above) but using the built-in mybatis connection pool instead. </p> </td> </tr>
  <tr> <td><code>skipIsolationLevelCheck</code></td> <td>Boolean</td> <td> If the value of this flag is set to <code>false</code>, a <code>ProcessEngineException</code> will be thrown if the transaction isolation level set for the database is different from the recommended one. If set to <code>true</code>, no exception will be thrown but a warning message will be logged. <p> The default value is <code>false</code>. </p> <p> <strong>Note</strong>: The [recommended transaction isolation level](/user-guide/process-engine/database/database-configuration#isolation-level-configuration) that ensures the correct behaviour of the engine is <code>READ\_COMMITTED</code>. </p> <strong>Values:</strong> <code>true</code>, <code>false</code> (Boolean). </td> </tr>
  <tr> <td><code>jdbcBatchProcessing</code></td> <td>Boolean</td> <td> Controls if the engine executes the jdbc statements as Batch or not. <p> Default is <code><strong>true</strong></code>, but this has to be disabled for some databases. See [the user guide](/user-guide/process-engine/database/database-configuration#jdbc-batch-processing) for further details. </p> </td> </tr>
  <tr> <td><code>jobExecutorAcquireByDueDate</code></td> <td>Boolean</td> <td> Controls whether the job executor acquires the next jobs to execute ordered by due date. Default value is <code>false</code>. See the [user guide](/user-guide/process-engine/the-job-executor#the-job-order-of-job-acquisition) for more details on this setting. <p> <strong>Values:</strong> <code>true</code>, <code>false</code> (Boolean). </p> </td> </tr>
  <tr id="jobExecutorAcquireByPriority"> <td><code>jobExecutorAcquireByPriority</code></td> <td>Boolean</td> <td> Controls whether the job executor acquires the next jobs to execute ordered by job priority. Default value is <code>false</code>. See the [user guide](/user-guide/process-engine/the-job-executor#the-job-order-of-job-acquisition) for more details on this setting. <p> <strong>Values:</strong> <code>true</code>, <code>false</code> (Boolean). </p> </td> </tr>
  <tr> <td><code>jobExecutorActivate</code></td> <td>Boolean</td> <td> Controls whether the process engine starts with an active job executor or not. For a shared process engine configuration, the default value is <code>true</code>. For an embedded process engine configuration, the default value is <code>false</code>. See the [user guide](/user-guide/process-engine/the-job-executor#job-executor-activation) for more details on this setting. <p> <strong>Values:</strong> <code>true</code>, <code>false</code> (Boolean). </p> </td> </tr>
  <tr> <td><code>jobExecutorDeploymentAware</code></td> <td>Boolean</td> <td> Controls whether the job executor is deployment aware or not. <p> <strong>Values:</strong> <code>true</code>, <code>false</code> (Boolean). </p> </td> </tr>
  <tr> <td><code>jobExecutorPreferTimerJobs</code></td> <td>Boolean</td> <td> Controls whether the job executor prefers due timer jobs over other job types. Default value is <code>false</code>. See the [user guide](/user-guide/process-engine/the-job-executor#the-job-order-of-job-acquisition) for more details on this setting. <p> <strong>Values:</strong> <code>true</code>, <code>false</code> (Boolean). </p> </td> </tr>
  <tr id="jobExecutorPriorityRangeMin"> <td><code>jobExecutorPriorityRangeMin</code></td> <td>Long</td> <td> When set, the job executor will only acquire jobs that have a priority equal to or higher than the specified threshold. You can combine this property with <code>jobExecutorPriorityRangeMax</code> to specify a job priority range for the job executor. Note, that you can configure the priority of batch jobs and history cleanup jobs via the <code>batchJobPriority</code> and <code>historyCleanupJobPriority</code> properties. Both default to <code>0</code>. <p> <strong>Default value:</strong> <code>-2<sup>63</sup></code> (<code>Long.MIN\_VALUE</code>) </p> </td> </tr>
  <tr id="jobExecutorPriorityRangeMax"> <td><code>jobExecutorPriorityRangeMax</code></td> <td>Long</td> <td> When set, the job executor will only acquire jobs that have a priority equal to or lower than the specified threshold. You can combine this property with <code>jobExecutorPriorityRangeMin</code> to specify a job priority range for the job executor. Note, that you can configure the priority of batch jobs and history cleanup jobs via the <code>batchJobPriority</code> and <code>historyCleanupJobPriority</code> properties. Both default to <code>0</code>. <p> <strong>Default value:</strong> <code>2<sup>63</sup>-1</code> (<code>Long.MAX\_VALUE</code>) </p> </td> </tr>
  <tr id="jobExecutorAcquireExclusiveOverProcessHierarchies"> <td><code>jobExecutorAcquireExclusiveOverProcessHierarchies</code></td> <td>Boolean</td> <td> <br /> When set to <code>false</code>, the job executor's acquisition & execution of jobs related to subprocesses will not be exclusive. <br /> <br /> When set to true, the acquisition & execution of the aforementioned jobs will be performed exclusively. <br /> <br /> See the [user guide](/user-guide/process-engine/the-job-executor#exclusive-jobs-of-process-hierarchies) for more details. <br /> <strong>Default value:</strong> <code>false</code> <br /> <strong>Values:</strong> <code>true</code>, <code>false</code> (Boolean). <br /> </td> </tr>
  <tr id="skipHistoryOptimisticLockingExceptions"> <td><code>skipHistoryOptimisticLockingExceptions</code></td> <td>Boolean</td> <td> Controls if the engine will throw [OptimisticLockingException](/user-guide/process-engine/transactions-in-processes#optimistic-locking-in-asee-flow)s on UPDATE or DELETE operations for historical data or not. The default is <code><strong>true</strong></code>. To preserve the previous behavior (≤ 7.9), the flag must be set to <code><strong>false</strong></code>.<br /><br /> <strong>Values:</strong> <code>true</code>, <code>false</code> (Boolean). </td> </tr>
  <tr> <td><code>standaloneTasksEnabled</code></td> <td>Boolean</td> <td> When set to <code>false</code>, the following behavior changes: <ul> <li>Standalone tasks can no longer be created via API.</li> <li>Standalone tasks are not returned by the TaskQuery.</li> </ul> Default value is <code>true</code>. <p> <strong>Values:</strong> <code>true</code>, <code>false</code> (Boolean). </p> </td> </tr>
  <tr id="tenantCheckEnabled"> <td><code>tenantCheckEnabled</code></td> <td>Boolean</td> <td> Controls whether the process engine performs tenant checks to ensure that an authenticated user can only access data that belongs to one of his tenants. Default value is <code>true</code>. See the [user guide](/user-guide/process-engine/multi-tenancy#single-process-engine-with-tenant-identifiers) for more details. <p> <strong>Values:</strong> <code>true</code>, <code>false</code> (Boolean). </p> </td> </tr>
  <tr> <td><code>batchJobsPerSeed</code></td> <td>Integer</td> <td> Sets the number of batch execution jobs created per batch seed job invocation. See the [ user guide](/user-guide/process-engine/batch#job-definitions) for more information on batch execution. Default value: <code>100</code> </td> </tr>
  <tr> <td><code>invocationsPerBatchJob</code></td> <td>Integer</td> <td> Sets the number of invocations a single batch execution job executes. See the [ user guide](/user-guide/process-engine/batch#job-definitions) for more information on batch execution. Default value: <code>1</code> </td> </tr>
  <tr id="invocations-per-batch-job-by-batch-type"> <td><code>invocationsPerBatchJobByBatchType</code></td> <td>Map</td> <td> Defines the invocations per batch job for each individual batch type. Unless specified in this map, the value of 'invocationsPerBatchJob' is used for batch operations.<br /><br /> Read more in the [User Guide](/user-guide/process-engine/batch#configuration). </td> </tr>
  <tr> <td><code>batchPollTime</code></td> <td>Integer</td> <td> Sets the poll interval of the batch monitor job to check for batch completion in seconds. See the [ user guide](/user-guide/process-engine/batch#job-definitions) for more information on batch execution. Default value: <code>30</code> </td> </tr>
  <tr> <td><code>batchJobPriority</code></td> <td>Integer</td> <td> Sets the default batch job priority. See the [ user guide](/user-guide/process-engine/the-job-executor#job-prioritization) for more information on job prioritization. Default value: <code>0</code> </td> </tr>
  <tr> <td><code>deploymentLockUsed</code></td> <td>Boolean</td> <td> Sets if the process engine must acquire an [exclusive lock when creating a deployment](/user-guide/process-engine/deployments#deployments-in-a-clustered-scenario). Default value: <code>true</code> </td> </tr>
  <tr> <td><code>compositeIncidentHandlersEnabled</code></td> <td>Boolean</td> <td> Sets if the incidents can be handled by <a href="/user-guide/process-engine/incidents#composite-incident-handlers" f>multiple</a> handlers for the same incident type. <p> Default value is <code>false</code>. </p> <p> <strong>Values:</strong> <code>true</code>, <code>false</code> (Boolean). </p> </td> </tr>
  <tr> <td><code>deploymentSynchronized</code></td> <td>Boolean</td> <td> Sets if processing of the deployment must be synchronized. When <code>true</code> several deployments will be processed sequentially on one process engine node. When <code>false</code>, they may be processed in parallel, though depending of value of <code>deploymentLockUsed</code> they may still be synchronized using database pessimistic lock. Default value: <code>true</code> </td> </tr>
  <tr> <td><a name="javaSerializationFormatEnabled" /><code>javaSerializationFormatEnabled</code></td> <td>Boolean</td> <td> Sets if Java serialization format can be used, when [setting variables by their serialized representation](/user-guide/process-engine/variables#object-values). Default value: <code>false</code> </td> </tr>
  <tr> <td><a name="deserializationTypeValidationEnabled" /><code>deserializationTypeValidationEnabled</code></td> <td>Boolean</td> <td> Sets if validation of types should be performed before JSON and XML deserialization. See [Security Instructions](/user-guide/security#variable-values-from-untrusted-sources) for further information. Default value: <code>false</code> </td> </tr>
  <tr> <td><code>deserializationAllowedPackages</code></td> <td>String</td> <td> Sets the allowed package names of types that are analyzed before JSON and XML deserialization if <code>deserializationTypeValidationEnabled</code> is set to <code>true</code>. With the default validator, this can be a comma-separated list of allowed package names. Only the defined packages and their sub-packages will be allowed in conjunction with the <code>deserializationAllowedClasses</code>. Also, the default validator always allows types within the package "java.lang" and all sub-packages. See [Security Instructions](/user-guide/security#variable-values-from-untrusted-sources) for further information. Default value: <code>null</code> </td> </tr>
  <tr> <td><code>deserializationAllowedClasses</code></td> <td>String</td> <td> Sets the allowed class names of types that are analyzed before JSON and XML deserialization if <code>deserializationTypeValidationEnabled</code> is set to <code>true</code>. With the default validator, this can be a comma-separated list of class names. Only the defined class names will be allowed in conjunction with the <code>deserializationAllowedPackages</code>. Also, the default validator always allows the following types: <code>java.util.ArrayList</code>, <code>java.util.Arrays\$ArrayList</code>, <code>java.util.HashMap</code>, <code>java.util.HashSet</code>, <code>java.util.LinkedHashMap</code>, <code>java.util.LinkedHashSet</code>, <code>java.util.LinkedList</code>, <code>java.util.Properties</code>, <code>java.util.TreeMap</code>, <code>java.util.TreeSet</code>. See [Security Instructions](/user-guide/security#variable-values-from-untrusted-sources) for further information. Default value: <code>null</code> </td> </tr>
  <tr> <td><a name="enablePasswordPolicy" /><code>enablePasswordPolicy</code></td> <td>Boolean</td> <td>Set to <code>true</code>, to enable a [password policy](/user-guide/process-engine/password-policy) for users that are managed by the engine. If a [custom password policy](/user-guide/process-engine/password-policy#customize-the-password-policy) is configured, it will be enabled. Otherwise the [built-in password policy](/user-guide/process-engine/password-policy#built-in-password-policy) is activated. </td> </tr>
  <tr> <td><a name="enableCmdExceptionLogging" /><code>enableCmdExceptionLogging</code></td> <td>Boolean</td> <td>Set to <code>false</code>, to disable logging of unhandled exceptions that occur during command execution. The default setting for this flag is <code>true</code>. Note: There might be duplicate log entries for command exceptions (e.g. when a job fails). </td> </tr>
  <tr> <td><a name="enableReducedJobExceptionLogging" /><code>enableReducedJobExceptionLogging</code></td> <td>Boolean</td> <td>Set to <code>true</code>, to suppress logging of exceptions that occur during the execution of a job that has retries left. If the job does not have any retries left an exception will still be logged. </td> </tr>
  <tr id="webappsAuthenticationLoggingEnabled"> <td><a name="webappsAuthenticationLoggingEnabled" /><code>webappsAuthenticationLoggingEnabled</code></td> <td>Boolean</td> <td>Set to <code>true</code> to enable authentication logging in the ASEE Flow web apps (Cockpit, Tasklist, and Admin). When enabled, the ASEE Flow web apps will produce log statements in the application log for each user initiated log in and log out event. The name of the logger is <code>org.camunda.bpm.webapp</code>. </td> </tr>
  <tr> <td><a name="queryMaxResultsLimit" /><code>queryMaxResultsLimit</code></td> <td>Integer</td> <td> When defining a limit of maximum results, an authenticated user cannot perform a query with an unbounded number of results or a paginated query that exceeds the limit. Read more about it in the [User Guide](/user-guide/process-engine/process-engine-api#query-maximum-results-limit). <br /><br /> <strong>Note:</strong> To gain the full feature set of the Webapps, and not suffer any UX degradation due to unavailable data, the <code>queryMaxResultsLimit</code> must be set to <code>2000</code>. If you use Optimize it is recommended to set the value to <code>10 000</code>, so the import of the data to Optimize works out of the box.<br /><br /> The default value is 2<sup>31</sup>-1. </td> </tr>
  <tr id="dmnFeelEnableLegacyBehavior"> <td><code>dmnFeelEnableLegacyBehavior</code></td> <td>Boolean</td> <td> Set to <code>true</code> to restore the legacy FEEL configuration of the DMN Engine. This will result in the usage of the old, Java-based FEEL Engine, as well as the usage of JUEL in DMN input expressions, output entries and literal expressions. When set to <code>false</code>, the new, Scala-based FEEL Engine is used, and FEEL is used as the default language for DMN input expressions, input and output entries, and literal expressions. Default value: <code>false</code> </td> </tr>
  <tr id="dmnFeelCustomFunctionProviders"> <td><code>dmnFeelCustomFunctionProviders</code></td> <td>List</td> <td> Define a list of instances of <code>FeelCustomFunctionProvider</code>.<br /><br /> Read more about it in the [User Guide](/user-guide/dmn-engine/feel/custom-functions). </td> </tr>
  <tr id="dmnReturnBlankTableOutputAsNull"> <td><code>dmnReturnBlankTableOutputAsNull</code></td> <td>Boolean</td> <td> Controls whether blank DMN table outputs are swallowed or returned as <code>null</code>.<br /><br /> Default value: <code>false</code> </td> </tr>
  <tr id="skipOutputMappingOnCanceledActivities"> <td><code>skipOutputMappingOnCanceledActivities</code></td> <td>Boolean</td> <td> <p>For activities that were canceled (e.g. due to throwing and catching an error) this flag controls if the engine should still perform output mapping. When set to <code>true</code>, output mapping will not be done for any activity that was canceled. This might be helpful when it is not certain which variables will be available when the activity is canceled (e.g. when an external task does not return an expected variable).</p> <p>This flag is often used together with [camunda:errorEventDefinition](/reference/bpmn20/custom-extensions/extension-elements#erroreventdefinition) extension elements on external service tasks.</p> <p>Default value: <code>false</code></p> </td> </tr>
  <tr id="configureScriptEngineHostAccess"> <td><code>configureScriptEngineHostAccess</code></td> <td>Boolean</td> <td> Specifies whether host language resources like classes and their methods are accessible or not. <p> <strong>GraalVM JavaScript</strong>: <br /> If enabled, <code>polyglot.js.allowHostAccess</code> and <code>polyglot.js.allowHostClassLookup</code> are set to <code>true</code>. <br /> <strong>Note:</strong> These flags might not be available in every version of GraalVM JavaScript. </p> <p> Default value is <code>true</code>. </p> <p> <strong>Values:</strong> <code>true</code>, <code>false</code> (Boolean). </p> </td> </tr>
  <tr id="enableScriptEngineLoadExternalResources"> <td><code>enableScriptEngineLoadExternalResources</code></td> <td>Boolean</td> <td> Specifies whether external resources can be loaded from file system or not. <p> <strong>GraalVM JavaScript</strong>: <br /> If enabled, <code>polyglot.js.allowIO</code> is set to <code>true</code>. <br /> <strong>Note:</strong> This flag might not be available in every version of GraalVM JavaScript. </p> <p> Default value is <code>false</code>. </p> <p> <strong>Values:</strong> <code>true</code>, <code>false</code> (Boolean). </p> </td> </tr>
  <tr id="enableScriptEngineNashornCompatibility"> <td><code>enableScriptEngineNashornCompatibility</code></td> <td>Boolean</td> <td> Specifies whether Nashorn compatibility mode is enabled or not. <p> <strong>GraalVM JavaScript</strong>: <br /> If enabled, <code>polyglot.js.nashorn-compat</code> is set to <code>true</code>. <br /> <strong>Note:</strong> This flag might not be available in every version of GraalVM JavaScript. </p> <p> Default value is <code>false</code>. </p> <p> <strong>Values:</strong> <code>true</code>, <code>false</code> (Boolean). </p> </td> </tr>
  <tr id="exception-codes"> <td><code>disableExceptionCode</code></td> <td>Boolean</td> <td> Disables the entire [exception error code feature](/user-guide/process-engine/error-handling#exception-codes). No exception error codes are assigned. <p> Default value is <code>false</code>. </p> <p> <strong>Values:</strong> <code>true</code>, <code>false</code> (Boolean). </p> </td> </tr>
  <tr> <td><code>disableBuiltinExceptionCodeProvider</code></td> <td>Boolean</td> <td> Disables the default implementation of [ExceptionCodeProvider](https://docs.camunda.org/javadoc/camunda-bpm-platform/7.24/org/camunda/bpm/engine/impl/errorcode/ExceptionCodeProvider.html) which allows overriding the [reserved exception codes](/user-guide/process-engine/error-handling#reserved-code-range). <p> Default value is <code>false</code>. </p> <p> <strong>Values:</strong> <code>true</code>, <code>false</code> (Boolean). </p> </td> </tr>
  <tr> <td><code>customExceptionCodeProvider</code></td> <td><code>[ExceptionCodeProvider](https://docs.camunda.org/javadoc/camunda-bpm-platform/7.24/org/camunda/bpm/engine/impl/errorcode/ExceptionCodeProvider.html)</code></td> <td> Allows registering a custom implementation of the exception code provider allowing to provide custom exception codes. <p> Default value is <code>null</code>. </p> <p> Read more in the [User Guide](/user-guide/process-engine/error-handling#register-a-custom-code-provider). </p> </td> </tr>
  <tr> <td><code>implicitVariableUpdateDetectionEnabled</code></td> <td>Boolean</td> <td> Enables detection of implicit updates to process variables of type object. <p> Default value is <code>true</code>. </p> <p> <strong>Values:</strong> <code>true</code>, <code>false</code> (Boolean). </p> </td> </tr>
  <tr id="logEntriesPerSyncOperationLimit"> <td><code>logEntriesPerSyncOperationLimit</code></td> <td>long</td> <td> Controls how many user operation log entries are produced for a synchronous API call. <ul> <li><strong>1:</strong> Regardless of the amount of affected entities, only one operation log entry is generated containing a summary of the operation affecting multiple entities.</li> <li><strong>-1:</strong> Disables any limits for user operation logs for synchronous APIs. Unlimited amounts of operation log entries are written.</li> <li><strong>1\<x≤Long.MAX\_VALUE</strong> Setting a value greater than 1 will instruct the process engine to complete only API calls that involve no more messages than the configured limit. If the limit is exceeded, the API call fails, and a <code>ProcessEngineException</code> is thrown. For successful API calls, the engine produces one operation log entry per affected entity, meaning the number of new operation log entries from one API call can never exceed logEntriesPerSyncOperationLimit.</li> </ul> <p> Default value is <code>1L</code>. <br /> More information about security aspects of this configuration can be found in the [security guide](/user-guide/security#user-operation-log-settings-for-synchronous-operations-affecting-multiple-entities). </p> <p> Currently supported operations: <ul> <li>Correlate message</li> </ul> </p> <p> <strong>Values:</strong><code>-1</code>, <code>1≤x≤Long.MAX\_VALUE</code> (long). </p> </td> </tr>
</table>

### History cleanup configuration parameters

<table class="table table-striped">
  <tr id="historyCleanupStrategy"> <td><code>historyCleanupStrategy</code></td> <td>String</td> <td> Controls which [History cleanup](/user-guide/process-engine/history/history-cleanup) strategy is used. The default value is <code>removalTimeBased</code>.<br /> Please also see the [<code>historyRemovalTimeStrategy</code>](/reference/deployment-descriptors/tags/process-engine#historyRemovalTimeStrategy) configuration parameter.<br /><br /> <strong>Values:</strong> <code>removalTimeBased</code>, <code>endTimeBased</code>. </td> </tr>
  <tr> <td><code>historyCleanupDefaultNumberOfRetries</code></td> <td>Integer</td> <td>Specifies how often a cleanup job will be executed before an incident is raised. This property overrides the global <code>defaultNumberOfRetries</code> property which has a default value of <code>3</code>.</td> </tr>
  <tr> <td><code>historyCleanupBatchWindowStartTime</code></td> <td>String</td> <td>[History cleanup](/user-guide/process-engine/history/history-cleanup) batch window start time in the format <code>HH:mmZ</code> (Z is for RFC 822 time zone) or <code>HH:mm</code>. E.g., <code>20:00+0100</code> or <code>20:00</code>. In case of <code>null</code>, no batch window is considered to be configured and history cleanup can only be called manually.</td> </tr>
  <tr> <td><code>historyCleanupBatchWindowEndTime</code></td> <td>String</td> <td>[History cleanup](/user-guide/process-engine/history/history-cleanup) batch window end time in the format <code>HH:mmZ</code> (Z is for RFC 822 time zone) or <code>HH:mm</code>. E.g., <code>23:00-0300</code> or <code>23:00</code>. In case <code>batchWindowEndTime</code> exceeds <code>batchWindowStartTime</code> it is considered to be on the same date (e.g., cleanup runs each day between 20:00 and 23:00). Otherwise it is considered to be on the next calendar day (e.g., cleanup starts each day at 20:00 and finishes the next day at 01:00). Default value is <code>00:00</code>.</td> </tr>
  <tr> <td><code>mondayHistoryCleanupBatchWindowStartTime</code></td> <td>String</td> <td>[History cleanup](/user-guide/process-engine/history/history-cleanup) batch window start time for Mondays. Requires the same format as <code>historyCleanupBatchWindowStartTime</code>. In case it is not configured, batch window configured with <code>historyCleanupBatchWindowStartTime</code> and <code>historyCleanupBatchWindowEndTime</code> will be used for this day of week. </td> </tr>
  <tr> <td><code>mondayHistoryCleanupBatchWindowEndTime</code></td> <td>String</td> <td>[History cleanup](/user-guide/process-engine/history/history-cleanup) batch window end time for Mondays. Requires the same format and follows the same logic as <code>historyCleanupBatchWindowEndTime</code>. </td> </tr>
  <tr> <td><code>tuesdayHistoryCleanupBatchWindowStartTime</code></td> <td>String</td> <td>Similar to <code>mondayHistoryCleanupBatchWindowStartTime</code>, but for Tuesdays.</td> </tr>
  <tr> <td><code>tuesdayHistoryCleanupBatchWindowEndTime</code></td> <td>String</td> <td>Similar to <code>mondayHistoryCleanupBatchWindowEndTime</code>, but for Tuesdays.</td> </tr>
  <tr> <td><code>wednesdayHistoryCleanupBatchWindowStartTime</code></td> <td>String</td> <td>Similar to <code>mondayHistoryCleanupBatchWindowStartTime</code>, but for Wednesdays. </td> </tr>
  <tr> <td><code>wednesdayHistoryCleanupBatchWindowEndTime</code></td> <td>String</td> <td>Similar to <code>mondayHistoryCleanupBatchWindowEndTime</code>, but for Wednesdays. </td> </tr>
  <tr> <td><code>thursdayHistoryCleanupBatchWindowStartTime</code></td> <td>String</td> <td>Similar to <code>mondayHistoryCleanupBatchWindowStartTime</code>, but for Thursdays. </td> </tr>
  <tr> <td><code>thursdayHistoryCleanupBatchWindowEndTime</code></td> <td>String</td> <td>Similar to <code>mondayHistoryCleanupBatchWindowEndTime</code>, but for Thursdays. </td> </tr>
  <tr> <td><code>fridayHistoryCleanupBatchWindowStartTime</code></td> <td>String</td> <td>Similar to <code>mondayHistoryCleanupBatchWindowStartTime</code>, but for Fridays. </td> </tr>
  <tr> <td><code>fridayHistoryCleanupBatchWindowEndTime</code></td> <td>String</td> <td>Similar to <code>mondayHistoryCleanupBatchWindowEndTime</code>, but for Fridays. </td> </tr>
  <tr> <td><code>saturdayHistoryCleanupBatchWindowStartTime</code></td> <td>String</td> <td>Similar to <code>mondayHistoryCleanupBatchWindowStartTime</code>, but for Saturdays. </td> </tr>
  <tr> <td><code>saturdayHistoryCleanupBatchWindowEndTime</code></td> <td>String</td> <td>Similar to <code>mondayHistoryCleanupBatchWindowEndTime</code>, but for Saturdays. </td> </tr>
  <tr> <td><code>sundayHistoryCleanupBatchWindowStartTime</code></td> <td>String</td> <td>Similar to <code>mondayHistoryCleanupBatchWindowStartTime</code>, but for Sundays. </td> </tr>
  <tr> <td><code>sundayHistoryCleanupBatchWindowEndTime</code></td> <td>String</td> <td>Similar to <code>mondayHistoryCleanupBatchWindowEndTime</code>, but for Sundays. </td> </tr>
  <tr> <td><code>historyCleanupBatchSize</code></td> <td>Integer</td> <td>Defines the amount of top-level objects (e.g., historic process instances) to be removed at once. Default and maximum value is 500.</td> </tr>
  <tr> <td><code>historyCleanupBatchThreshold</code></td> <td>Integer</td> <td>Defines the minimum amount of top-level objects required for data to be removed. Default value is 10. Hint: if the value is too small and the process engine continues to be used during history cleanup, it can happen that real SQL delete statements are called very frequently for small amounts of data.<br /><br /> <strong>Note:</strong> This property cannot be used in conjunction with <code>historyCleanupStrategy</code> set to <code>removalTimeBased</code>.</td> </tr>
  <tr> <td><code>historyCleanupDegreeOfParallelism</code></td> <td>Integer</td> <td>Defines the level of parallelism for history cleanup. Default value is 1 (no parallelism). Maximum allowed value is 8.</td> </tr>
  <tr> <td><code>historyCleanupMetricsEnabled</code></td> <td>Boolean</td> <td>Activates metrics for history cleanup. Default value is <code>true</code>. <br /><br /> <strong>Note</strong> that history cleanup metrics are collected only when [general metrics collection is not disabled](/user-guide/process-engine/metrics#disable-reporting). </td> </tr>
  <tr id="history-cleanup-enabled"> <td><code>historyCleanupEnabled</code></td> <td>Boolean</td> <td> Configures whether the engine participates in history cleanup or not. The default value is <code>true</code>. For more details, please see [Cleanup Execution Participation per Node](/user-guide/process-engine/history/history-cleanup#cleanup-execution-participation-per-node) in the User Guide. </td> </tr>
  <tr id="historytimetolive"> <td><code>historyTimeToLive</code></td> <td>String</td> <td>Defines history time to live for process definitions and decision definitions if no other value is defined. The history time to live defines the number of days using a time specified by the ISO-8601 date format. The function only accepts the notation to define a number of days. </td> </tr>
  <tr id="enforceHistoryTimeToLive"> <td><code>enforceHistoryTimeToLive</code></td> <td>Boolean</td> <td>Feature flag that prevents the deployment or redeployment of any model resource (BPMN, DMN, CMMN) that contains a <code>historyTimeToLive</code> of <code>null</code> by throwing a <code>ProcessEngineException</code>. Default value: <code>true</code>. </td> </tr>
  <tr> <td><code>batchOperationHistoryTimeToLive</code></td> <td>String</td> <td>Defines history time to live for historic batch operations. The history time to live defines the number of days using a time specified by the ISO-8601 date format. The function only accepts the notation to define a number of days. </td> </tr>
  <tr> <td><code>batchOperationsForHistoryCleanup</code></td> <td>Map</td> <td>Defines history time to live for each specific historic batch operation. The history time to live defines the number of days using a time specified by the ISO-8601 date format. The function only accepts the notation to define a number of days. </td> </tr>
  <tr> <td>historyCleanupJobLogTimeToLive</td> <td>String</td> <td>Defines history time to live for history job log entries produced by history cleanup jobs. This works with the <code>removalTimeBased</code> history cleanup strategy. The history time to live defines the number of days using a time specified by the ISO-8601 date format. The function only accepts the notation to define a number of days. </td> </tr>
  <tr> <td>taskMetricsTimeToLive</td> <td>String</td> <td>Defines time to live for task metrics entries produced by user task assignments. The history time to live defines the number of days using a time specified by the ISO-8601 date format. The function only accepts the notation to define a number of days. </td> </tr>
</table>

### Login parameters

<table class="table table-striped">
  <tr> <td><code>loginMaxAttempts</code></td> <td>Integer</td> <td>Defines the maximum number of attempts a user can try to login before this user is locked. Default value: 10 </td> </tr>
  <tr> <td><code>loginDelayMaxTime</code></td> <td>Integer</td> <td>Defines the maximum amount of time (in seconds) for which a user must wait until they are able to try to login again. Default value: 60 seconds </td> </tr>
  <tr> <td><code>loginDelayFactor</code></td> <td>Integer</td> <td>Defines the factor by which the delay is calculated after an unsuccessful login attempt. Default value: 2 </td> </tr>
  <tr> <td><code>loginDelayBase</code></td> <td>Integer</td> <td>Defines the base by which the delay is calculated after an unsuccessful login attempt. Default value: 3 </td> </tr>
</table>

### Resource whitelist pattern parameters

<table class="table table-striped">
  <tr> <td><code>generalResourceWhitelistPattern</code></td> <td>String</td> <td>Defines acceptable values for the User, Group and Tenant IDs. Can be defined by using the standard [Java Regular Expression syntax](https://docs.oracle.com/javase/7/docs/api/java/util/regex/Pattern.html). Default value: <code>\[a-zA-Z0-9]+|camunda-admin</code></td> </tr>
  <tr> <td><code>userResourceWhitelistPattern</code></td> <td>String</td> <td>Defines acceptable values for the User IDs. Can be defined by using the standard [Java Regular Expression syntax](https://docs.oracle.com/javase/7/docs/api/java/util/regex/Pattern.html). Default value: a custom general whitelist pattern or the default <code>\[a-zA-Z0-9]+|camunda-admin</code> (if nothing is defined)</td> </tr>
  <tr> <td><code>groupResourceWhitelistPattern</code></td> <td>String</td> <td>Defines acceptable values for the Group IDs. Can be defined by using the standard [Java Regular Expression syntax](https://docs.oracle.com/javase/7/docs/api/java/util/regex/Pattern.html). Default value: a custom general whitelist pattern or the default <code>\[a-zA-Z0-9]+|camunda-admin</code> (if nothing is defined)</td> </tr>
  <tr> <td><code>tenantResourceWhitelistPattern</code></td> <td>String</td> <td>Defines acceptable values for the Tenant IDs. Can be defined by using the standard [Java Regular Expression syntax](https://docs.oracle.com/javase/7/docs/api/java/util/regex/Pattern.html). Default value: a custom general whitelist pattern or the default <code>\[a-zA-Z0-9]+|camunda-admin</code> (if nothing is defined)</td> </tr>
</table>

### Logging context parameters

These parameters define the keys at which the specified data can be retrieved from the Mapped Diagnostic Context (MDC). See [Logging](/user-guide/logging#process-data-context) for details.
The specified data will only be put into the MDC if a key is defined. All parameters can be set to <code>null</code> or the empty String in order to disable their logging in the MDC.

<table class="table table-striped">
  <tr> <td><code>loggingContextActivityId</code></td> <td>String</td> <td>Defines the key for the current activity id. Default value: <code>activityId</code></td> </tr>
  <tr> <td><code>loggingContextActivityName</code></td> <td>String</td> <td>Defines the key for the current activity name. Default value: <code>activityName</code></td> </tr>
  <tr> <td><code>loggingContextApplicationName</code></td> <td>String</td> <td>Defines the key for the current process application name. Default value: <code>applicationName</code></td> </tr>
  <tr> <td><code>loggingContextBusinessKey</code></td> <td>String</td> <td>Defines the key for the current business key. Default value: <code>null</code> (disabled by default since a lookup into the database might be necessary in case the business key needs to be fetched from the process instance)</td> </tr>
  <tr> <td><code>loggingContextProcessDefinitionId</code></td> <td>String</td> <td>Defines the key for the current process definition id. Default value: <code>processDefinitionId</code></td> </tr>
  <tr> <td><code>loggingContextProcessDefinitionKey</code></td> <td>String</td> <td>Defines the key for the current process definition key. Default value: <code>null</code> (disabled by default since a lookup into the database might be necessary in case the process definition key needs to be fetched from the process instance)</td> </tr>
  <tr> <td><code>loggingContextProcessInstanceId</code></td> <td>String</td> <td>Defines the key for the current process instance id. Default value: <code>processInstanceId</code></td> </tr>
  <tr> <td><code>loggingContextTenantId</code></td> <td>String</td> <td>Defines the key for the current tenant id. Default value: <code>tenantId</code></td> </tr>
  <tr> <td><code>loggingContextEngineName</code></td> <td>String</td> <td>Defines the key for the current process engine name. Default value: <code>engineName</code></td> </tr>
</table>

<Warning>
  **External Properties**

  Any properties set by the user that match the configured Logging context parameters will be preserved after the processing of the engine.
</Warning>

### Logging level parameters

These parameters define the log level for the specified log entries.

<table class="table table-striped">
  <tr id="logLevelBpmnStackTrace"> <td><code>logLevelBpmnStackTrace</code></td> <td>String</td> <td> Defines the log level for the bpmn stack traces. Default value: <code>DEBUG</code>.<br /> Possible values are: <code>ERROR, WARN, INFO, DEBUG, TRACE</code>. </td> </tr>
</table>
