History Cleanup
In order to satisfy data protection laws or just for general storage management purposes Optimize provides an automated cleanup functionality. The cleanup is performed based on process/decision instance data and the criteria to decide about whether an instance is to be cleaned up is based on it’s end date and the configured time to live period.
Setup
Heads Up!
The cleanup is by default disabled, before enabling it though you should carefully consider what type of cleanup and what time to live period you want, otherwise historic instance data intended for analyis might get lost irreversibly.
The most crucial setting properties are ttl
and processDataCleanupMode
, their global default configuration is the following:
historyCleanup:
ttl: 'P2Y'
processDataCleanupMode: 'all'
ttl
- is the time to live period from which process/decision instances with an end date (or evaluationDate in case of decision instances) older than that period are picked up by the cleanup process.
The default value is 'P2Y'
, which means by default all instances older than 2 years at the point in time the cleanup is executed are cleaned up.
For details on the notation see the Configuration Description of the ttl property.
processDataCleanupMode
- determines what is deleted when a process instance is cleaned. The default value of 'all'
means the whole process instance is deleted.
For other options checkout the Configuration Description of the processDataCleanupMode property. Note that the previously described behavior doesn’t apply to decision instances since they will always be completely deleted.
To setup different ttl
s or different cleanup processDataCleanupMode
s you can also provide process specific settings using the perProcessDefinitionConfig
list and the process definition key.
historyCleanup:
ttl: 'P2Y'
processDataCleanupMode: 'all'
perProcessDefinitionConfig:
'MyProcessDefinitionKey':
ttl: 'P2M'
processDataCleanupMode: 'variables'
These settings overwrite the global values, are thus optional and so you are able to just override one of them for a certain process. In this particular sample the cleanup on process instances of the key 'MyProcessDefinitionKey'
would get cleaned up after 2 months instead of 2 years and on cleanup only their variables would get deleted instead of the whole instance.
For decision instances there is the perDecisionDefinitionConfig
list for specific ttl
setup.
historyCleanup:
ttl: 'P2Y'
processDataCleanupMode: 'all'
perDecisionDefinitionConfig:
'myDecisionDefinitionKey':
ttl: 'P3M'
Another property you can set is the cronTrigger
which defines at what time the cleanup should run.
historyCleanup:
cronTrigger: '0 1 * * *'
The default is 1AM every day. To avoid any impact on daily business it is recommended to schedule the cleanup outside of business hours. See the Configuration Description for further insights into this property and it’s format.
Once you have configured the history clean up, you can activate it with:
historyCleanup:
enabled: true
Setting this property to true
ultimately enables the cleanup process to be run on the next cron trigger after a full restart of the Optimize application
Example
Here is a sample of how a complete config might look like:
historyCleanup:
enabled: true
cronTrigger: '0 1 * * 0'
ttl: 'P1Y'
processDataCleanupMode: 'variables'
perProcessDefinitionConfig:
'VeryConfidentProcess':
ttl: 'P1M'
processDataCleanupMode: 'all'
'KeepTwoMonthsProcess':
ttl: 'P2M'
perDecisionDefinitionConfig:
'myDecisionDefinitionKey':
ttl: 'P3M'
In the following a brief summary is given of what presented configuration does:
- The cleanup is enabled.
- It is scheduled to run every sunday at 1AM.
- The global
ttl
applied to all process instances stored in Optimize is 1 year. - The global cleanup
processDataCleanupMode
performed on all process instances that passed thettl
period is to just clear their variables. - There is a process specific setup for
'VeryConfidentProcess'
that has a specialttl
of 1 month to be used for it’s process instances and those will be deleted completely due the'all'
processDataCleanupMode configured for them. - There is another process specific setup for
'ToKeepForeverProcess'
that has a specialttl
of 2 months. - And finally there is a decision defintion specifc setup for
myDecisionDefinitionKey
that has a specialttl
of 3 months.