Repository navigation
Service prioritization for a migration platform: is this the right route, and how does it work? #11067
Description
Hi,
We run a migration platform that moves document archives of accounting firms in the Netherlands into SharePoint Online. It writes through Microsoft Graph, app-only, with one multitenant app registration that each customer consents to. Our customers are small tenants, usually under 1,000 licenses.
We consistently run into the per-app limits: 1,250 resource units per minute and 1,200,000 per 24 hours. One document costs us about 5 resource units (a GET, an upload and a fields PATCH), so we top out at roughly 250 documents per minute and 240,000 per day per tenant. A firm with a million documents therefore needs more than four days, while customers want to move over one weekend. We honor Retry-After, decorate our traffic with a NONISV User-Agent, and run in the evenings and weekends.
As far as we can tell, service prioritization in SharePoint is the only realistic and supported option for us: a second app registration is explicitly discouraged, and the migration guide says throttling cannot be lifted through support. Is that right, or is there another route we should look at?
If service prioritization is the right route, could you help us with these questions:
- Can a customer register a multitenant app (AppId homed in our tenant, consented in theirs) with
Add-SPOServicePrioritizationAppRegistration? - Is the Microsoft Graph metered API association (
Microsoft.GraphServices/accounts) also required? If so, in the customer's Azure subscription or in ours? - Does the
QuotaMultiplierraise both the 1-minute and the 24-hour per-app limits? Does it also raise the tenant-level limit of 18,750 resource units per 5 minutes? - "Billed for any requests above the regular application limits": measured per minute or per 24 hours?
- Which of these calls are Standard and which are Heavy: GET driveItem, PUT
.../content(small upload),createUploadSession, the chunk PUTs to theuploadUrl, PATCHlistItem/fields, GET.../content(download), delta with a token? - Is it available and billed for tenants in the EU? The Azure retail prices API only shows the "SharePoint APIs Extended Usage" meters for a US Gov location.
- How soon after registration does it take effect, and how can we verify that it is active?
Docs referenced:
- https://learn.microsoft.com/en-us/sharepoint/sharepoint-prioritization
- https://learn.microsoft.com/en-us/sharepoint/dev/general-development/how-to-avoid-getting-throttled-or-blocked-in-sharepoint-online
- https://learn.microsoft.com/en-us/sharepointmigration/sharepoint-online-and-onedrive-migration-speed
Thank you.
Activity
m365-agent-toolkit-assistant commentedon Oct 19, 2026
👋 Hi Tijn Kahmann (@Tijn1946),
Thank you for reporting this issue. Here is an AI-generated initial response:
Classification: By design — the reported per-app throttling limits are documented; this does not indicate a defect.
NONISV, User-Agent format.What to do now:
CreateMigrationJobsupports your archive and metadata requirements.Get-SPOServicePrioritizationAppRegistrations, then validate throughput and charges in a controlled run.Useful links:
Tijn1946 commentedon Oct 19, 2026
Thanks for the pointers. Two follow-ups for someone on the SharePoint team:
Thank you.
Ashlesha-MSFT commentedon Oct 21, 2026
Hi Tijn,
Thanks for providing the detailed scenario and questions.
The documentation confirms that SharePoint service prioritization supports a quota multiplier of 2×–10× and bills requests above regular application limits. However, the documentation does not explicitly clarify the multitenant app registration scenario, quota multiplier scope, billing details, API classifications, EU availability, or activation time.
I will tag the relevant SharePoint engineering/product team to help clarify these points and confirm the supported configuration.
References:
SharePoint service prioritization
SharePoint throttling guidance
Migration performance guidance
Tijn1946 commentedon Oct 21, 2026
Thanks Ashlesha. Could you also pass question 1 to the team: how and where do we register our migration app ID, as the ISV migration guide asks?