Purge Obsolete Audit Information

If reconciliation audit volumes grow "excessively" large, any subsequent reconciliations, as well as queries to audit tables, can become "sluggish". In a deployment with limited resources, a lack of disk space can affect system performance.

You might already have restricted what is logged in your audit logs by setting up filters, as described in "Filter Audit Data". You can also use specific queries to purge reconciliation audit logs, or you can purge reconciliation audit entries older than a specific date, using timestamps.

IDM provides a sample purge script, autoPurgeRecon.js, in the bin/defaults/script/audit directory. This script purges reconciliation audit log entries only from the internal repository. It does not purge data from the corresponding JSON files or external repositories.

To purge reconciliation audit logs on a regular basis, set up a schedule. A sample schedule is provided in openidm/samples/example-configurations/schedules/schedule-autoPurgeAuditRecon.json. You can change that schedule as required, and copy the file to the conf/ directory of your project, in order for it to take effect.

The sample purge schedule file is as follows:

   "enabled" : false,
   "type" : "cron",
   "schedule" : "0 0 */12 * * ?",
   "persisted" : true,
   "misfirePolicy" : "doNothing",
   "invokeService" : "script",
   "invokeContext" : {
      "script" : {
         "type" : "text/javascript",
         "file" : "audit/autoPurgeAuditRecon.js",
         "input" : {
            "mappings" : [ "%" ],
            "purgeType" : "purgeByNumOfReconsToKeep",
            "numOfRecons" : 1,
            "intervalUnit" : "minutes",
            "intervalValue" : 1

For information about the schedule-related properties in this file, see Schedule Synchronization.

Beyond scheduling, the following parameters are of interest for purging the reconciliation audit logs:


Input information. The parameters below specify different kinds of input.


An array of mappings to prune. Each element in the array can be either a string or an object.

Strings must contain the mapping(s) name and can use "%" as a wild card value that will be used in a LIKE condition.

Objects provide the ability to specify mapping(s) to include/exclude and must be of the form:

      "include" : "mapping1",
      "exclude" : "mapping2"


The type of purge to perform. Can be set to one of the following values:


Uses the deleteFromAuditReconByNumOf function and the numOfRecons config variable.


Uses the deleteFromAuditReconByExpired function and the config variables intervalUnit and intervalValue.


The number of recon summary entries to keep for a given mapping, including all child entries.


The type of time interval when using purgeByExpired. Acceptable values include: minutes, hours, or days.


The value of the time interval when using purgeByExpired. Set to an integer value.

Read a different version of :