Repository navigation
Refresh SharePoint ACLs independently of content modification timestamps #720
Description
Problem
The custom SharePoint ingestion job retrieves current user/group permissions, but writing those permissions to Azure AI Search is gated by content freshness checks. Permission-only changes are therefore not reliably synchronized independently of content changes.
This requirement was raised for Qnity Wave 1. This issue concerns ACL synchronization only, not Purview sensitivity-label enforcement or document decryption.
Code evidence
Reviewed main at commit 75a2ef17779e634f3b3150f682c8669a7f928481:
- Current permissions are retrieved for the item.
- The item body is updated only when its modification timestamp is newer.
- Document-library files are skipped when their timestamp is not newer. This path prioritizes
fileSystemInfo.lastModifiedDateTimeover the service-level timestamp.
No independent ACL comparison/update path was identified in this flow. This is a code-level finding, not a reproduced customer incident. It does not assume that every permission operation leaves every timestamp unchanged.
Expected behavior
Synchronize effective SharePoint permissions to existing Search documents even when content timestamps are unchanged. Cover direct permission changes and changes inherited from parent scopes within the connector's supported permission model.
Prefer an ACL-only update path that updates metadata_security_user_ids and metadata_security_group_ids on every affected indexed document/chunk without downloading, chunking, or embedding unchanged content. Assess whether comparing permissions already fetched on scheduled runs is sufficient before introducing an additional change-tracking mechanism.
Acceptance criteria
- A permission grant or revocation is reflected in all affected indexed documents/chunks even when content timestamps remain unchanged.
- Inherited permission changes, including parent-scope changes and inheritance transitions supported by the connector, are covered.
- Revocations remove stale principals rather than only appending new ones.
- An empty ACL resulting from a successful lookup is distinguished from a failed permission lookup; failures are surfaced and are not treated as successful synchronization.
- Unchanged ACLs do not cause unnecessary writes or content reprocessing.
- Partial update failures are observable and retryable, and are not reported as complete synchronization.
- Automated tests cover unchanged timestamps with changed ACLs, grants, revocations, inherited changes, unchanged ACLs, and lookup/update failures.
- Document the synchronization cadence and supported scope/limitations.
References
- Microsoft Graph fileSystemInfo semantics
- Microsoft guidance for detecting changes and scanning permissions hierarchies
- Native SharePoint indexer permission synchronization: reference only; native-indexer capabilities do not automatically apply to this custom connector.
Activity
placerda commentedon Oct 27, 2026
Confirmed against the published ingestion v3.1.2 and current develop: unchanged item bodies and document-library files skip permission writes, and several Graph lookup failures were treated as empty ACLs.
The correction is implemented in Azure/agent-app-ingestion#358, with all CI checks passing. It reconciles supported ACLs on all affected documents/chunks without content reprocessing, reads complete effective file-permission pages, removes revoked principals and makes lookup/partial-update failures observable and retryable. Coordinated central documentation is staged in Azure/AI-Landing-Zones#167.
This issue remains open until the corrected ingestion runtime is released and the umbrella manifest pins it; the currently published combination does not yet include this fix.
placerda commentedon Oct 27, 2026
The correction is now merged into ingestion develop through Azure/agent-app-ingestion#358 at
1e838ae5bec7eeb02a78529469f8606f2a1818ee.The metadata-only v3.1.3 release PR is Azure/agent-app-ingestion#359 at
3d030d542cfb00d0712904b8c5f215f11b121dbd; all required release CI checks pass, including the main-branch guard, unit/frontend jobs and aggregate quality gate. Coordinated documentation remains in draft at Azure/AI-Landing-Zones#167 until runtime publication and the umbrella pin update.Implementation and release preparation are complete. No new tag, GitHub Release, image or Azure deployment has been published. The issue remains open to track shipment of the fix; current published ingestion is still v3.1.2.
placerda commentedon Oct 27, 2026
Shipped in Agent App Ingestion v3.1.3 and Agent Landing Zone v5.1.1.
Selected SharePoint items now reconcile supported user/group ACLs on existing documents and file chunks independently of content timestamps, applying grants and revocations without re-downloading or embedding unchanged content. Complete permission pagination, inherited file grants, confirmed Search merges and retryable failure handling are covered by regressions.
The ingestion maintained suite passes (1,015 tests and 10 subtests), as do the umbrella release checks and original foundation fingerprint gates. Coordinated documentation is merged and live: permission synchronization. Both repositories' develop branches are synchronized with their published releases.