How Do I Restore Attachments?

Before restoring Attachments with CopyStorm/Restore it may be useful to understand how Attachments are handled by Salesforce and how they are different from most tables. When a table in Salesforce contains a reference to another table is is almost always possible to know the type of table being referenced. For example, the Contact.AccountId field will always reference a record in the Account table. However, in the Attachment table, a number of reference fields are not so specific (e.g. Attachment.parentId) and can reference many built-in and all custom tables in Salesforce. This type of table is also known as “polymorphic” because they can “morph” into being a child of almost any type of table.

There is one primary rule to remember when restoring polymorphic table records:

  • Records in a polymorphic table can only be restored when they are referenced by their parent table.

If this is a bit confusing, here is a specific example for restoring Attachments related to Accounts:

Step 1: Choose the Account(s) that own Attachment(s)

Step 2: Uncheck the Restore Type Options “Insert” and “Update”

This informs CopyStorm/Restore to avoid inserting or updating Account records. The application will still find candidate records — this is necessary because the Attachments to be restored reference Accounts.

Step 3: Choose the Attachments Related List

The following screenshot illustrates CopyStorm/Restore’s state after steps 1 through 3 have been completed:

Step 4: Optionally Add Constraints to Control Which Attachments Are Restored

To restore a particular Attachment, constrain the search using SQL. This is rarely necessary due to Attachments being largely static once attached to an object.

Step 5: Run the Restore

CopyStorm/Restore will find the Accounts, decide nothing needs to change, and then restore the Attachments.