Powered By Blogger

Thursday, December 28, 2023

Dynamics CRM - Bulk Create, Update, Delete Records in Dynamics 365

 Many times, we need to perform job in a bulk programmatically. So, instead of calling each time the request to perform the operation we can do that by using "Service.Execute()" method which uses "ExecuteMultipleRequest()" method. It adds up all those single request and creates collection and then Execute at one go. So, instead of calling everytime "Service.Create()" or "Service.Update()" or "Service.Delete()". We can do that with single "Service.Execute()" method. Below is the code that shows, how you can do all these operations:

 // Bulk Delete Operation

        public static int BulkDelete(IOrganizationService service, EntityCollection entities)

        {

            // Create an ExecuteMultipleRequest object.

            var multipleRequest = new ExecuteMultipleRequest()

            {

                // Assign settings that define execution behavior: continue on error, return responses. 

                Settings = new ExecuteMultipleSettings()

                {

                    ContinueOnError = false,

                    ReturnResponses = true

                },

                // Create an empty organization request collection.

                Requests = new OrganizationRequestCollection()

            };


            // Add a DeleteRequest for each entity to the request collection.

            foreach (var entity in entities.Entities)

            {

                EntityReference entityRef = entity.ToEntityReference(); // Assuming each entity has an EntityReference property

                if (entityRef != null)

                {

                    DeleteRequest deleteRequest = new DeleteRequest { Target = entityRef };

                    multipleRequest.Requests.Add(deleteRequest);

                }

            }


            // Execute all the requests in the request collection using a single web method call.

            ExecuteMultipleResponse multipleResponse = (ExecuteMultipleResponse)service.Execute(multipleRequest);


            return multipleResponse.Responses.Count;

        }


 // Bulk Create Operation


        public static int BulkCreate(IOrganizationService service, List<Entity> recordsToCreate)

        {

            // Create an EntityCollection populated with the list of entities.

            EntityCollection entities = new EntityCollection(recordsToCreate)

            {

                // All the records must be for the same table.

                EntityName = recordsToCreate[0].LogicalName

            };


            // Instantiate CreateMultipleRequest

            CreateMultipleRequest createMultipleRequest = new CreateMultipleRequest()

            {

                Targets = entities,

            };


            // Send the request

            CreateMultipleResponse createMultipleResponse =

                        (CreateMultipleResponse)service.Execute(createMultipleRequest);


            return createMultipleResponse.Results.Count;

        }


 // Bulk Update Operation

        public static int BulkUpdate(IOrganizationService service, EntityCollection entities)

        {

            // Create an ExecuteMultipleRequest object.

            var multipleRequest = new ExecuteMultipleRequest()

            {

                // Assign settings that define execution behavior: continue on error, return responses. 

                Settings = new ExecuteMultipleSettings()

                {

                    ContinueOnError = false,

                    ReturnResponses = true

                },

                // Create an empty organization request collection.

                Requests = new OrganizationRequestCollection()

            };


            // Add an UpdateRequest for each entity to the request collection.

            foreach (var entity in entities.Entities)

            {

                UpdateRequest updateRequest = new UpdateRequest { Target = entity };

                multipleRequest.Requests.Add(updateRequest);

            }


            // Execute all the requests in the request collection using a single web method call.

            ExecuteMultipleResponse multipleResponse = (ExecuteMultipleResponse)service.Execute(multipleRequest);


            return multipleResponse.Responses.Count;

        }

No comments:

Post a Comment

Tools for Unit Testing in Power Platform