Ensemble Release Note Archive
Ensemble 2015.1
[Home] [Back] [Next]
InterSystems: The power behind what matters   
Class Reference   

New Features in Ensemble 2015.1
Ensemble 2015.1 and introduced the following new features and enhancements:
Compatibility Issues for Upgrades to Ensemble 2015.1
The following changes in this release may affect the operation of your existing system. Review these following issues before upgrading a previous instance of Ensemble.
New Global and Database Used to Store Credentials Passwords
When you create a new namespace, credentials passwords are stored in a secondary database, which is, by default, not accessible to user accounts. For most productions this does not create a compatibility issue because Ensemble provides access to the password when it is needed by the business host. This change provides increased protection for stored passwords. Note that InterSystems recommends that you encrypt any database containing credentials passwords.
There are some conditions where this change can cause a compatibility issue. This section describes these conditions and ways you can avoid problems.
Some Ensemble licenses limit the number of databases allowed. This new credentials database is counted towards the limit.
When you create a new namespace, Ensemble creates a secondary database and names it by appending SECONDARY to the globals database name. For example, if you create the INVENT namespace with the INVENTG database for globals and the INVENTR database for routines, Ensemble also creates the INVENTGSECONDARY database for credentials passwords. In previous releases, Ensemble stored the credentials password in the ^Ens.Conf.CredentialsD, but in this release, Ensemble stores credentials passwords in the global ^Ens.SecondaryData.Password and maps that global to the secondary database.
For existing namespaces, upgrading Ensemble does not create the new secondary database, but when you first access credentials, the passwords are moved to the new global. If you call the %Library.EnsembleMgr:CreateNewDBForSecondary() method, Ensemble creates the secondary database for credentials passwords, migrates the password to the new secondary database, and maps the ^Ens.SecondaryData.Password to the secondary database. You should only call the CreateNewDBForSecondary() method when the production has been stopped.
In most cases, these changes do not impact production code or accessing credentials through the management portal, but it does create the following compatibility issues:
If you are running an instance of HealthShare, it does not create the secondary database for credentials passwords unless you explicitly call the CreateNewDBForSecondary() method. Do not call this method for a namespace used in a HealthShare Information Exchange.
New Databases and Changes to Where Temporary Globals are Stored
The Runtime and JobStatus data is now stored in the global ^CacheTemp.EnsRuntimeAppData subscripted by namespace. In previous versions, this data was stored in the global ^Ens.RuntimeAppData. In addition, metrics data, which is used for display in the production monitor, is now stored in the global ^CacheTemp.EnsMetrics. In previous versions, this data was stored in the global ^Ens.Metrics. In most cases, these changes do not cause a compatibility issue, but you should ensure the following:
Since these globals are now stored in a non-journaled database, the values are not available to mirror members.
Some Ensemble licenses limit the number of databases allowed. This new database for temporary globals is counted towards the limit.
JDBC SQL Returns Large Objects as Streams instead of Strings
When using JDBC SQL adapters, stored Procedure large object (LOB) output parameters are now returned as streams. In previous versions, these output parameters were returned as strings, which caused errors when the LOB exceeded the maximum string size. You should modify any code that accesses these output parameters to handle streams instead of strings.
As a temporary workaround, you can set globals to return string values for these output parameters. But even with these globals set, if the size of the LOB exceeds the maximum string size, the output parameters are returned as streams.
To configure Ensemble to return LOB output parameters as strings when size permits, set one of the following globals to 1:
Lookup Table Import and Export Format Changed to be Compatible with Studio
The Ensemble portal Import and Export buttons now use the same file format as Studio. In previous versions of Ensemble the portal export format was incompatible with the Studio export format.
If you exported a lookup table with the portal from a previous version of Ensemble, you must use the Import Legacy button on Ensemble 2015.1 or later to import it. If you are exporting a lookup table from Ensemble 2015.1 or later and intend to import it with an earlier version of Ensemble, you must import it on the earlier version using Studio; you cannot use the portal import.
Deleting X12 Objects Deletes Child Objects
In previous releases, deleting an X12 object would not delete its child objects. In this release, when you delete an X12 object, all its child objects are deleted.
DTL foreach Error Reported Correctly
Under some circumstances in previous releases, a Data Transformation would not report an error if you included the iterator key within the parentheses in a foreach. This error is now correctly reported.