An Azure search service with built-in artificial intelligence capabilities that enrich information to help identify and explore relevant content at scale.
For an indexed corpus that must honor SharePoint site groups, partition the sites across indexes for now and open an Azure support request to confirm whether the observed five-distinct-URL restriction can be raised; no public Microsoft documentation currently lists that restriction or a supported quota-increase procedure.
Status of the five-site restriction
Your direct indexing test provides a strong, reproducible service response: OperationNotAllowed when the index exceeds the service’s stated limit. However:
- The SharePoint ACL documentation does not list a five-value limit for
SharePointSiteUrl. - The published service-limits page does not list it as an adjustable quota.
- The documented SharePoint ACL limit of 1,000 entries is per file and concerns users/groups in an ACL, not distinct site URLs in an index.^1^
- ACL ingestion and SharePoint group enforcement remain preview features, which can be constrained or changed before general availability.^2^
Consequently, the available public material cannot establish whether five is an intended permanent limit, a preview safeguard, or a defect. It also does not document case sensitivity, slot persistence, or a way to reclaim a URL without recreating the index.
Supported architecture choices
1. Keep SharePoint site groups: shard the indexed corpus
If permissions depend on SharePoint Owners, Members, Visitors, or custom site groups, retain:
-
sharePointConnectorAppRegistration -
SharePointSiteUrlwithsharepointSiteUrl: true -
metadata_spo_site_urlmapped or projected onto every chunk -
UserIdsandGroupIds -
permissionFilterOption: "enabled"
These elements activate server-side SharePoint group resolution.^2^
Given the behavior you reproduced, keep each index within the reported limit and canonicalize URL casing before ingestion so the same site cannot consume multiple distinct values. Because deletion has not released slots in your testing, treat index recreation as the only demonstrated reset—not as documented product behavior.
A knowledge base can query multiple knowledge sources in one retrieval request; the engine generates subqueries and merges the results.^3^ The maximum is 10 knowledge sources per knowledge base on most paid tiers, while service-wide knowledge-source and index limits vary by tier.^4^ With approximately 30 indexes, multiple knowledge bases—or another fan-out layer—would still be required.
2. If SharePoint site groups are unnecessary: remove their configuration
SharePointSiteUrl is specifically used at query time to determine the site against which Azure AI Search resolves the caller’s SharePoint group memberships. The service then compares the resolved memberships with spg:-prefixed values in GroupIds.^1^
If your permissions can be represented entirely by:
- directly assigned Microsoft Entra users, and
- Microsoft Entra security or Microsoft 365 groups,
then create a new index without:
-
sharePointConnectorAppRegistration - the
sharepointSiteUrl: truefield - the
metadata_spo_site_urlmapping/projection
Keep ACL ingestion, UserIds, GroupIds, and permission filtering enabled. Microsoft Entra group membership is resolved through Microsoft Graph and does not require per-site SharePoint group resolution.^1^
You would lose authorization paths that depend on:
- SharePoint Owners/Members/Visitors groups
- custom SharePoint site groups
-
spg:permission entries
Also note that Microsoft Entra groups nested inside SharePoint groups aren't expanded even when SharePoint group support is enabled.^2^
Because removing this configuration removes the documented site-specific group-resolution operation, it should also remove that operation’s dependency on looking up the user in each site. However, the exact siteusers/getbyemail 404 behavior and its remediation are not documented in the available Microsoft material, so this should be validated on a new test index before redesigning the full corpus.
3. Consider a remote SharePoint knowledge source
For scenarios requiring the full SharePoint permission model, sensitivity labels, and built-in security trimming, Microsoft recommends a remote SharePoint knowledge source. It queries SharePoint through the Copilot Retrieval API under the caller’s identity, uses no Azure AI Search index, and can be scoped using URL filters.^5^
This avoids index sharding around indexed SharePointSiteUrl values, but it changes the architecture:
- content is retrieved live rather than replicated;
- only textual content is queried;
- the caller must be recognized by both the Azure and Microsoft 365 tenants;
- it remains a preview capability.
Indexer error reporting and escalation
Indexer execution status is designed to expose document key, operation name, message, details, and documentation link when available.^6^ Since this case collapses the actionable OperationNotAllowed response into Bad Request, configuration changes such as maxFailedItems will not correct the underlying rejection or improve its text.
Open an Azure support request and include:
- API version and region/tier.
- Sanitized index, indexer, skillset, and projection definitions.
- UTC timestamps and correlation/request IDs.
- Full direct-indexing 400 response showing
OperationNotAllowed. - Indexer execution-history response showing only
Bad Request. - Minimal reproduction using five accepted canonical URLs followed by the rejected next distinct URL.
- Evidence that deletion does not release a value and recreation does.
- A request to confirm:
- whether the limit is intentional;
- whether it is adjustable;
- whether case-sensitive permanent accounting is expected;
- whether the indexer should propagate the detailed service error.
Do not include access tokens, API keys, secrets, user identities, or tenant-specific URLs in the support package.^7^
References
- Query-time ACL and RBAC enforcement in Azure AI Search (preview)
- Use a SharePoint Indexer to Ingest Permission Metadata - Azure AI Search
- What is a knowledge source?
- Service limits in Azure AI Search
- Create a remote SharePoint knowledge source (preview) (rest)
- Indexer Errors and Warnings - Azure AI Search | Microsoft Learn
- Troubleshoot SharePoint permission filtering in Azure AI Search (preview)