Concepts rapidvalue.eu →

Reconciliation Engine

Expected vs Actual access, drift detection, and per-system policies.

Expected vs Actual — the central duality

The reconciliation engine compares two states for each identity on each system:

Drift is any case where Actual differs from Expected. For each attribute or assignment, the engine classifies the drift and decides how it should be resolved. Throughout the product this comparison is labelled Expected / Actual.

Three kinds of drift

Per-system policy: attribute drift action

How aggressively may the engine write back? This is set per system (ConnectorInstance):

Note

Production Entra (business_id="entra-rv-target") is ALWAYS flagged as a provisioning job, regardless of policy — this is a hardcoded gate. It ties into the "never touch serge@rapidvalue.be" security rule.

Unapproved grant policy

Set per system via unapproved_action:

Three-layer attribute propagation filter

When an identity attribute changes and must be propagated to targets, the engine runs a three-layer filter per account:

  1. Layer 1: IdentitySyncConfig.propagate_attributes (tenant-wide allowlist)
  2. Layer 2: ConnectorInstance.provisioning_field_mappings (per system, job_type=account_modify)
  3. Layer 3: AccountType.write_attributes (per-account-type allowlist)

If all three layers match → connector.update_identity(). If an attribute is not allowlisted in even one layer → silent skip (by design). If the target write itself fails → a provisioning job with status=FAILED in the Failed Jobs queue.


Further reading: