How to Cope with the new Dynamics 365 API Limits

27 February 2018
Daniel Cai

There was a sudden announcement last week from Microsoft Dynamics 365 Customer Engagement team about an upcoming API Limits. Further details about the changes are available on the Microsoft doc site. Based on the document, the limits will become effective on March 19, 2018. This blog post discusses what the impact might be for you as a customer of the Dynamics 365 platform, and the strategies and options available for you if you are potentially impacted.

To understand what this change means to you, here is my quick summary after reading the document (no warranty whatsoever on the accuracy of interpretation - Microsoft has actually changed the number more than a couple of times after this writing, the numbers below have not been updated, but the math should still work with the latest number, however the new numbers are no longer as generous as they were initially).

  • The limit is only about API service calls, typical application usage is not counted towards the limit (however it is worth noting that service calls made in CRM form's JavaScript code are subject to limit).
  • The limit is 60,000 service calls within 5 minutes, that basically translates to 200 service calls per second.
  • An ExecuteMultiple request is considered one service call. If you use a Batch Size of 200 in our CRM destination component, at the rate of 200 service calls per second, you would be looking at processing 40,000 records per second, that renders to a total of 144,000,000 records per hour which is a lot in my opinion.
  • The limit is per connection user.
  • This is a very generous limit based on the above math calculation, you will have to be very smart and super creative to actually reach and exceed the limit.
  • The only scenario that I can think you might reach the limit is, your business relies on some heavy integration to push a significant number of records using a software like our SSIS Integration Toolkit product.
  • If the above applies to you, your integration job might be impacted unless you have a way to throttle the service calls.
  • The key is the timing if this could potentially affect you as there is only roughly 3 weeks for you to react (as of today, unless Microsoft later decides to change the date). For enterprise clients, you typically have a change management process in place, which you may not have enough time to push through the changes to your production environment before the effective date (March 19, 2018).

My assessment is, for the majority of Dynamics 365 CE clients, this will not be much of an issue as we do not often see many of our clients processing 200 service calls per second for Dynamics 365 online due to the typical network latency constraints. The clients who might be impacted are those who run their integration on the Azure cloud in which case they might have a very low network latency, and they could push more than 40,000 records per second.

Now let's have a quick look of the options that you might have should you be concerned that you might be impacted, particularly for the users of our integration software or anything in the same nature.

  • We are working on a new build which will handle the situation when the limit is reached. This build should be ready in a week or two (most likely in a pre-release format first), and we will try to handle the situation gracefully so you don't need to do anything with your ETL process (Update Oct 3, 2019, please make sure that you are using our latest release, or at least v11.1 or above in which we handle the situation gracefully - there were actually a couple of server-side behavior changes made by Microsoft between this writing and Oct 3, 2019, for this reason, we ask our clients to stay current in order to work with the situation in a robust way).
  • If you can't wait for the new build, you may consider the following strategies which you can implement right away
    1. Consider reducing the number of concurrent threads in CRM destination component.
    2. To compensate the performance loss of action #1, you can increase your batch size in the destination component. However we don't typically recommend using an aggressive Batch Size, as doing so can easily cause service timeout errors (you may consider increasing your connection manager's Timeout setting to accommodate the extra time needed for the service calls though).
  • If you are still concerned that you may not get the optimal performance due to the limitation, you may consider creating additional connection managers that use different connection user accounts, as the limit is per connection user. Doing so, you will have to use multiple destination components in combination with SSIS BDD component to distribute the load evenly. It is a bit overkill in my opinion though.

In addition to my above assessment, I also recommend you check out the blog post written by a fellow MVP Gustaf Westerlund, he has done a great job in highlighting some of the potential impacts, and his discussion around marketing automation is actually very interesting.

I hope this is helpful.

Archive

December 2024 1 November 2024 3 October 2024 1 September 2024 1 August 2024 2 July 2024 1 June 2024 1 May 2024 1 April 2024 2 March 2024 2 February 2024 2 January 2024 2 December 2023 1 November 2023 1 October 2023 2 August 2023 1 July 2023 2 June 2023 1 May 2023 2 April 2023 1 March 2023 1 February 2023 1 January 2023 2 December 2022 1 November 2022 2 October 2022 2 September 2022 2 August 2022 2 July 2022 3 June 2022 2 May 2022 2 April 2022 3 March 2022 2 February 2022 1 January 2022 2 December 2021 1 October 2021 1 September 2021 2 August 2021 2 July 2021 2 June 2021 1 May 2021 1 April 2021 2 March 2021 2 February 2021 2 January 2021 2 December 2020 2 November 2020 4 October 2020 1 September 2020 3 August 2020 2 July 2020 1 June 2020 2 May 2020 1 April 2020 1 March 2020 1 February 2020 1 January 2020 1 December 2019 1 November 2019 1 October 2019 1 May 2019 1 February 2019 1 December 2018 2 November 2018 1 October 2018 4 September 2018 1 August 2018 1 July 2018 1 June 2018 3 April 2018 3 March 2018 3 February 2018 3 January 2018 2 December 2017 1 April 2017 1 March 2017 7 December 2016 1 November 2016 2 October 2016 1 September 2016 4 August 2016 1 June 2016 1 May 2016 3 April 2016 1 August 2015 1 April 2015 10 August 2014 1 July 2014 1 June 2014 2 May 2014 2 February 2014 1 January 2014 2 October 2013 1 September 2013 2 August 2013 2 June 2013 5 May 2013 2 March 2013 1 February 2013 1 January 2013 1 December 2012 2 November 2012 2 September 2012 2 July 2012 1 May 2012 3 April 2012 2 March 2012 2 January 2012 1

Tags