Using this we can create/update/delete bunch of records at a time. It avoids calling OrgService.Create or Update or Delete every time.
This has been added to the Microsoft Dynamics CRM 2011 Update Rollup 12, it is available from SDK 5.0.13. Here is reference MSDN URL http://msdn.microsoft.com/en-us/library/jj863631.aspx
Default max batch size is 1000, that means Using this you can create/update/delete up to 1000 records only at a time.
Here are sample code blocks for bulk Create, Update and Delete
/// <summary> /// Call this method for bulk Create /// </summary> /// <param name="service">Org Service</param> /// <param name="entities">Collection of entities to Create</param> public static void BulkCreate(IOrganizationService service, DataCollection<Entity> 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 CreateRequest for each entity to the request collection. foreach (var entity in entities) { CreateRequest createRequest = new CreateRequest { Target = entity }; multipleRequest.Requests.Add(createRequest); } // Execute all the requests in the request collection using a single web method call. ExecuteMultipleResponse multipleResponse = (ExecuteMultipleResponse)service.Execute(multipleRequest); } /// <summary> /// Call this method for bulk update /// </summary> /// <param name="service">Org Service</param> /// <param name="entities">Collection of entities to Update</param> public static void BulkUpdate(IOrganizationService service, DataCollection<Entity> 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 UpdateRequest for each entity to the request collection. foreach (var entity in 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); } /// <summary> /// Call this method for bulk delete /// </summary> /// <param name="service">Org Service</param> /// <param name="entityReferences">Collection of EntityReferences to Delete</param> public static void BulkDelete(IOrganizationService service, DataCollection<EntityReference> entityReferences) { // 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 entityRef in entityReferences) { 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); }