BulkDeleteRequest Class

Applies To: Microsoft Dynamics CRM 2013, Microsoft Dynamics CRM Online

Contains the data that is needed to submit a bulk delete job that deletes selected records in bulk. This job runs asynchronously in the background without blocking other activities.

Namespace: Microsoft.Crm.Sdk.Messages
Assembly: Microsoft.Crm.Sdk.Proxy (in Microsoft.Crm.Sdk.Proxy.dll)

Syntax

'Declaration
<DataContractAttribute(Namespace:="https://schemas.microsoft.com/crm/2011/Contracts")> _
Public NotInheritable Class BulkDeleteRequest
    Inherits OrganizationRequest
[DataContractAttribute(Namespace="https://schemas.microsoft.com/crm/2011/Contracts")] 
public sealed class BulkDeleteRequest : OrganizationRequest

Example

The following example shows how to use this message. For this sample to work correctly, you must be connected to the server to get an IOrganizationService interface. For the complete sample, see the link later in this topic.

// Create a condition for a bulk delete request.
// NOTE: This sample uses very specific queries for deleting records
// that have been manually exported in order to free space.
QueryExpression opportunitiesQuery = BuildOpportunityQuery();

// Create the bulk delete request.
BulkDeleteRequest bulkDeleteRequest = new BulkDeleteRequest();

// Set the request properties.
bulkDeleteRequest.JobName = "Backup Bulk Delete";

// Querying activities
bulkDeleteRequest.QuerySet = new QueryExpression[]
{
    opportunitiesQuery,
    BuildActivityQuery(Task.EntityLogicalName),
    BuildActivityQuery(Fax.EntityLogicalName),
    BuildActivityQuery(PhoneCall.EntityLogicalName),
    BuildActivityQuery(Email.EntityLogicalName),
    BuildActivityQuery(Letter.EntityLogicalName),
    BuildActivityQuery(Appointment.EntityLogicalName),
    BuildActivityQuery(ServiceAppointment.EntityLogicalName),
    BuildActivityQuery(CampaignResponse.EntityLogicalName),
    BuildActivityQuery(RecurringAppointmentMaster.EntityLogicalName)
};

// Set the start time for the bulk delete.
bulkDeleteRequest.StartDateTime = DateTime.Now;

// Set the required recurrence pattern.
bulkDeleteRequest.RecurrencePattern = String.Empty;

// Set email activity properties.
bulkDeleteRequest.SendEmailNotification = false;
bulkDeleteRequest.ToRecipients = new Guid[] { currentUserId };
bulkDeleteRequest.CCRecipients = new Guid[] { };

// Submit the bulk delete job.
// NOTE: Because this is an asynchronous operation, the response will be immediate.
_bulkDeleteResponse =
    (BulkDeleteResponse)_serviceProxy.Execute(bulkDeleteRequest);
Console.WriteLine("The bulk delete operation has been requested.");
         ' Create a condition for a bulk delete request.
' NOTE: This sample uses very specific queries for deleting records
' that have been manually exported in order to free space.
Dim opportunitiesQuery As QueryExpression = BuildOpportunityQuery()

' Create the bulk delete request.
Dim bulkDeleteRequest As New BulkDeleteRequest()

' Set the request properties.
bulkDeleteRequest.JobName = "Backup Bulk Delete"

' Querying activities
         bulkDeleteRequest.QuerySet = New QueryExpression() {
             opportunitiesQuery,
             BuildActivityQuery(Task.EntityLogicalName),
             BuildActivityQuery(Fax.EntityLogicalName),
             BuildActivityQuery(PhoneCall.EntityLogicalName),
             BuildActivityQuery(Email.EntityLogicalName),
             BuildActivityQuery(Letter.EntityLogicalName),
             BuildActivityQuery(Appointment.EntityLogicalName),
             BuildActivityQuery(ServiceAppointment.EntityLogicalName),
             BuildActivityQuery(CampaignResponse.EntityLogicalName),
             BuildActivityQuery(RecurringAppointmentMaster.EntityLogicalName)
         }

' Set the start time for the bulk delete.
bulkDeleteRequest.StartDateTime = Date.Now

' Set the required recurrence pattern.
bulkDeleteRequest.RecurrencePattern = String.Empty

' Set email activity properties.
bulkDeleteRequest.SendEmailNotification = False
bulkDeleteRequest.ToRecipients = New Guid() { currentUserId }
bulkDeleteRequest.CCRecipients = New Guid() { }

' Submit the bulk delete job.
' NOTE: Because this is an asynchronous operation, the response will be immediate.
         _bulkDeleteResponse = CType(_serviceProxy.Execute(bulkDeleteRequest), 
             BulkDeleteResponse)
Console.WriteLine("The bulk delete operation has been requested.")

Remarks

Message Availability

For this message to work, the caller must be connected to the server.

Usage

Pass an instance of this class to the Execute method, which returns an instance of the BulkDeleteResponse class.

Privileges and Access Rights

To perform this action, the caller must have read access rights on the entity records that are specified in the request class. The caller must also have Delete Privileges for the entity types being deleted. For a complete list of the required privileges, see BulkDelete Privileges.

Notes for Callers

By default, a system administrator has the BulkDelete privileges for bulk deletions. Other users must be granted the BulkDelete privileges before they can perform a bulk deletion.

When a record is deleted, all its child records are also deleted. The entire deletion fails if the caller does not have delete privileges or access rights to perform bulk deletions for any of these records.

The deletion order of the related records depends on the cascade configuration for each entity relationship. For a description of how actions on a parent record can affect related records, see Entity Relationship Behavior.

Supported Entities

You can delete in bulk the records of an entity that supports the BulkDeleteRequest message, including custom entities.

The following table shows the default entities that support this message. For the listed entities, the caller must be connected to the server for this message to be available.

Entity Availability

account

Server

activitymimeattachment

Server

annotation

Server

annualfiscalcalendar

Server

appointment

Server

asyncoperation

Server

attributemap

Server

bulkdeleteoperation

Server

bulkoperation

Server

businessunit

Server

businessunitnewsarticle

Server

calendar

Server

campaign

Server

campaignactivity

Server

campaignresponse

Server

columnmapping

Server

competitor

Server

connection

Server

connectionrole

Server

connectionroleobjecttypecode

Server

constraintbasedgroup

Server

contact

Server

contract

Server

contractdetail

Server

contracttemplate

Server

customeraddress

Server

customeropportunityrole

Server

customerrelationship

Server

discount

Server

discounttype

Server

duplicaterule

Server

duplicaterulecondition

Server

email

Server

equipment

Server

fax

Server

fieldpermission

Server

fieldsecurityprofile

Server

fixedmonthlyfiscalcalendar

Server

goal

Server

goalrollupquery

Server

import

Server

importdata

Server

importentitymapping

Server

importfile

Server

importjob

Server

importmap

Server

incident

Server

incidentresolution

Server

invoice

Server

invoicedetail

Server

isvconfig

Server

kbarticle

Server

kbarticlecomment

Server

kbarticletemplate

Server

lead

Server

letter

Server

list

Server

lookupmapping

Server

mailmergetemplate

Server

metric

Server

monthlyfiscalcalendar

Server

opportunity

Server

opportunityclose

Server

opportunityproduct

Server

orderclose

Server

ownermapping

Server

phonecall

Server

picklistmapping

Server

pluginassembly

Server

plugintype

Server

pricelevel

Server

principalobjectattributeaccess

Server

processsession

Server

product

Server

productpricelevel

Server

publisher

Server

publisheraddress

Server

quarterlyfiscalcalendar

Server

queue

Server

queueitem

Server

quote

Server

quoteclose

Server

quotedetail

Server

recurrencerule

Server

recurringappointmentmaster

Server

relationshiprole

Server

relationshiprolemap

Server

report

Server

reportcategory

Server

reportentity

Server

reportvisibility

Server

resourcespec

Server

role

Server

rollupfield

Server

salesliterature

Server

salesliteratureitem

Server

salesorder

Server

salesorderdetail

Server

savedquery

Server

savedqueryvisualization

Server

sdkmessageprocessingstep

Server

sdkmessageprocessingstepimage

Server

sdkmessageprocessingstepsecureconfig

Server

semiannualfiscalcalendar

Server

service

Server

serviceappointment

Server

serviceendpoint

Server

sharepointdocumentlocation

Server

sharepointsite

Server

site

Server

solution

Server

subject

Server

systemform

Server

task

Server

team

Server

template

Server

territory

Server

transactioncurrency

Server

transformationmapping

Server

transformationparametermapping

Server

uom

Server

uomschedule

Server

userentityinstancedata

Server

userentityuisettings

Server

userform

Server

userquery

Server

userqueryvisualization

Server

webresource

Server

webwizard

Server

wizardaccessprivilege

Server

wizardpage

Server

workflow

Server

workflowdependency

Server

workflowlog

Server

Inheritance Hierarchy

System.Object
   Microsoft.Xrm.Sdk.OrganizationRequest
    Microsoft.Crm.Sdk.Messages.BulkDeleteRequest

Thread Safety

Any public static (Shared in Visual Basic) members of this type are thread safe. Any instance members are not guaranteed to be thread safe.

Platforms

Development Platforms

Windows Server 2008, Windows Server 2012, Windows 7 (All Versions), Windows 8 (All Versions)

Target Platforms

Windows Server 2008, ,Windows Server 2012, ,Windows 7 (All Versions),

Change History

See Also

Reference

BulkDeleteRequest Members
Microsoft.Crm.Sdk.Messages Namespace
BulkDeleteResponse

Other Resources

Delete Data in Bulk in Microsoft Dynamics CRM
Sample: Bulk Delete Exported Records
Sample: Bulk Delete Records That Match Common Criteria
BulkDelete Privileges
How Role-Based Security Can Be Used to Control Access to Entities in CRM
How Instance-Based Security Can Be Used to Control Access to Entity Instances (Records) in CRM

Send comments about this topic to Microsoft.
© 2013 Microsoft Corporation. All rights reserved.