SBX - Search With Button

SBX - Forum Post Title

Bulk Data Creation in MS CRM 2016

Microsoft Dynamics CRM Forum

Abhishek Srivastava asked a question on 6 Aug 2018 8:28 AM
My Badges

Question Status

Verified

Hi Team,

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.

Thanks,

Abhishek Srivastava

Reply
Radu Chiribelea responded on 6 Aug 2018 8:43 AM
My Badges
Verified Answer

Hi Abhishek,

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

Run-time limitations

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.

Radu

Reply
Verified Answer

Hi Abhishek,

ExecuteMultipleRequest  is the best options  although there have some  run time limitation refer below -

msdn.microsoft.com/.../jj863631.aspx

docs.microsoft.com/.../use-executemultiple-improve-performance-bulk-data-load

Reply
Ravi Kashyap responded on 7 Aug 2018 10:00 PM
My Badges
Verified Answer

Hi Abhishek,

You can check the below article for the comparision.

www.magnetismsolutions.com/.../dynamics-crm-execute-multiple-performance-tests

You will find that ExecuteMultipleRequest is faster than the traditional approach.

Hope this helps.

Reply
Abhishek Srivastava responded on 13 Aug 2018 12:59 AM
My Badges

Do you know what is maximum limit of ExecuteAsyncPerOrgMaxConnectionsPerServer for MS Dynamics CRM 2016

Reply
Ravi Kashyap responded on 13 Aug 2018 1:05 AM
My Badges
Verified Answer

Hi Abhishek,

Check the below article, this settign is bydefault set to 2 for CMR online. For On-Premise this is not enabled.

- docs.microsoft.com/.../use-executemultiple-improve-performance-bulk-data-load

=========

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.

=========

Hope this helps.

Reply
Radu Chiribelea responded on 6 Aug 2018 8:43 AM
My Badges
Verified Answer

Hi Abhishek,

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

Run-time limitations

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.

Radu

Reply
Verified Answer

Hi Abhishek,

ExecuteMultipleRequest  is the best options  although there have some  run time limitation refer below -

msdn.microsoft.com/.../jj863631.aspx

docs.microsoft.com/.../use-executemultiple-improve-performance-bulk-data-load

Reply
Ravi Kashyap responded on 7 Aug 2018 10:00 PM
My Badges
Verified Answer

Hi Abhishek,

You can check the below article for the comparision.

www.magnetismsolutions.com/.../dynamics-crm-execute-multiple-performance-tests

You will find that ExecuteMultipleRequest is faster than the traditional approach.

Hope this helps.

Reply
Ravi Kashyap responded on 13 Aug 2018 1:05 AM
My Badges
Verified Answer

Hi Abhishek,

Check the below article, this settign is bydefault set to 2 for CMR online. For On-Premise this is not enabled.

- docs.microsoft.com/.../use-executemultiple-improve-performance-bulk-data-load

=========

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.

=========

Hope this helps.

Reply

SBX - Two Col Forum

SBX - Migrated JS