CopyStorm Snapshot System Overview

CopyStorm’s Snapshot System creates tamper resistant snapshots of Salesforce records under conditions that are specified by a customer. Examples:

  • Snapshot all deleted records.
  • Snapshot modifications to closed Opportunity records.
  • Snapshot modifications to Case records where the custom file archiveStatus__c is set to Active or Continuous.
  • Snapshot all changes to Account and Contact records.
  • Snapshot all changes made to Contact records by User

As you may suspect, the conditions that can be specified to trigger the snapshot of a record can be quite rich.

Use Cases

There are several broad situations where a CopyStorm Snapshot is a great choice.

Deleted Record Retention — Recycle Bin

By default, CopyStorm creates one snapshot — the Default Recycle Bin. The CopyStorm recycle bin is similar to the Salesforce recycle bin but with many features unavailable within Salesforce.

  • Any type of record can be snapshot — even those not supported by the Salesforce recycle bin.
  • The recycle bin can keep deleted records forever (or any other specified duration)
  • Data retention policies can be applied on per table basis.  For example, it is easy to tell the system that Accounts, Contacts, Cases, and Opportunities should be snapshot forever while other snapshot records should be deleted after 90 days.

In addition to a record’s data, the snapshot system will remember the field definitions in place at the time that the record version is added to the snapshot.

Permanent Record Deletion in Salesforce

Sometimes it makes sense to delete old records from Salesforce but the records still need to be kept around “just in case”.  This is easily achievable with a CopyStorm snapshot.

  • Define a new CopyStorm snapshot with a filter describing the records that should be snapshot.
  • Run the snapshot by hand.  This will scan existing Salesforce records and snapshot those that meet the filter.
  • Delete the snapshot records in Salesforce.

The snapshot data can be retrieved using the CopyStorm Snapshot Explorer or by running your own SQL queries.

Show Snapshot Records in Salesforce

Once records have been stored in a CopyStorm Snapshot, a common use case is to display the snapshot records in the Salesforce GUI. If you have technical staff with the required skills, this is a fairly simple task.

  • Create REST Web Services for querying a CopyStorm Snapshot. You can host the web services in the container of your choice.
  • Craft a handful of Salesforce lightning components that use the web services.
  • Add the lightning components to Salesforce pages.

If this sounds too complex, our reference implementation based on Apache/Tomcat can get you started (contact for the status of our reference implementation).

Meet Compliance Requirements

The original motivation for CopyStorm Snapshot came from a customer.

We have hundreds of active lawsuits at any given point in time and we need to snapshot all changes to related Salesforce records.

A CopyStorm snapshot can be used to solve this problem by creating a new snapshot that contains a filter to define the criteria under which records should be snapshot.  If this snapshot is activated, CopyStorm will automatically apply the filter to records as they are backed up and snapshot them if they meet the filter criteria. Examples:

  • Snapshot all changes to Contracts associated with Account “Acme Industries” that occur after 2019-01-01.
  • Snapshot all email communications with Contacts working for “Acme Industries” and any emails to the domain “”.

To assist compliance, snapshot records will be tamper resistant.  Any tampering will be detectable because it will cause the computed fingerprint associated with a record to change. Records can be made tamper proof if an snapshot’s database protections are set to write-only.

Implementation Details

CopyStorm Snapshot is implemented as a set of documentation tables that are automatically created and maintained by CopyStorm. There is nothing a user has to do to create or maintain the tables — they are created on first use of the snapshot system and maintained by CopyStorm.

Like other other CopyStorm tables, the schema is documented and the tables are directly queryable by customers. However, unlike other CopyStorm tables, you may need a little help constructing queries since most of the data for snapshot records is stored as XML. The good news: CopyStorm’s Snapshot Explorer can be used to easily generated base SQL queries which a customer can modify for their specific needs (We have a hard time remembering how to construct XML based queries for databases too!).