## TL;DR
Reconcile counts before you trust any review built on this population, because a partial sync produces a review that looks complete and is not. Compare the user count in the identity provider with the count in the target application and in the HR source, then open the SCIM provisioning logs for the gap window and fix the specific errors, usually a missing required attribute or a duplicate match. Re-run the sync, recount, and only release the review when the three counts agree or every difference is explained by name.

```text
quarterly access review report missing users: SCIM sync failed with error fix
```

## Use this when
- The review population is smaller than the directory or HR headcount for the same group.
- Specific departments or new joiners are absent from the report.
- Provisioning logs show errors during the days before the review was built.

## Not for this skill when
- Users are missing because they were terminated or excluded by design. Document the exclusion instead of resyncing them back.
- The report itself filters wrongly while the app population is right. Fix the report filter.

## Steps
1. Write down the three counts for the same population definition: HR source, identity provider group and target application users, all taken on the same day. Verify: three dated counts exist and the size of the gap is explicit.
2. Open the SCIM provisioning or sync logs for the target application covering the gap window and group the errors by message, noting the top error and how many users it covers. Verify: errors are grouped with counts instead of read one by one.
3. Open two affected user records in the source and check the attributes the sync requires, such as a unique external identifier, email form and manager, against the application requirements. Verify: the failing attribute or match rule is named for the sampled users.
4. Fix the source data or the attribute mapping for that error class, for example populating the identifier in HR or correcting the matching rule from a display name to the stable identifier. Verify: a corrected sample user passes a provisioning preview or test sync.
5. Re-run the sync for the affected scope, watch the error count for the fixed class fall to zero, and confirm previously missing users now exist in the application in the correct state. Verify: sampled missing users are present and active as expected.
6. Recount the three populations, list any remaining differences by name with a reason for each, and attach that reconciliation to the review before it is released. Verify: the reconciliation shows agreement or a named, explained remainder.
7. Add a pre-review population check to the runbook so future cycles compare counts a week before reviewers start, not after they finish. Verify: the runbook gains a dated count check step with an owner.

## Why it happens
SCIM syncs fail quietly at the edges: most users flow through, a minority bounce on one bad attribute, and the totals drift a little further each cycle. A review generated from the target application inherits every one of those gaps while looking authoritative. Count reconciliation across the three systems is the only reliable detector, and the provisioning log, grouped by error, almost always reduces the gap to one or two fixable causes such as a changed identifier or a required field HR stopped sending.

## Variants and edge cases

### access review missing new joiners from report
The joiner phrasing. New joiners are the canary for sync failures because they depend on the create path that existing users no longer use.

### SCIM provisioning errors users not created in app
The log phrasing. Group errors by message first; fixing the largest class usually restores most of the population.

### Okta or Entra provisioning sync partial failure before audit
The provider phrasing. Run the reconciliation before the audit snapshot, since auditors will compare against HR themselves.

Edge cases to check before closing the review cycle:
- Users on leave or with future start dates may sync as suspended by design. Match the population definition before counting them as errors.
- A matching rule based on email breaks when addresses change format. Prefer the stable employee identifier as the match key.
- Deletes propagate too. A resync after fixing creates can also remove users the source has dropped, so warn reviewers before a big corrective sync.

Compatibility: SCIM provisioning in Microsoft Entra ID and Okta, HR driven user feeds, application user populations used for access reviews.

## Provenance

Resolved from the public thread: https://vectle.com/posts/pst_M1YvdXPUkNSQUsIBfokwvA
