Symptom: While making SharePoint API calls from AgilePoint server to SharePoint Online, you might occasionally notice a HTTP error code 429 due to which your workflow is suspended on the SharePoint activity however it works fine without any changes when the process is resumed.
Reason: SharePoint Online uses throttling to maintain optimal performance and reliability of the SharePoint Online service. Throttling limits the number of user actions or concurrent calls (by script or code) to prevent overuse of resources.
That said, its rare for a user to get throttled in SharePoint Online. The service is robust, and its designed to handle high volume.
What happens when you get throttled in SharePoint Online?
When a user exceeds usage limits, SharePoint Online throttles any further requests from that user account for a short period. All user actions are throttled while the throttle is in effect.
- For requests that a user performs directly in the browser, SharePoint Online redirects you to the throttling information page, and the requests fail.
- For all other requests, including CSOM or REST calls, SharePoint Online returns HTTP status code 429 (“Too many requests”) or 503 (“Server Too Busy”) and the requests will fail.
If the offending process continues to exceed usage limits, SharePoint Online might completely block the process; in this case, you won’t see any successful requests and Microsoft will notify you of the block in the Office 365 Message Center.
Microsoft does not publish a hard limit for throttling and it varies based on the current load on the cluster.
Resolution: AgilePoint NX does provide an advanced setting to handle this as per the best practice defined by Microsoft. As of writing this article, this advanced setting is available in AgilePoint NX private cloud and OnPrem environments only.
Please add the below keys to enable it.
- Add the below property in em.settings.xml in the location “[AgilePoint WebApplication path]\AgilePointPortal\Modules\AgilePoint.Portal.Manage\Content”. If the property is already present and the value is false then change it to true.
<Property Type=”bool”>
<Name>EnableThrottlingSwitchInSharePoint</Name>
<Value>true</Value>
</Property>
2) Increment the value of ReleaseVersion key in [AgilePoint WebApplication path]\AgilePointPortal\web.config file.
3) Create Shared Variable as below :
Shared variable name : EnableThrottlingSwitchO365
Data type : Boolean
Value : True
After doing these changes user will be able to see the option as shown below in access token screen.