Troubleshooting, Maintenance, and Performance
Where to look first
Start with the task result, not the log: it shows the plan, the operations attempted and the connector exception. Then raise logging for the relevant package in log4j2.properties and reproduce. The console is the fastest tool for inspection - object lookups, exports and imports, and running maintenance commands - and it works while the UI is unavailable.
Routine maintenance
Maintenance tasks keep the database healthy: pruning or archiving old task results and audit data, running the maintenance routines the version provides, and keeping the full-text/role index current so searches return accurate results. Partitions and indexes matter on large tables; the identity, audit and task tables grow forever if nothing prunes them.
Performance levers
- Prefer delta or optimized aggregation over full aggregation on large sources.
- Tune refresh scope; a full refresh of every identity every hour is rarely necessary.
- Size the JVM heap and garbage collection for the identity population, and check whether the bottleneck is CPU, heap or database.
- Watch for rules that call the database per identity - the classic N+1 pattern in a refresh.
Traps
- Raising global log level to DEBUG in production and filling the disk.
- Deleting audit or certification data with a manual SQL statement instead of the supported maintenance task, breaking referential integrity.
- Blaming the connector when the provisioning plan itself was wrong.
- Restarting to clear a problem without capturing the state needed to diagnose it.
Rule of thumb
Reproduce with a single identity and DEBUG logging, fix, then re-run the exact same task configuration so you know the change - not the environment - solved it.