Skip to content

Refresh SharePoint ACLs independently of content modification timestamps #720

Closed

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:

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

Activity

  1. placerda commented on Oct 27, 2026

    @placerda
    ContributorAuthor

    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.

  2. placerda commented on Oct 27, 2026

    @placerda
    ContributorAuthor

    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.

  3. placerda commented on Oct 27, 2026

    @placerda
    ContributorAuthor

    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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    Projects

    No projects

      Milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions