Dodeca Version 7.0.0
May 27, 2016 - Build 5479
This version of the Dodeca Framework uses the .NET Framework, version 2.0, Service Pack 1 and higher on the desktop. The components used in this version of Dodeca are SpreadsheetGear 2012 (7.4.7.104), NetAdvantage 2011, Volume 1 (11.1.20111.2042), Aspose.Cells 8.8.0.0, Syncfusion Essential Studio 11.3035.0.30, and GdPicture.NET 11.0.6.
*Upgraded from SpreadsheetGear 2012 7.4.2.102 to 7.4.7.104.
**Upgraded from Aspose.Cells 8.2.0.0 to 8.8.0.0
*Upgraded from SpreadsheetGear 2012 7.1.2.150 to SpreadsheetGear 2012 7.4.2.102.
This version of Dodeca has two server-side services that run inside a Java Application Server. The Dodeca service is supported and tested on Java 1.6. The Dodeca-Essbase service for all Essbase versions prior to, and including, Essbase 11.1.1.3 are supported and tested on Java 1.5. The Dodeca-Essbase service for all Essbase versions 11.1.1.4 and higher are supported and tested on Java 1.6. Both services are known to run on Java 1.7, although extensive testing has not been performed on that Java version.
Aspose.Cells is used to convert an Excel file to a PDF. When a view template contains a cell with subscripting or superscripting, additional spaces were being inserted before the sub/superscript during the conversion. Since the extraneous spaces were contained in the PDF, the issue was apparent both when the PDF was viewed in Dodeca as well as when viewed in an external PDF viewer.
When the PDF Viewer is used within Dodeca, the PDF is rendered and displayed using the GdPicture.NET control. The position of a superscript or subscript was being rendered at the text baseline instead of slightly above or below the baseline, respectively.
This release contains the following changes:
Essbase Selector Treeview
-
To support the ability to control whether the Shared Members checkbox is visible in the Find area of the Selector Treeview control, and to control whether the checkbox is checked or unchecked by default, two settings have been added to the EssbaseSelectorTreeView selector list’s SelectorControlProperties: SharedMembersCheckboxChecked and SharedMembersCheckboxVisible
These settings represent an alternative approach to resolving an issue that was addressed in version 7.0.0.5388. This is an excerpt from the Release Notes:
Issue: When the member hierarchy displayed by the selector tree represents a shared member rollup and only a single selection is allowed, attempting to select a member from the Find results fails.
Resolution: The Shared Members checkbox is displayed and checked by default. When checked, the Select button can be used to find and select a shared member from the search results. #1429
The unintended side-effect was the possibility that with the Shared Members checkbox "checked" by default, selecting a member from the Find results in a hierarchy with multiple shared members, could take significantly longer than simply finding the base member. With the new settings, Shared Members checkbox can be configured as appropriate.
Essbase Views
-
Fixed Issue – Attempting to perform an Essbase send operation on a hidden sheet results in the following error: EsssbaseSpreadsheetGear.ActiveWorkshetIndex.Set failed. Cannot select a hidden sheet. #1462
This issue was introduced in version 7.0.0.5388 as the result of upgrading from SpreadsheetGear 7.1.2.150 to 7.4.2.102.
-
Fixed Issue – When an unknown member name (or alias) contains an XML special character, such as an ampersand, the unknown members may not be appropriately reported. #1467
-
Fixed Issue – An Essbase update (send) operation fails with a grid error message when suppress missing is True and all the data is suppressed. #1469
This is potentially a BREAKING CHANGE: For consistency with the Classic Essbase Add-In, and consistency then also between the Dodeca Smart Client and the Dodeca Excel Add-In for Essbase, trailing blanks are no longer removed from cell values when performing an Essbase operation. Due to this change, any value intended to represent a member in an Excel Essbase view template which contains one or more trailing blanks will now be treated as unknown member. #1463
-
Fixed Issue – Attempting to perform an Essbase retrieve on a hidden sheet results in the following error: EsssbaseSpreadsheetGear.ActiveWorkshetIndex.Set failed. Cannot select a hidden sheet. #1462
This issue was introduced in version 7.0.0.5388 as the result of upgrading from SpreadsheetGear 7.1.2.150 to 7.4.2.102.
-
Fixed issue with the Excel Essbase View Cascade functionality: When a cascaded member contains an invalid Excel sheet name character, building the view fails with the following error (#1340):
Unable to build the view. Unable to do cascading.
EssbaseSpreadsheetGear.CopyWorksheet failed. Sheet names must be between 1 and 31 characters long, may not start with a single quote (') character, and may not contain any of the following characters: [ ] * / : ? or \
-
Fixed the "Value does not fall within the expected range." exception, which is encountered when an Essbase error occurs on the first Essbase operation performed for a given view. This is typically a Retrieve operation, but could be another operation performed by way of a WBS or by the user in an adhoc view with ExcelAddInMode enabled. (#1337)
-
Fixed an issue with the Adhoc View –
Issue: When the ExcelAddInMode is set to True, a Send operation is always performed for the used range and not the selected range.
Resolution: The Send operation is performed on the selected range when the selected range contains at least two rows and two columns; otherwise, the Send operation is performed on the used range. (#1335)
-
For the Adhoc view’s Undo/Redo Essbase operation capability, the caption presented for each operation has been modified to include up to three selected member names, and the zoom level for a Zoom In operation.
The Undo/Redo Essbase operation capability is only supported for an Adhoc view when the ExcelAddInMode is set to True.
Workbook Scripting
Fixed Issue [EssbaseRunCalc Method] - When the method uses the view’s Essbase connection, the connection is automatically disconnected, which results in an error the next time the connection is used by the view, such as when the view is built or another workbook script method is called that uses the view’s connection. #1461
-
EssbaseRunCalc Method, General or ServerBased Overload [Fixed Issue] – The method fails on a Unicode application/database with an error similar to the following: Invalid member name [???CALC]. #1419
-
EssbaseRunCalc Method, General or ServerBased Overload [Fixed Issue] – When the method uses the view’s Essbase connection, the connection is automatically disconnected, which results in an error the next time the connection is used by the view, such as when the view is built or another workbook script method is called that uses the view’s connection. #1461
-
Named ranges can get deleted as the result of copying named ranges under a variety of scenarios when IFERROR and several other "new" Excel functions are copied.
This issue was introduced in version 7.0.0.5388 as the result of upgrading from SpreadsheetGear 7.1.2.150 to 7.4.2.102. This issue has been resolved in SpreadsheetGear 7.4.7.104.
-
WorbookScriptToolController – In previous releases, the VisiblePropertyName setting allowed a workbook script to control the visibility of a tool on a context menu. The name of the setting has been changed to VisibleOnContextMenuPropertyName. As before, the setting indicates the name of the boolean workbook script property that is used to set whether a tool on the context menu is visible. For a context menu tool, the visibility is set each time the context menu is displayed based on the property’s value.
An additional setting, VisibleOnToolbarPropertyName, is now supported, which indicates the name of the boolean workbook script property that is used to set whether a tool on the toolbar is visible. The tool’s visible state is initialized using the property’s value and the tool is also automatically shown or hidden when the property’s value changes. #1451
-
When a method argument contains a formula, which contains an embedded equal sign, the formula either fails to evaluate or evaluates incorrectly. This issue was introduced in version 7.0.0.5388. #1422
-
Workbook Script Editor – Resolved a performance degradation issue encountered when displaying large workbook scripts in the editor. This issue was introduced in version 7.0.0.5388. #1343
-
Fixed Issue – Attempting to call a method on a hidden sheet results in an exception: Cannot select a hidden sheet. This issue was introduced in version 7.0.0.5388 as the result of upgrading from SpreadsheetGear 7.1.2.150 to 7.4.2.102. #1445
-
EssbaseMdxQuery Method – When set to True, the RepeatRowMemberLabel argument was not being applied to the query. #1444
-
SendEmail Method: ServletSMTP Overload [Fixed Issue] – The workbook script throws an exception when the CC, BCC, BounceAddress, or Message arguments are left blank. Resolution: Blanks are now allowed for these fields. In addition, a more informative error message is returned when the required To or From fields are left blank. #1441
New Workbook Scripting Functionality
New events: BeforeBuildExecute, BeforeRefreshExecute, Shown
New Methods: ExportToExcel, SetSelectorConfiguration
Enhanced Methods: CallWebService, SendEmail, SetEntry, SetFill
New Functions: ColumnWidth, RowHeight, DataPointHasCellNote, IsInCharacterRange
Enhanced Functions: SheetCount
The release notes for this version contain the following sections:
Application – General
-
The ApplicationIcon application setting controls the icon displayed on the task bar and title bar for a given application. The default setting, "(none)", utilizes Dodeca’s default icon.
-
The InternetExplorerEmulationMode application setting controls the version of Internet Explorer that will be emulated by instances of the WebBrowser view type.
-
The default splash screen has changed.
For any application that uses the default splash screen, the SplashProgressTextColor, which is a new setting, should preferably be set to White. By default, the color of the progress status text is Black to be consistent with previous releases.
Application – User Access, User Manager and User Roles
With this version, information about each Dodeca user is captured and
retained in the Dodeca relational database repository in the USERS
table. The information is captured on an application-by-application
basis, such that for each application a user has access to (or has
accessed), a separate entry exists. An application can be configured,
using the UserAccessPolicy setting, either to automatically create an
entry for each new user or to require that an entry exists before a new
user is allowed to start the application. If the latter, it is the
responsibility of a Dodeca administrator to manually add users using the
User Manager.
When the UserAccessPolicy is set to RequireUserEntriesForStartup, a
message box can optionally be displayed when a user, who does not exist
in the USERS
table, attempts to start the application. The message box
caption and text are controlled by the
MessageCaptionForNonExistentUser and MessageTextForNonExistentUser,
respectively.
The AllowContextMenuNavigationInMetadataEditors setting controls whether users can navigate between Metadata Editors via the metadata instance context menu.
User Manager
The User Manager provides an interface for Dodeca administrators to
view the contents of the USERS
table and do the following:
-
Track and monitor users and their actions, including the first time, the last time, and the number of times a given user has started an application. User-specific information also includes the last workstation ID, client version, launch mode, processor, as well as the IP address, OS, memory, client type, and the IE, .NET, Excel, and VSTO versions. For more information, see the setting descriptions included below.
-
Prevent a user from accessing an application by disabling the user for the application. Two application settings, MessageCaptionForDisabledUser and MessageTextForDisabledUser, can be specified to show a message box when a disabled user attempts to access the application.
-
Add and remove users.
-
Grant a user administrative privilege. This setting is used in conjunction with an application’s AdminPrivilegeRequiredForStartup setting.
-
Monitor the number of active Dodeca users relative to the number of licensed users.
-
Assign Dodeca defined roles to users. This capability may be used in conjunction with the roles-related functionality provided by authentication services, or may be used instead of an authentication service’s roles-related functionality depending on the particular needs within the environment.
The following information is retained for each user entry:
-
Tenant (Read-Only) – The tenant that contains the application associated with the user.
-
Application (Read-Only) – The application to which the user has access.
-
User ID (Read-Only) – The unique ID of the user, which includes the domain and system user name.
-
Authenticated Username (Read-Only) – When the application is configured with an authentication service, the name of the authenticated user.
-
Client Type (Read-Only) – Either Dodeca or Add-In depending on which client the user has access to as represented by the entry. For the Dodeca Spreadsheet Management System, an entry exists for each Tenant/Application that the user has access to. If the user has access to the Dodeca Excel Add-In for Essbase, a single entry exists.
-
Enabled (Editable) – This setting is used in conjunction with authentication services to enable or disable a user’s access to a given application. An application can be configured to automatically add users as they login to an application or to require that users must be granted access explicitly before being able to access the application. This behavior is controlled by an application’s UserAccessPolicy setting. In either case, an administrator can enable or disable a given user to control the user’s access to an application without removing the user from the
USERS
table. -
Admin (Editable) – Indicates whether a user is an administrator for the application.
-
Roles (Optional, Editable) – The roles assigned to the user, which are selected from the available roles as defined by an administrator using the User Roles editor.
-
Authenticated Roles (Read-Only) – When the application is configured with an authentication service, the roles assigned to the user by that service.
-
Comments (Optional, Editable) – The field used to specify any comments or notes related to the user.
-
Login Count (Read-Only) – The number of times the user has started the application.
-
First Login (Read-Only) – The first time the user started the application.
-
Last Login (Read-Only) – The last time the user started the application.
-
Last Workstation ID (Read-Only) – The last workstation from which the user started the application.
-
Last Client Version (Read-Only) – The last version of the client started by the user.
-
Last Launch Mode (Read-Only) – The type of deployment from which the user last started the application. The value is either ClickOnce or XCopy.
-
Last Processor (Read-Only) – The processor of the system from which the user last started the application.
-
Accelerated (Read-Only) – Indicates whether the installed client is accelerated. A client is accelerated using the Accelerator Utility. Refer to the version 6.0.0.3106 (September 19, 2011) section for additional information about the utility.
-
IP Address (Read-Only) – The last IP address detected for the user.
-
OS (Read-Only) – The last operating system detected for the user.
-
Memory (Read-Only) – The total system memory detected for the user.
-
Excel Version (Read-Only) – The latest version of Excel detected for the user.
-
IE Version (Read-Only) – The latest version of Microsoft Internet Explorer detected for the user.
-
VSTO Runtime (Read-Only) – The latest version of the Visual Studio Tools for Office (VSTO) runtime detected for the user.
-
.NET Version (Read-Only) – The latest version of the .NET framework detected for the user.
User Roles
Prior to this release, authentication services were the only means of enforcing role-based access to an application, of controlling which view hierarchies are presented in the view selector based on a user’s roles, and of allowing more extensive view sharing options. Authentication services continue to provide a way to leverage the user role (or user group) capabilities supported by third-party user security platforms, such as LDAP and Essbase.
With this release, another option for defining and associating roles
with users is being provided. This capability leverages the USERS
table, and two additional tables, USER_ROLES
and USER_ROLE_MAPPINGS
.
The User Roles editor is used to define roles and is accessed from the Admin menu. A role is defined within the context of a Tenant and may be used by any application within the tenant.
Roles are assigned to users in the User Manager. The roles for a given user may be added or removed from the dropdown list in the Roles column. Or, to expedite role assignment, the Edit Assigned Roles dialog may be used to edit the roles for all the selected users.
Application – Security
This release includes enhanced application-level security settings, which include the following:
-
The ability to identify an application as an Admin application, which is supported by the AdminApplication setting.
-
The ability to restrict access to an application based on whether the user is granted administrative privileges, which is supported by the AdminPrivilegeRequiredForStartup setting.
-
The IntegrateDodecaUserRoles setting can be used either in conjunction with an existing authentication service, or independently, using the new DodecaUserRoles authentication service.
When an authentication service is active and the setting is true, a user’s Dodeca user roles are merged into the roles returned by the authentication service. This setting can be used to allow an administrator to more easily test the view selector’s HierarchyToRoleMapping setting without having to create test users in the authentication service’s native repository, such as Shared Services for an Essbase authentication service or the database table(s) for a relational database authentication service. Similarly, it provides the ability to add Dodeca-specific roles for users without having to modify a user’s groups within Essbase or LDAP.
When no authentication service is configured, the defaults provided by the .NET framework for role-based security are used.
Refer to the Application – User Access, User Manager and User Roles section for information on how to define roles, and for information on how to assign defined roles to a user, including how to grant admin privileges to a user.
Application – Session Timeout
As a way for administrators to prevent users from keeping a Dodeca session open indefinitely, a session timeout capability has been implemented for this release. One of the reasons cited by customers as to why this is a needed feature is related to the use of Essbase filtered security to control when data is locked for changes. Unless a user closes and restarts a Dodeca session, the user is unaffected by the security changes.
The capability is supported as an application-level policy, which is controlled by the SessionTimeoutPolicy setting. By default, the policy is None, which allows a session to run indefinitely.
The other two options include InactivityBased and Scheduled.
With the InactivityBased option, a session timeout is applied. The application will close after a designated period of inactivity.
The following settings are used to configure the InactivityBased option:
-
AllowCancelOnUnsavedChanges – Controls whether a user can cancel an application timeout if there are unsaved changes. In either case, the user will be prompted with an opportunity to save changes before the application closes. Setting AllowCancelOnUnsavedChanges to True allows the user to cancel the application shutdown by pressing the cancel button when prompted. The default is False.
-
InactivityTimeout — Controls the length of time in minutes before an application session times out and the user is forced to restart the application. The default is 60 minutes.
-
MessageCaptionForClosingSession and MessageTextForClosingSession — When the application closes due to inactivity, a MessageBox is optionally displayed. If MessageTextForClosingSession is non-empty, a MessageBox is displayed and the MessageCaptionForClosingSession is used as the MessageBox caption and the MessageTextForClosingSession is used as the MessageBox txt.
"0" can be used in the message text to represent the InactivityTimeout or ScheduledCloseTime.
"1" can be used in the message text to represent a new line.
For example, when the InactivityTimout is set to 15 and the MessageTextForClosingSession is set to "Your Dodeca session has timed out after 0 minutes of inactivity.11The application will now exit.", the following message will be shown:
-
WaitForReactivation — Controls whether the application waits (after the InactivityPeriod has elapsed) until the user returns to the application to force a restart. The default is True.
With the Scheduled option, a session timeout will occur at a designated time. The application will close at that time.
The following settings are used to configure the Scheduled option:
-
AllowCancelOnUnsavedChanges – Refer to the description above.
-
MessageCaptionForClosingSession and MessageTextForClosingSession — Refer to the description above.
-
ScheduledCloseTime — Controls the designated time that an application session will time out and the user will be forced to restart the application, regardless of activity or inactivity. The default is 12:00 AM.
-
WaitForReactivation — Refer to the description above.
Application Setup Utility – Import Dodeca License
The Dodeca Spreadsheet Management System Smart Client now requires a server license. For existing customers, a license file is obtained by contacting support@appliedolap.com. The license file is imported (or replaced/updated) using the Application Setup Utility.
If no license file is installed, the following message is presented when a user attempts to start the Smart Client:
If no license file has been imported, start the Application Setup Utility and advance to the Import a Dodeca License page. The page will indicate that the Dodeca license could not be validated.
To import a license file, open the file by clicking the Select License File button and locate the file using the Open File dialog. If the license is successfully validated, the message is updated to reflect the status.
The next and final step is to import the Dodeca server license by clicking the Import Dodeca License button.
The caption and message will reflect the updated license status. The same steps can be used to update or replace an existing license.
Authentication Services – DodecaUserRoles and EssbaseSimpleAuthentication
Two new authentication services are provided in this version. The DodecaUserRoles authentication service leverages native Dodeca User Roles assigned via the User Manager when evaluating whether to grant access to a Dodeca application, as well as when evaluating view sharing options. The EssbaseSimpleAuthentication authentication service provides a simple, role-less requirement for valid Essbase credentials upon application startup. This functionality can be used in conjunction with an EssbaseConnectionID that contains a valid credential-set for scheduled report generation.
The DodecaUserRoles authentication service provides a set of properties common to the other "native" authentication services, EssbaseUserRolesFromGroupNames and LDAPUserRolesFromGroupNames. These properties control access to the application, as well as roles and users with whom view sharing is allowed.
For information about authentication services and view sharing, refer to the EssbaseUserRolesFromGroupNames Authentication Service Enhancements section of the version 6.7.0.4294, February 4, 2014. And, additional information can be found by searching this document for EssbaseUserRolesFromGroupNames and for LDAPUserRolesFromGroupNames.
The EssbaseSimpleAuthentication authentication service provides a limited set of properties that specify the EssbaseConnectionID and EssbaseLoginServiceObjectTypeID against which the user will be prompted to authenticate. Limited access control can be employed using the AllowStartupForUserWithoutCredentials property.
Comments - Fixes
-
Fixed Issue – When a workbook script associates a procedure with a comment-related event link, such as AfterCommentDeleted, and the procedure calls a method that triggers a RangeChanged event, the client crashes. #1349
-
Fixed Issue – When a comment range is configured to show comment indicators in comment cells, and the sheet that contains the comment range is not the active sheet when the view is built, comment indicators are displayed on the active sheet and not the comment range sheet. #1368
Dodeca-Essbase Server – Fixes
-
Fixed Issue – When a data cell contains a zero and the client is set to certain Locales where the decimal point is not a period character, zero cells incorrectly display the cell value as the string 0.0. #1435
Dodeca Metadata Server and dodeca-essbase Server Logging
In version 6.0.0.3106, released September 19, 2011, a configurable logging functionality was added to both the dodeca metadata and the dodeca-essbase servers using the industry standard log4j logging utility. The level of logged detail is a configurable setting, which can be specified in the dodeca-essbase log4j.properties file. Changing the setting in the configuration file requires restarting the application server.
There are times when it may be useful to change the level during a given session while trouble-shooting an issue or to gain insight into performance, etc. The log level can now be set from the client using the Log Level for Current Session tool. The level options include: INFO, which provides summary level information; DEBUG, which gives additional detailed information; and TRACE, which is the most detailed. #1346
Refer to the version 6.0.0.3106 section titled Dodeca Metadata Server and dodeca-essbase Server Logging for further information on this logging capability.
Essbase Data Audit Logging - Fixes
-
Fixed Issue – Data audit log requests to the Dodeca service are not being logged when the dodeca-essbase service is flagged to log the request/response XML. #1383
-
Fixed Issue – The data audit log does not contain an entry for an update when a member name contains an ampersand (&) character. #1386
-
Fixed Issue – The data audit log does not contain an entry for an update when a member name contains a substitution variable. #1387
Essbase Selector Treeview – Expansion and Selection Filtering
Up until this release, the ability to restrict which members within a hierarchy are represented in an Essbase selector tree and which members are selectable could only be controlled by the MaxGenExpandable and MaxLevelSelectable selector control settings, respectively. To briefly review these settings, the MaxGenExpandable setting controls the maximum (or highest) generation that a hierarchy can be expanded to.
The MaxLevelSelectable setting controls the maximum (or highest) member level that can be selected in the tree. This is particularly useful when only level 0 members should be selected. If set to 1, then both level 0 and level 1 members are selectable.
While these settings are often adequate, a more robust capability is sometimes needed. Two new settings are being introduced with this release to provide more flexibility through a finer grained level of control: MemberExpansionFilters controls which members can be expanded to, and MemberSelectionFilters controls which members are selectable.
With these filters, complex rules can be constructed to limit the expansion and the selection of members in the tree, respectively. Some performance overhead can be expected with the use of the filters, and the existing settings discussed above should be used when appropriate.
Multiple filters may be defined for each setting, and a given filter either includes or excludes members based on the specified filter definition. The filter types include the following: Generation Number, Level Number, Member Name, Alias, or Shared Status.
A Generation Number or Level Number filter string may specify one or more numbers. A Member Name or Member Alias filter string may specify a single member name (or alias), but may also include a wildcard, which could result in filtering multiple members. A Shared member filter string is either True or False to indicate a user’s shared member status.
In this simple example, the MemberExpansionFilters excludes level 0 members, with the exception of the level 0 member Stands, which is explicitly included. In addition, the Others member is excluded.
Essbase Selector Treeview – Fixes
-
Issue: When the member hierarchy displayed by the selector tree represents a shared member rollup and only a single selection is allowed, attempting to select a member from the Find results fails.
Resolution: The Shared Members checkbox is displayed and checked by default. When checked, the Select button can be used to find and select a shared member from the search results. #1429
-
Fixed Issue – When an Essbase selector treeview has a base node member, whose generation is greater than the generation specified as the MaxGenExpandable, the following error is generated: Unable to show selector control. Object reference not set to an instance of an object.
Resolution: The error was replaced with more descriptive error message. For example: "Unable to show selector control. Select or List "3_Product" has a base node member with a generation that is greater than the MaxGenExpandable value of 1." #1357
-
Fixed Issue – When an Essbase selector treeview is dependent on another selector and the DefaultSelectionPolicy is AllItems, the default selection is not applied (i.e. no items are selected by default.) #1385
Essbase Views
-
Essbase Options Dialog – In previous versions, the Essbase Options dialog presented the Essbase Options in an expandable tree with the three option categories (Display, Operations, and Global) represented by root nodes in the tree. In this release, there is an alternative user-interface, which presents each of the categories of options on a separate tab. #1358
The new user-interface is the default, but the Essbase Options tool can be configured to use the previous user-interface if preferred. To change the control type:
-
Open the Toolbars Configuration Editor.
-
Select the toolbars configuration that contains the EssbaseOptions tool.
-
Click the "Configure Tools…" button to open the tool configuration dialog.
-
Select the Essbase Options tool.
-
In the upper right pane, change the UserInterfaceControlType setting from Tabbed to ExpandableTree.
-
Click Close and then click "Yes" to confirm the changes.
-
-
The "Show Empty Grid Error" option has been added as an Essbase Option. The option controls whether the empty grid error is generated when the Suppress Missing and/or Suppress Zeros options are enabled and an Essbase operation results in no data rows. The error is similar to the following depending on the current settings for the suppress rows options:
No data was generated: Suppress Missing - [FALSE], Zeros = [TRUE]. Sheet not overwritten. #1425
By default, the option is False. This option would typically only be set to True for an ad hoc view, or for a drill-through sheet in an Essbase Excel view. |
-
Alias Table Tool – The tool can be added to a toolbars configuration to allow the user to select an alias table without having to open the Essbase Options dialog. #1432
-
Fixed Issue with Zoom In – When the "zoomed in" member belongs to a dimension whose dimension number is 32 or higher and the member name is indented with spaces (i.e. the indent style is not equal to None), the following error occurs:
Unable to zoom in. Unable to perform Essbase Zoom In operation. [<member name>] is an invalid member name in database [<cube name>]. #1393
-
Fixed Issue with the Undo/Redo Essbase Operation tools, which display the following error when associated with a non-adhoc Essbase view:
Unable to refresh tool controller "EssbaseAdhocOperationUndoMenu". Object reference not set to an instance of an object." #1426
The undo/redo functionality is only supported for the AdhocEssbase view type. |
Formatting Tools - Fixes
-
Fixed issue with the formatting tools not being enabled when unlocked cells on a protected sheet are selected. #1166
Request and Response XML Client-Side Logging
In version 5.0.0.2260, released June 17, 2010, request and response XML server-side logging was introduced. This capability was described as follows in the release notes:
The logging functionality captures all, or selected xml transactions between the Smart Client and server tiers. The transactions are then stored in files in a given directory on the server. The files may then be used to better understand how the Dodeca tiers communicate with each other and are very useful in debugging operations.
While this capability has proven to be invaluable, the disadvantage of server-side logging is that the configured directory on the server must exist (and, if not, the application server service must be restarted after the directory is created), and a Dodeca administrator/developer must have access to the server to view the logged XML files. To address these hindrances, the ability to log the request and response XML to a directory on the client is now supported.
As with the server-side capability, the client-side logging is supported for application requests and responses as well as Essbase requests and responses.
The logging path must be specified for the application XML files and for the Essbase XML files. The same directory can be used for both, or a different directory can be specified for each. Once specified, the logging path setting is cached and used in subsequent sessions.
If you attempt to enable logging by clicking the Log Application Request and Response XML to Client tool before a logging path is specified, the folder dialog is automatically displayed to allow you to select a directory. |
Unlike the server-side Essbase logging capability, client-side logging is enabled for all Essbase connections instead of on a connection-by-connection basis.
The logging capability is not intended to be used at all times, but rather on an as needed basis to capture the information entering and leaving the server primarily for debugging services. Logging can quickly generate a large number of files. |
The new tools are included in the default admin toolbars, but may be added to other toolbars as needed.
Selectors - Fixes
-
Fixed Issue – When a selector is configured to only allow a single selection and the selector list associated with the selector is configured with the TokenValueItemEscapeSingleQuote property set to True, a single quote is not escaped (i.e. is not replaced with two single quotes) in the token value. #1433
SQLPassthroughDataSet Editor
The SQLPassthroughDataSet Editor has been enhanced to provide color coding for the SQL constructs, such as displaying keywords in blue, comments in green, and strings in red. In addition, tokens that use the standand token format, which begins with "[T." and ends with "]", such as [T.Market], are displayed in magenta.
SQLPassthroughDataSet Test Tokens
The SQL Passthrough DataSets Editor now supports the ability to define test token values, which are used by the Test Data Set utility to replace the tokens within the SelectSQL statements before executing the queries. In previous releases, it was necessary to define the query (or queries), and then open and build the related view in order to test the validity of the statements. The test tokens are persisted as a part of the SQLPassthroughDataSet metadata to allow for easy re-use.
The SQL TestTokens Editor supports adding, removing, or modifying SQL test tokens.
The SQL TestTokens Editor can be accessed from the SQLPassthroughDataSet Editor by clicking the Open Editor button, "…", for a SQLPassthroughDataSet’s TestTokens setting.
The SQL TestTokens Editor can also be accessed from a Query’s SelectSQL Editor. First, open the SelectSQL Editor:
From the SelectSQL editor, the SQL TestTokens Editor is accessed by clicking the "Edit Test Tokens" button at the lower right…
…or from the context menu, which is displayed by right clicking on a token, and then selecting the "Edit Token" option.
The "Show TestToken Values" checkbox, located at the lower left of the SelectSQL editor, provides a preview of the query by replacing the tokens within the statement with the defined test token values. While in preview mode, the editor is read-only.
The Test Data Set dialog has also been enhanced to display a read-only preview of the SelectSQL statement with the tokens replaced by the test token values. This allows the executed query to be previewed along with the query results.
SQL Selector Tree
This release features a new SelectorControl type and corresponding SelectorList type that allow the records returned by a SQLPassthroughDataSet to be organized into a hierarchy for display in a tree. The SQLSelectorTreeView control and SQLPassthroughDataSetHierarchy selector list are available for use with SQL selectors, and they empower users by providing an accurate visual representation of structured datasets.
The SelectorControlProperties for the SQLSelectorTreeView are similar to the properties utilized by the EssbaseSelectorTreeView, and they contain only a few notable differences. In keeping with the EssbaseSelectorTree, expansion of parent items is dictated by the MaxGenExpandable property. Root nodes are assigned a generation of 1, and the generation increases with each generation of descendants. The default value of 0 allows all generations to be expanded. The MinGenSelectable property controls how far up the tree a selection can be made. The default value of 0 allows all generations to be selected.
The ItemToolTipContentOptions property controls the information that is displayed in the tooltip when hovering over an item in the tree. Available content options include the Display Name, Value, ID, Generation, Parent Display Name, Parent ID, and Ancestry.
The SelectorListProperties for the SQLPassthroughDatasetHierarchy control the mechanism by which the selector list items are obtained and the tree is constructed, as well as the token format and the policy that determines the default selection. The HierarchyPolicy property corresponds to the structure of the dataset returned by the SQLPassthroughDataSetID. The default policy option is ParentIDBased, which relies on the following properties for organizing the hierarchy: ItemIDColumnName, ItemDisplayNameColumnName, ItemIDParentIDColumnName, ItemValueColumnName, ListRootNodeIDs, ListDelimiter, and ItemIDColumnType.
For the preceding dataset, we might use the following SQLPassthroughDatasetHierarchy property values to organize the tree:
In this case, the "AREA_ID" column will be used to represent the ID and value of each selector item, and the "PARENT_ID" column will be used to represent the parent ID. The 'PREFERRED_NAME" column will be used to represent the display name for the items that will be visible to users when navigating the tree. If the ItemValueColumnName and/or ItemDisplayNameColumnName properties are not used, the selector item ID will be used for the value and/or display name. If no ListRootNodeIDs are specified, the root nodes will be any records which have no value in the "PARENT_ID" column, but we can choose the RootNodeIDs that we would like to use in order to select only a slice of the returned dataset, starting at any generational depth in the structured dataset.
The SortOrder of the root and child nodes can be set to Ascending, Descending, or DataSetOrder, and the TokenValueDelimiter, TokenValueFormat, and TokenValueItemFormat properties are used to structure the resulting selector Token for use by the view. In this case, the nodes will be sorted in ascending alphabetical order, and the selector token will be structured "AREA_ID = [item value]" for a single selection and "AREA_ID = [item value] OR AREA_ID = [item value]" when multiple selections are allowed.
Token Editor
The Token Editor has been revamped to present the tokens and associated values in a grid layout to provide a more user-friendly interface for viewing and editing tokens.
View Selectors – General
-
In previous releases, when an application’s CheckForMetadataFrequencyPolicy was set to CheckForMetadataUpdatesOnViewOpen, a modification by an administrator to a view hierarchy would not be reflected in the view selector on an end user’s system when the view selector was refreshed without the user first opening an instance of a view. Although consistent with the intent of the policy, the behavior has been changed for convenience. #1413
View Selectors – Access Filters
Two new properties have been added to all hierarchy items to support the ability to limit access to a hierarchy item based on the current user’s authenticated roles, or on the basis of Dodeca roles if no authentication service is utilized. This capability allows an administrator to determine which users will have access to a given hierarchy item without the complexity of merging multiple hierarchies.
For example, access to the "Input" Category can be limited to users who have any of the roles specified using the AccessFilter setting’s "AnySpecificRole" policy. Then, roles and/or users can be specified using the AccessFilter_SpecificRoles setting.
You will be prompted to choose from the Dodeca applications in the tenant that utilize an authentication service, or, you can simply dismiss the window to utilize only native Dodeca Users and Roles.
Once a user or role has been assigned as an access filter for the hierarchy item and the hierarchy has been selected. Only users with the chosen role will have access to the hierarchy item and its children.
This user is not a member of the Dodeca "Finance" role, and so the hierarchy category "Input" and all of its child views are no longer accessible.
View Selectors – SQLPassthroughDataSetExpandableItem
A new hierarchy item type, SQLPassthroughDataSetExpandableItem, has been added to support the ability to populate the view selector with the results of a relational query. This capability allows for either the entire view hierarchy or one or more groups (for a ViewSelectorExplorerBar) or branches (for a ViewSelectorTree) of a view hierarchy to be generated based on the query results.
In this example, the SQL Tree Hierarchy contains a single SQLPassthroughDataSetExpandableItem.
The SQLPassthroughDataSet associated with the tree contains the following query:
which returns the following rows:
And this is the ViewSelectorTree as resolved at runtime:
The table structure and query may be designed as appropriate for the environment. Some of the SQLPassthroughDataSetExpandableItem settings are used to identify which of the columns returned by the SQLPassthroughDataSet represent the values used to populate the view selector. The settings include the following:
-
AuthenticatedUserNameVariable Optional – To filter the hierarchy items presented in the view selector based on the name of the authenticated user, the query’s SELECT statement can include a WHERE clause that contains the AuthenticatedUserNameVariable value within a condition.
The variable serves as a placeholder, which is replaced at runtime with the name of the authenticated user. For example, if the AuthenticatedUserNameVariable is %USERNAME% and the name of the column that represents the user name is UserName, the WHERE clause would be
WHERE UserName = '%USERNAME%'
. -
AuthenticatedUserRolesVariable Optional – To filter the hierarchy items presented in the view selector based on the authenticated user’s role(s), the query’s SELECT statement can include a WHERE (or WHERE IN) clause that contains the AuthenticatedUserRolesVariable value within a condition.
The variable serves as a placeholder, which is replaced at runtime with the roles assigned to the authenticated user. For example, if the AuthenticatedUserRolesVariable is %USERROLES% and the name of the column that contains the roles is Role, the WHERE IN clause would be WHERE Role IN (%USERNAME%).
When the user is assigned multiple roles, the variable is replaced with a comma-delimited string of the user’s roles each enclosed in single quotes.
-
ItemIdColumn Required – The name of the data table column returned by the SQLPassthroughDataSet that contains the item ID for the hierarchy items. The value specified for a view must match the ID of an existing view defined in the view metadata.
-
ItemNameColumn Optional – The name of the data table column returned by the SQLPassthroughDataSet that contains the item display name for the hierarchy items.
If no column name is specified, the display name of a category is the category’s ID, and the display name of a view is the view’s name as defined in the view metadata.
Similarly, if a column name is specified, but a value is NULL for a given hierarchy item, the name of the hierarchy item is derived as described above.
-
ItemTypeColumn Optional – The name of the data table column returned by the SQLPassthroughDataSet that contains the item type for the hierarchy items.
If no column name is specified, all hierarchy item rows returned by the query are assumed to represent views.
If a column name is specified, the value indicates whether the row represents a category or a view: "category" or "1" for a category, and "view" or "2" for a view. If neither value is specified, the row is ignored.
-
Name – The name of the SQLPassthroughDataSetExpandableItem displayed in the hierarchy as presented in the Hierarchy Metadata Editor.
-
ParentItemIdColumn Optional – The name of the data table column returned by the SQLPassthroughDataSet that contains the parent item ID for the hierarchy items.
If no column name is specified, all hierarchy items returned by the query are added to the hierarchy at the same level as the SQLPassthroughDataSetExpandableItem.
If a column name is specified, a NULL value for a given hierarchy item row indicates the item should be added to the hierarchy at the same level as the SQLPassthroughDataSetExpandableItem. A non-NULL value should be the ItemID of a hierarchy item, which represents a category.
-
SortOrderColumn Optional – The name of the data table column returned by the SQLPassthroughDataSet that contains the sort order for the hierarchy items.
If no column name is specified, the items are ordered in the same order as the rows returned by the query.
If a column name is specified, a value represents the one-based relative order of the hierarchy item within the group of hierarchy items that have the same parent.
-
SQLPassthroughDataSetID Required – The ID of the SQLPassthroughDataSet metadata instance that defines the query or queries used to generate the hierarchy items. If multiple queries are defined by the SQLPassthroughDataSet, each query is executed and the combined results are used as the hierarchy items.
The queries can be tokenized. Tokens are replaced at runtime with the Application tokens.
To add a SQLPassthroughDataSetExpandableItem item to a hierarchy, select from the Item Object Type dropdown list when adding an item to the hierarchy.
View Usage Logging
As a means of gathering statistics about view usage, including performance, "view usage logging" is provided with this release. Logging is enabled and configured on an application-by-application basis. The logged view usage information is retained in the Dodeca metadata relational database repository. The log entries can be viewed from the client using the View Usage Viewer, which supports filtering and sorting as well as the ability to select specific views to report on.
Two application metadata settings are used to enable and configure view usage logging: CollectViewUsageInfo, which enables or disables logging for the application, and CollectViewUsageInfoPolicy, which controls whether the application collects view usage info for all view builds or only failed builds. View usage logging is enabled by default for all view builds.
The View Usage Viewer is accessed from the Admin menu.
View Usage Viewer
The logged information includes the tenant, application, a unique usage ID, view ID, user ID, connected user ID (for an Essbase view), the time the view build was initiated, whether the view build succeeded or failed, the build duration in seconds, any build errors, and a concatenated list the token values. Both the build errors and token values strings are limited to 2000 characters.
To restrict the view usage information retrieved from the database to only the view or views of interest, the View IDs dropdown list can be used to select specific views. The Query View Usages button retrieves the related view usage information from the server and updates the list of items based on the selected view(s).
The logging information is retained in the Dodeca metadata database
table, VIEW_USAGE_LOG
.
Refer to the Dodeca Metadata (Repository) Database for additional information on adding the table to the database.
WebBrowser View - Enhancements
-
Enhancement – The WebBrowser view now honors an application-level setting that dictates the Internet Explorer rendering engine that will be used to display web pages. This allows an administrator to configure which "version" of Internet Explorer will be used to render web pages and resolves a number of issues related to Javascript and pages appearing differently than they do in a normal browser.
-
Enhancement – Two new properties have been added to the WebBrowser view type: CookieCollection and ClearCookiesBeforeBuild. The CookieCollection property is a tokenizable representation of the cookies that will be loaded into the view when it builds. This property can be set using the cookies returned by the newly added RESTRequest overload of the CallWebService Workbook Script method. ClearCookiesBeforeBuild clears all of the cookies accumulated by other WebBrowser views before building.
Workbook Script Editor - Fixes
-
Fixed Issue – When a WBS procedure is copied and pasted, the new procedure methods do not contain the CellByCell and ReverseOrder arguments. When the workbook script is committed, the arguments are added. #1343
-
Fixed Issue – When attempting to tab from any of the value fields in the Definition section, the application aborts. #1361
Workbook Scripting – Event Links, Functions, Methods
-
Fixed Issue – When a workbook script associates a procedure with a comment-related event link, such as AfterCommentDeleted, and the procedure calls a method that triggers a RangeChanged event, the client crashes. #1349
-
Fixed Issue – Depending on the placement and number of occurrences of workbook script functions within a formula, the evaluation fails to detect functions and throws an exception. #1422
-
BeforeBuildExecute, BeforeRefreshExecute Event Links [New] – Allows a workbook script to cancel the build or the refresh before the view is covered (by calling the CancelEvent method.)
When first opened, a view is always covered. The BeforeBuildExecute event is raised on the first build and every subsequent build. (#1363) |
-
BeforeSelectorListItemsResolved Event Link [Fixed Isssue] – The event is not raised when the selector list items are resolved during the initialization of the view. As a result, the associated workbook script procedure is not executed. #1395
-
CallWebService Method [New Overload] – Added RESTRequest overload, which allows web service calls to made to RESTful web services using a number of request methods including GET, POST, PUT, PATCH, and DELETE. Cookies returned by the request are stored in the property that corresponds to the CookieCollectionPropertyName, and can be utilized by target WebBrowser views. See the WebBrowser view section of this release for more information about how this can be utilized.
-
@ColHeight and @RowWidth Functions [New] – Returns the column height and row width, respectively. #1424
-
@DataPointHasCellNote Function [New] – Returns True when the active or specified data cell has cell note(s) associated with it. The use pattern is @DPHasCellNotes([CellAddress]), where the CellAddress argument is optional and defaults to the active cell.
-
@DataPointHasLinkedObjects Function [New] – Returns True when the active or specified data cell has any type of link object(s) associated with it, including cell notes. The use pattern is @DPHasLinkedObjects([CellAddress]), where the CellAddress argument is optional and defaults to the active cell.
-
EssbaseZoomIn [Enhanced] – Added an optional EssbaseConnectionID argument. #1431
-
ExportToExcel Method [New] – This method performs the same functionality as the "Export View to Excel" tool, which has been supported in previous releases. Both the tool and the workbook script method allow for an Excel Essbase view to be saved as an Excel file, which retains the point-of-view information. When the file is imported, using the Import View from Excel tool, a new instance of the view is opened, and the selector items are selected based on the saved point-of-view. The cell values within defined send ranges (i.e. Ess.Send.Range.x) are copied from the Excel file to the view. This capability allows a user to work off-line, import the exported file, and then update the Essbase data using the modified values (within the send ranges.) #1400
-
IsInCharacterRange Function [New] – Returns True/False indicating whether the specified string is limited to the specified character range. The use pattern is @IsInCharacterRange(<Character Range>, <String>) where the Character Range is one of the following: ASCII, Single-Byte, Double-Byte, and Multi-Byte, and String is the value to test. For example, to detect whether a string contains a Unicode character, @IsInCharacterRange(Single-Byte, "String to test") returns TRUE, and @IsInCharacterRange(Single-Byte, "String to test: 串") returns FALSE.
-
SendEmail Method [Enhanced] – Added three arguments: AttachmentFilenames, AttachmentFolder, and AttachViewAsPDF, which allow for specified file(s) to be attached to the email, as well as the ability to attach the current view as a PDF file. #1375
-
SendEmail Method [Fixed Issue] – The Username and Password property values are now masked in the event of an exception in order to prevent them from being exposed to an end user.
-
SendEmail Method [New Overload] – Added ServletSMTP overload. This overload sends mail from the Dodeca servlet rather than the client for circumstances in which SMTP mail must come from an approved IP address. New arguments for this overload include: BounceAddress, IsHtmlMessage, ImageBaseURL (for html messages), AlternateText, Security, and EnableLogging.
-
SetEntry Method [New Overload] – Added FormulaArray overload. As with the Formula overload, do not prepend the Entry argument value with an "=" sign. For the FormulaArray, do not include the curly brackets. #1369
-
SetFill Method [New Overload] – Added Clear overload, which clears the fill color and pattern from the specified range. #1377
-
SetSelectorConfiguration Method [New] – Supports the ability to add or remove a selector to/from a view dynamically from the BeforeInitializeUI event. For the Add overload, the method arguments represent the same settings as supported by the SelectorConfiguration Editor, which is accessed from the View Metadata Editor. #1389
-
SheetCount Function [Enhanced] – Added an optional IncludeHiddenSheets argument, which controls whether the returned count includes both visible and hidden sheets OR only visible sheets. By default, the argument is true. #1356
-
Shown Event Link [New] – The Shown event is raised when the view is initially shown. The event is raised before the framework applies the view’s AutoBuildOnOpen property, which allows a workbook script to set the property dynamically. #1430
-
SQLPassthroughExecute Method [Fixed Isssue] – The method does not perform token replacement on the specified SQL connection’s ConnectionURL, Username, and Password. #1360
-
SubstVar Function [Fixed Issue] – When calling the @SubstVar with the scope specified as "Any," the value returned contains extraneous text appended to the string, which indicates that the substitution variable "does not exist." #1388
-
UpdateBinaryArtifact Method [New] – Supports the ability to update an existing Binary Artifact with a new file or create a new Binary Artifact within the context of a Workbook Script. Also includes overloads for parsing CSV files and allowing an end-user to choose the file that will be used to update a binary artifact.
Essbase Selector Tree
-
Fixed Issue – When the selector tree contains non-generation 1 members as root nodes, search results may include members that are not a descendant of any root node member. For example, if East is the only root node in the selector tree, and the user searches for C*, the search results include California, Central, Colorado, and Connecticut, even though Connecticut is the only descendant of East that starts with a "C". #1455
Save as PDF and Open in PDF Viewer
-
Fixed Issue – When the view contains numbers using Millions formatting with a decimal, the formatting in the output PDF is incorrect. This issue appears to have been introduced in 6.7.9.4567, when the Aspose.Cells component was upgraded to 8.2.0.0. #1458
This is an example of the incorrect formatting:
This is the corrected formatting:
Comments – Fixed Issues
-
When a comment range contains merged cells, attempting to delete a comment from a cell causes in the following error: Unable to build comment queries. This issue was introduced in version 6.7.9.4567. #1442
-
When an existing comment is cleared by entering a blank into the cell and clicking the Enter button, and then rebuilds the view. If the user then attempts to enter comment text into the cell, the comment is not updated. #1443
Authentication Services – Fixes
-
The Authentication Services in Dodeca version 7 releases have been updated to allow for the integration of native Dodeca user roles. When an application was configured to prevent startup for users without authentication service roles by setting the AllowStartupForUsersAssignedNoRoles property to false, the application would fail to allow the user access to the application before a record had been created for the user in the
USERS
table. This issue has been resolved (#1439).
View Usage Logging – Fixes
-
For some Essbase Excel views, Dodeca’s View Usage Logging capabilities were failing to record the updated token values after build in the
VIEW_USAGE_LOG
table. This issue has been resolved to ensure that accurate token values are always reflected (#1438).
Metadata Database Schema Changes
The Dodeca metadata database repository contains not only the table that stores metadata instances, such as views, selector lists, view templates, etc. The database also contains tables that store comments, audit logging and performance logging entries, shared view access information, and the binary artifact usage history.
Additional tables have been added for this release to support user
tracking, native user roles, and view usage logging. These tables
include the following: USERS
, USER_ROLES
, USER_ROLE_MAPPINGS
, and
VIEW_USAGE_LOG
.
In addition to the new tables, indexes have been added to three of the existing tables in order to improve performance. An index has been added to the COMMENTS.COMMENT_KEY_HASH, COMMENT_KEY_ITEMS.KEY_ITEM_VALUE, and DATA_AUDIT_LOG_DATAPOINTS.DATAPOINT_MEMBER and DATAPOINT_ALIAS columns.
The Application Setup Utility is used to create the database schema. If you are upgrading from a previous version of Dodeca, do not use the Application Setup Utility to update your database schema as you may risk the loss of data. Instead, contact us at support@appliedolap.com for assistance. We can provide the appropriate DDL (Data Definition Language) for your database type. |
The Key Features in this release include the following:
User Management – Track, monitor, and control user access on an application-by-application basis, including the ability to monitor the number of active Dodeca users relative to the number of licensed users
User Roles – Built-in support for user role definition
Enhanced Application Security – Explicitly control access to an Admin application
Application Session Timeout – Prevent users from keeping a Dodeca session open indefinitely based on either a specified inactivity timeout or designated time
View Usage Logging – Gather statistics about view usage, including performance
Client-side Request and Response XML Logging – Provides easier access to request and response XML logging by writing the files to the client machine instead of the server
Enhanced Essbase Selector Treeview Member Expansion and Selection Filtering – Control which members can be expanded to and which members can be selected based on one or more specified filters, including Generation Number, Level Number, Member Name, Alias, or Shared Status
Enhanced SQLPassthroughDataSet Query Editing – Ability to define test token values, which are used by the Test Data Set utility to replace the tokens before executing the query
Relational Point-of-View Selector Tree – Build the hierarchy of selector items based on the results of a relational query
Improved Token Editor – View and edit the tokens and token values in a grid layout
View Selector Hierarchy Item Access Filters – Control which view hierarchy items are presented in the view selector based on the current user’s roles
View Selector Relational Hierarchy Generation – Populate the entire view selector hierarchy (or one or more branches) based on the results of a relational query
Workbook Script Editor
-
Fixed Issue: When text is pasted into a method argument cell, the following Data Error occurs: Unable to update the data value. Cannot modify the read-only field ArgumentName. The error locks up the client. (#1342)
SQL View
-
Fixed issue with Cascade: When a cascaded item contains an invalid Excel sheet name character, building the view fails with the following error (#1340):
Unable to build the view. Unable to do cascading.
EssbaseSpreadsheetGear.CopyWorksheet failed. Sheet names must be between 1 and 31 characters long, may not start with a single quote (') character, and may not contain any of the following characters: [ ] * / : ? or \