CopyStorm/Restore 8.42.1

Release Date: 05-Sep-2018

This is a feature, bug fix, and Salesforce API version upgrade release. As always, existing CopyStorm/Restore configuration files are backwards compatible.

Patch Levels

05-Sep-18 Original Release
07-Sep-18 Fix a bug in converting API version 37 CustomObject records to version 42. Salesorce changed the rules.
17-Oct-18 Fix a race condition in the Set Pending button on the tracker database. Improve Restore tab load time.

Require Java 8

Until this release CopyStorm/Restore was built with Java 7 capability though the Windows version was distributed a with Java 8 runtime. Java 7 end of life was in April 2015 and no public updates have been issued since this date. Java 8 is a current long term supported version and many of the database vendors we use now require Java 8 to use their supplied driver libraries. Since all Linux release default to Java 8 (or higher — mostly higher) the impact on customers should be minor.

Boost the Speed for Writing to Salesforce

In our tests of this release we achieve sustained rates of over 100,000 Account records updated and 20,000 inserted per minute (sustained for over 1.6 million records). This was achieved by a performance improvement in the core restore code and by using up to 50 concurrent Salesforce writer threads.

Increase the Maximum Number of Salesforce Write Threads

This limit has increased from 20 to 50 offering a nearly linear performance boost just from this change.

Boost the Speed of Candidate Scanning

The algorithm for restore set candidate scanning was upgrade and now performance is improved in all cases and the rate at records are processed stays constant even for a restore of 10s of millions of records. In previous versions a performance degradation was encountered after 5-10 million records.

Add Support for Attachments Stored as Files

A Salesforce instance can optionally store Attachments as ContentDocument objects rather than as historical attachments. This adds a bit of complexity to the restore process (actually a lot of complexity) but this version of CopyStorm/Restore supports it. When an Attachment is listed as being stored as a File in the GUI it is really stored as a ContentDocument linked by the related list ContentDocumentLink. To restore Attachments stored as ContentDocuments simply select the ContentDocumentLinks related list object.

Add Support for ReportType

The ReportType meta data object can now be restored.

Add Support for CustomLabels

The CustomLabels meta data object can now be restored.

Add Support for All Types of Salesforce Settings Metadata Objects

Any metadata object under the general metadata class of Settings can be restore. Example: AccountSettings, ContractSettings, etc. (There are dozens of them).

Improve Recovery from Salesforce Communication Errors

In most cases, CopyStorm/Restore will silently recover when Salesforce returns a non-SOAP response because their servers are overloaded. When Salesforce servers are overloaded they often return a simple HTML page asking a user to try again rather than a proper SERVER_NOT_AVAILABLE SOAP error.

Detect When the Target Salesforce Changes

When a user changes Salesforce targets and the tracker database is non-empty then CopyStorm/Restore will warn the user and offer to clear the tracker databases. Since the content of a tracker database is always tied to a specific Salesforce target clearing it when the Salesforce target changes make a lot of sense.

Upgrade the Core Dependency Analysis Code

Most users will not notice this upgrade but the effects are:

  • All polymorphic type tables/columns are restorable and there is no need for special cases in the application.
  • The ordering of both candidate scans and restores and the decisions the application had to make are visible in the execution plan tab.
  • A future CopyStorm/Restore release will support polymorphic tables (like Attachment) as the primary table that drives a restore.