We need to create or update bulk data in ms crm 2016.
So We can use ExecuteMultipleRequest or For Each.
Which one is best approach performance wise.
For Bulk data I am created one WCF service which is used by another application.
I think ExecuteMultipleRequest could be a good option - see community.dynamics.com/.../executemultiplerequest-performance
Keep in mind though that there are some limitations: msdn.microsoft.com/.../jj863631.aspx
There are several constraints related to the use of the ExecuteMultipleRequest as described in the following list.
No recursion is allowed - ExecuteMultipleRequest cannot invoke ExecuteMultipleRequest. An ExecuteMultipleRequest found in the request collection will generate a fault for that request item.
Maximum batch size – there is a limit to how many requests can be added to a request collection. If that limit is exceeded, a fault is thrown before the first request is ever executed. A limit of 1000 requests is typical though this maximum amount can be set for the Microsoft Dynamics 365 deployment. The deployment setting for this limit is BatchSize.
Throttling of concurrent calls – for Microsoft Dynamics 365 (online) there is a limit of 2 concurrent ExecuteMultipleRequest executions per organization. If that limit is exceeded, a “Server Busy” fault is thrown before the first request is ever executed. For an on-premises deployment, throttling is not enabled by default. The deployment setting for this limit is ExecuteAsyncPerOrgMaxConnectionsPerServer.
Also, if you are using CRM Online, I suggest you keep in mind also the new API Limits that have been set: docs.microsoft.com/.../api-limits
Hope this helps you get started.
ExecuteMultipleRequest is the best options although there have some run time limitation refer below -
You can check the below article for the comparision.
You will find that ExecuteMultipleRequest is faster than the traditional approach.
Hope this helps.
Do you know what is maximum limit of ExecuteAsyncPerOrgMaxConnectionsPerServer for MS Dynamics CRM 2016
Check the below article, this settign is bydefault set to 2 for CMR online. For On-Premise this is not enabled.
Throttling of concurrent calls – for Dynamics 365 (online) there is a limit of 2 concurrent ExecuteMultipleRequest executions per organization. If that limit is exceeded, a “Server Busy” fault is thrown before the first request is ever executed. For an on-premises deployment, throttling is not enabled by default. The deployment setting for this limit is ExecuteAsyncPerOrgMaxConnectionsPerServer.
Business Applications communities