BulkDeleteRequest Class
Applies To: Dynamics 365 (online), Dynamics 365 (on-premises), Dynamics CRM 2016, Dynamics CRM Online
Contains the data that’s needed to submit a bulk delete job that deletes selected records in bulk. This job runs asynchronously in the background without blocking other activities.
For the Web API use the BulkDelete Action.
Web API support for this message was added with December 2016 update for Microsoft Dynamics 365 (online) and December 2016 Service Pack for Microsoft Dynamics 365 (on-premises)
Namespace: Microsoft.Crm.Sdk.Messages
Assembly: Microsoft.Crm.Sdk.Proxy (in Microsoft.Crm.Sdk.Proxy.dll)
Inheritance Hierarchy
System.Object
Microsoft.Xrm.Sdk.OrganizationRequest
Microsoft.Crm.Sdk.Messages.BulkDeleteRequest
Syntax
[DataContractAttribute(Namespace = "https://schemas.microsoft.com/crm/2011/Contracts")]
public sealed class BulkDeleteRequest : OrganizationRequest
<DataContractAttribute(Namespace := "https://schemas.microsoft.com/crm/2011/Contracts")>
Public NotInheritable Class BulkDeleteRequest
Inherits OrganizationRequest
Constructors
Name | Description | |
---|---|---|
BulkDeleteRequest() | Initializes a new instance of the BulkDeleteRequest class. |
Properties
Name | Description | |
---|---|---|
CCRecipients | Gets or sets an array of IDs for the system users (users) who are listed in the Cc box of the email notification. Required. |
|
ExtensionData | Gets or sets the structure that contains extra data. Optional.(Inherited from OrganizationRequest.) |
|
Item[String] | Gets or sets the indexer for the Parameters collection.(Inherited from OrganizationRequest.) |
|
JobName | Gets or sets the name of an asynchronous bulk delete job. Required. |
|
Parameters | Gets or sets the collection of parameters for the request. Required, but is supplied by derived classes.(Inherited from OrganizationRequest.) |
|
QuerySet | Gets or sets an array of queries for a bulk delete job. Required. |
|
RecurrencePattern | Gets or sets the recurrence pattern for the bulk delete job. Optional. |
|
RequestId | Gets or sets the ID of an asynchronous operation (system job). Optional. (Inherited from OrganizationRequest.) |
|
RequestName | Gets or sets the name of the request. Required, but is supplied by derived classes.(Inherited from OrganizationRequest.) |
|
RunNow | This API supports the product infrastructure and is not intended to be used directly from your code. |
|
SendEmailNotification | Gets or sets a value that indicates whether an email notification is sent after the bulk delete job has finished running. Required. |
|
SourceImportId | Gets or sets the ID of the data import job. Optional. |
|
StartDateTime | Gets or sets the start date and time to run a bulk delete job. Optional. |
|
ToRecipients | Gets or sets an array of IDs for the system users (users) who are listed in the To box of an email notification. Required. |
Methods
Name | Description | |
---|---|---|
Equals(Object) | (Inherited from Object.) |
|
GetHashCode() | (Inherited from Object.) |
|
GetType() | (Inherited from Object.) |
|
ToString() | (Inherited from Object.) |
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 message privileges for the entity types being deleted. For a complete list of the required privileges, see BulkDelete message 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 doesn’t 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 the records in bulk 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 |
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 |
Examples
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.")
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.
See Also
BulkDeleteResponse
Microsoft.Crm.Sdk.Messages Namespace
Delete data in bulk
Sample: Bulk delete exported records
Sample: Bulk delete records that match common criteria
BulkDelete message privileges
How role-based security can be used to control access to entities in Microsoft Dynamics 365
How record-based security can be used to control access to records in Microsoft Dynamics 365
Return to top
Microsoft Dynamics 365
© 2016 Microsoft. All rights reserved. Copyright