Retrieves the list of individual objects that have been deleted within the given timespan for the specified object.
GetDeletedResult = sfdc.getDeleted(string sObjectType dateTime startDate dateTime EndDate);
Use getDeleted() for data replication applications to retrieve a list of object instances that have been deleted from your organization’s data within the specified timespan. The getDeleted() call retrieves a GetDeletedResult object that contains an array of DeletedRecord objects containing the ID of each deleted object and the date/time (Coordinated Universal Time (UTC) time zone) on which it was deleted. Be sure to read Data Replication before using getDeleted() in your client applications. (For information on IDs, see ID Field Type.)
As of release 8.0, the getDeleted() call respects the user’s sharing model.
When replicating deleted objects, consider the following rules and guidelines:
5000 * number of licenses in the organization
For example, an organization with 1,000 licenses could have up to 5,000,000 (five million) records in the delete log before any purging took place. If purging has been performed before your getDeleted() call is executed, an INVALID_REPLICATION_DATE error is returned. If you get this exception, you should do a full pull of the table.
You can replicate deleted objects using the following basic steps for each object:
A client application likely performs other tasks associated with data replication operations. For example, if an opportunity is closed, a client application might run a new revenue report. Similarly, if a task is completed, the process might log this in another system.
private void getDeletedSample() {
try {
// You can use the timestamp from the service for a known point in time
Calendar serverTime = binding.getServerTimestamp().getTimestamp();
// Create a start time value for the call
GregorianCalendar startTime = (GregorianCalendar) serverTime.clone();
// Create an end time value for the call
GregorianCalendar endTime = (GregorianCalendar) serverTime;
// Subtract 5 mins from the server time so that we have a valid time frame.
// You can use just about any timespan you want, 5 minutes is arbitrary
endTime.add(GregorianCalendar.MINUTE, -5);
System.out.println("Checking deletes at: " + startTime.getTime().toString());
GetDeletedResult gdr = binding.getDeleted("Contact", startTime, endTime);
// Check the number of records contained in the results, if more that 0,
// then something was deleted in the 5 minute span
if (gdr.getDeletedRecords() != null && gdr.getDeletedRecords().length > 0) {
for (int i=0;i<gdr.getDeletedRecords().length;i++) {
System.out.println(gdr.getDeletedRecords(i).getId() + " was deleted on "
+ gdr.getDeletedRecords(i).getDeletedDate().getTime().toString());
}
} else {
System.out.println("No deletions from contacts in the last 5 minutes.");
}
} catch (Exception ex) {
System.out.println("\nException caught, error message was: \n" + ex.getMessage());
}
}
private void getDeletedSample()
{
DateTime endTime = binding.getServerTimestamp().timestamp;
DateTime startTime = endTime.AddMinutes(-5));
sforce.GetDeletedResult gdr = binding.getDeleted("Contact", startTime, endTime);
if (gdr.deletedRecords.Length> 0)
{
for (int i=0;i<gdr.deletedRecords.Length;i++)
{
Console.WriteLine(gdr.deletedRecords[i].id + " was deleted on "
+ gdr.deletedRecords[i].deletedDate.ToString());
}
}
else
{
Console.WriteLine("No deleted contacts between " + startTime.ToString() +
" and " + endTime.ToString() );
}
}
| Name | Type | Description |
|---|---|---|
| sObjectTypeEntityType | string | Object type. The specified value must be a valid object for your organization. See sObject. |
| startDate | dateTime | Starting date/time (Coordinated Universal Time (UTC)—not local— timezone) of the timespan for which to retrieve the data. The API ignores the seconds portion of the specified dateTime value (for example, 12:30:15 is interpreted as 12:30:00 UTC). |
| endDate | dateTime | Ending date/time (Coordinated Universal Time (UTC)—not local— timezone) of the timespan for which to retrieve the data. The API ignores the seconds portion of the specified dateTime value (for example, 12:35:15 is interpreted as 12:35:00 UTC). |
There are record limits on the result GetDeletedResult:
You can correct the error by choosing start and end dates that are closer together.