Release Date: 18-Dec-18
This is a major feature and bug fix release. As always, existing CopyStorm configuration files are backwards compatible.
|15-Jan-18||Fix Oracle name generation bug for VIEWS with long (>30 characters) Salesforce names.
Recognized Oracle NLS_LENGTH_SEMANTICS and generate shorter VARCHAR when CHAR instead of BYTE.
|25-Jan-18||Fix managed package related metadata field permission backup for Profile and PermissionSet. Fix length calculation bug with use of Oracle NLS_LENGTH_SEMANTICS feature.|
|08-Feb-18||Fix error recovery for the REST API when Salesforce returns an UNKNOWN_EXCEPTION.|
Introduce Database Views
There are a number of SObject that Salesforce exposes as “tables” that are really views on other SObjects. Prime examples include:
- All Feed tables are really views into the common SObject FeedItem.
- The Salesforce table ActivityHistory is really just a combination of the Task and Event table. In fact, the content of ActivityHistory is not even readable by the Salesforce API.
- The Salesforce table AccountUserTerritory2View is really just a combination of three other tables.
In this CopyStorm update, CopyStorm will automatically use database views when possible. There are several advantages:
- Much less data will be copied from Salesforce for each table that becomes a database view.
- New Salesforce tables that were nearly impossible to copy (in the initial backup) for large Salesforce instances will now be available in the database.
Detect Long External Id Columns and Do Not Index
When an external Id column must be represented as a LOB type in the database, CopyStorm will not longer try and create an index on it.
Detect Failure HTTP Responses from Salesforce for Base64 Columns using REST
When Salesforce returns a Base64 column using REST the data is represented either in-line or as a hyperlink that contains the data. On rare occasions the hyperlink provided by Salesforce will fail with a HTTP response other than OK and not return correct body data. This CopyStorm version checks for this condition and reports an error.
Ignore Salesforce Tables That Do Not Support a SOQL Query
There are a handful of Salesforce tables that cannot be queried with SOQL. Previous versions of CopyStorm would create these tables but, since there is no way to query their data, the tables would always be empty. This class of table is no longer created in the database UNLESS a database view is registered with CopyStorm. A good example of where a database view is used because the corresponding Salesforce table is not queryable is ActivityHistory.
Work Around a Salesforce REST API “Feature”
The Salesforce REST API occasionally returns a hyperlink to attachment data that, when referenced, returns an HTTP 404 (not found) or 401 (security issue). “Occasionally “usually means once in every few 100,000 records (or more). CopyStorm now works around this “feature” by dynamically switching to the SOAP API when the REST API fails. In practice a user of CopyStorm will be unlikely to notice the switch because CopyStorm will “just work.”