Release Date: 18-Jun-2019
This is a major feature, API, and bug fix release. As always, existing CopyStorm configuration files are backwards compatible.
|12-Jun-2019||Fix race condition in field history retention policy initialization.|
|25-Jun-2019||Add UNKNOWN_EXCEPTION analysis code. Trim spaces on usernames and passwords.|
|02-Jul-2019||Salesforce Summer’19 used a new MySQL reserved word (Release). Make UNKNOWN_EXCEPTION analysis an opt-in feature.|
|09-Jul-2019||Fix problem with command line -sfhost option.|
|15-Jul-2019||Small patch to support customer specified PostgreSQL search path. Fix for SQL/Server integrated security in batch mode.|
Upgrade to Summer’19 API
Salesforce’s Summer’19 API went GA last weekend and CopyStorm supports it with this release. The primary reason we upgraded to quickly is that Summer’19 API added a new data type, “json”, in a few event tables and to back these tables up CopyStorm needs Summer’19
Functionally, this release is almost identical to CopyStorm 9.44.1 and 9.44.2. CopyStorm 9.44.1 was a major feature release and CopyStorm 9.44.2 was a minor release that patches around a few problems with pre Summer’19 applications working on Summer’19 instances.
Support New Authentication Salesforce Methods
This release adds support for Salesforce authentication using:
- JWT – including support for:
- Connected Application authentication
- See the documentation here
Support User Supplied Key Store for Database Credentials
A few releases ago CopyStorm started supporting storage of credentials in 3rd party key stores (like Kedpass or Vault). This upgrade adds the same level of support for database credentials.
Major Upgrades to Field History Tracking
CopyStorm’s field history tracking now includes data retention policy management including to enforce different policies on a per table basis. For example, your general field history retention policy may be for 90 days while Accounts, Contacts, Opportunities, etc. are assigned a 365 day policy.
Upgraded Log Viewer Includes CopyStorm/Medic Job Logs
The CopyStorm internal logging system has been upgrade to also log CopyStorm/Medic jobs. The difference you will notice is a small pull-down menu for selecting between CopyStorm and CopyStorm/Medic log history.
Add Multi Org Protection Code
CopyStorm now records the Salesforce Organization Id it is backing up and will warn a user if the same backup database is used for multiple Salesforce orgs. It is hard to imagine a scenario where two Salesforce instances should be backed up to the same database tables.
Fix a KnowledgeArticle Backup Bug
Knowledge articles in a Archived state must be backed up using a technique different that those in Online or Draft state. CopyStorm now understands the magic.
Upgrade CopyForceTableField With New Properties
Customers asked for Salesforcefield properties nullability, autonumber, caseSensitive, and polymorphicForeignKey to be added to the field information cached by CopyStorm — so we did it.
Totally Ignore Compound Salesforce Fields
Salesforce compound fields like BillingAddress have never been backed up by Salesforce since their components (BillingStreet, BillingCity, etc.) are backed up in other columns. In this update a compound field will no longer appear in the backup database.
Warn a User When They Do Not Have the ViewAllData Permission
Ideally, the Salesforce credentials doing a backup will have the Salesforce ViewAllData permission. Without this permission data may be missed and, more importantly, Salesforce is force to run row security rules during a backup — often making a backup run more slowly.
Odd Summer’19 Features
In Summer’19 Salesforce introduced four new tables whose default label is more than 100 characters long. For example, the label for one table is:
- __MISSING LABEL__ PropertyFile – val AuthorizationFormConsent not found in section StandardHistoryLabel
You have to wonder who or what made this the primary label for a table?
Older CopyStorm databases have a couple of columns in the table CopyForceTabl limited to 64 characters and these need to be updated to process the problem tables properly. Note that all of the problem tables start with “AuthorizationForm”. Here is the SQL to fix the problem on various database flavors:
ALTER TABLE CopyForceTable ALTER COLUMN label NVARCHAR(128) NOT NULL;
ALTER TABLE CopyForceTable ALTER COLUMN labelPlural NVARCHAR(128) NOT NULL;
ALTER TABLE CopyForceTable ALTER COLUMN label TYPE VARCHAR(128);
ALTER TABLE CopyForceTable ALTER COLUMN labelPlural TYPE VARCHAR(128);
ALTER TABLE CopyForceTable MODIFY label NVARCHAR2(128);
ALTER TABLE CopyForceTable MODIFY labelPlural NVARCHAR2(128);
ALTER TABLE CopyForceTable MODIFY label VARCHAR(128);
ALTER TABLE CopyForceTable MODIFY labelPlural VARCHAR(128);