Dodeca Version 8.2.0
Aug 25, 2022 - Build 913
This version of the Dodeca uses the .NET Framework, version 4.7.2 and higher on the desktop. The components used in this version of Dodeca are SpreadsheetGear 2017 (188.8.131.52), NetAdvantage 2021, Volume 2 (21.2.46), Aspose.Cells 19.5.0, Syncfusion Essential Studio 184.108.40.206, GdPicture.NET 220.127.116.11, and Xceed Zip 3.6.7363.15420.
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.8. The Dodeca-Essbase service for all Essbase versions prior to, and including, Essbase 18.104.22.168 are supported and tested on Java 1.5. The Dodeca-Essbase service for all Essbase versions 22.214.171.124 and higher is supported and tested on Java 1.6. Both services are known to run on Java 1.7, 1.8, 1.9, and 1.10.
The release notes for this version contain the following sections:
Fixed Issue: In the client application, when the user attempts to close multiple window tabs consecutively by clicking the
Xon each tab, especially when the tab width is the same (such as multiple instances of the same view with the same caption), the single click can be interpreted as a double-click (when clicking relatively quickly), which causes the window to float instead of being deleted. #3181
In the 8.1.x versions, the following error may occur during the client startup: Module CustomToolControllers was installed but was determined to be invalid after installation. Your application may not behave as expected.
In the 8.1.x versions, the way to avoid or eliminate the error was to always run the
recompute-checksumscommand in the Dodeca Shell after importing a tenant.
In 8.2, the
recompute-checksumscommand is not required, but can still be used should the error occur. #3128
A new application property,
ViewChatPollingInterval, is the interval (in seconds) used by the View Comments Editor to check for new/updated comments when the editor is configured in Chat mode. A value of 0 disables polling for updated comments. Refer to the View Commentary and Attachments section for additional information.
ClickOnce Prep Utility
When generating a self-signed certificate used to sign the ClickOnce deployments, using the SHA-1 (with RSA) option produces valid manifests that utilize the wrong hash algorithm in the manifest signature block. This results in the publisher being shown as
Unknown Publisher, even if the generated certificate has been installed into the
Trusted Root Certification Authoritieskey store. #3155
Fixed Issue: When a comment contains a Unicode control character or otherwise invalid XML character as defined by the XML 1.0 spec, an error similar to the following can occur: Unable to build the view. Unable to write or send ViewUsageUpdate request. '[<char>]', hexadecimal value <char value>, is an invalid character. #3225
Refer to the View Commentary and Attachments and Worksheet Worksheet Commentary sections for additional information about new commentary features.
In 8.2, the
setcommand supports an optional
dshell/:>help set NAME set - Set a variable SYNOPSYS set [--env] [[--name] string] [[--value] string] OPTIONS --env Set variable from environment. Pass with no parameters to pull in all environment variables [Optional, default = false] --name string The name of a variable to set, or the name of an environment variable if using the --env option [Optional, default = <none>] --value string Value to set for a variable, or a default value to use if an environment variable doesn't exist [Optional, default = <none>] dshell/:>
When set, the shell looks for that variable in the System environment and sets it.
If no variable name is provided, then all environment variables are brought in.
If a single name is specified, that value is brought in.
If a name and a value are specified, then that environment variable is brought in, but if the environment variable is null, then the value is used as a default.
In 8.2, the `` command can be used to restore artifact descriptions to the BINARY_ARTIFACTS table’s ARTIFACT_DESCRIPTION field. In 8.0.0569, the description was not transferred to the field when importing metadata. #3193
Although this issue was fixed in 126.96.36.199, the ARTIFACT_DESCRIPTION will still be NULL for metadata previously imported with 188.8.131.529. The description is presented in the metadata editors, because the value is also stored in the embedded artifact. And, if the Description is changed and committed, the ARTIFACT_DESCRIPTION will contain the updated description.
fix-descriptionscommand pulls the value from the embedded artifact and assigns the value to the ARTIFACT_DESCRIPTION field in the BINARY_ARTIFACTS table.
dshell/:>help fix-descriptions NAME fix-descriptions - Fix artifact descriptions SYNOPSYS fix-descriptions [--update] --update This flag must be set in order to confirm the update of the descriptions. [Optional, default = false] dshell/:>
Essbase And Sql Connections
In previous versions, changes to Essbase and SQL connections metadata that are committed by an administrator are not detected by the other client sessions when the connection has already been used. In 8.2, changes are detected and downloaded to the client as determined by the application’s
CheckForMetadataUpdatesFrequencyPolicysetting, which is consistent with the handling of all other metadata types. #2736
Fixed Issue: The following error was reported by a customer when attempting to perform a Send operation using a stateful Essbase connection after the Essbase or APS server was restarted: Invalid session ID. One possibility is that the server may be restarted. Sign off and sign on again.
We were unable to reproduce the exact error in our environment, but did encounter the following error with Essbase 21c when a stateful connection is forcibly logged off by the administrator: Network Error : Failed to retrieve name information for [EssbaseCluster].
This issue has been resolved in 8.2, and may also address the issue reported by the customer. #3073
Essbase Connection Pooling
The Dodeca-Essbase connector now has connection pooling for stateful connections. Essbase connection pooling should increase performance and provide the ability for multiple concurrent asynchronous views to be run using the same stateful connection. #2932
A connection pool is automatically created and used when the connection is defined
as stateful, which is controlled by the Essbase connection’s
In addition, new connection instances are created and stored in the pool on an as-needed basis if a connection is not available in the pool for a given operation. A new connection pool is created based the following non-null items, considering factors such as server use of elevated privileges for certain operations, logins using impersonation, and logins using SSO tokens:
Username for Impersonation
The connection pool will enhance the view resolution performance, particularly in
views that have multiple retrieve ranges, when the view’s
ParallelRequestLimit properties are configured to optimize
In the example above, the connection pool will create and manage up to 8 connections in the connection pool. When the view is not using parallel execution, a stateful connection may also be added to the pool if multiple views, which are utilizing asynchronous processing, submit requests simultaneously.
Connections in an Essbase connection pool are disconnected from the server once the connection is unused for a minimum of the timeout period as specified in the dodeca-essbase.properties file. The default timeout period is 3,600,000 milliseconds or one hour. The timeout check is performed on a periodic basis as defined by the connection interval property. The default connection interval is 600,000 milliseconds or 10 minutes.
TRACE level logging messages related to the connection pools,
including some messaging that shows when a connection is instanced, when it is put
into the used connections collection, when it is returned to the pool, when it is
released from the pool, and printing contents of the cache after different operations.
The Disconnect function on the server no longer disconnects stateful connections. Instead, stateful connections in the connection pool will timeout and be removed from the pool when they have not been used during the timeout period. As a result, the Sessions console in EAS (for Essbase 11.x) or the Essbase Jet UI (for Essbase 21c) will display active user sessions. These sessions should automatically be ended after a period of inactivity longer than the connection pool timeout has occurred. Below is an example from the Jet UI.
Essbase Outline Extraction
In 8.2, the automated Essbase Outline XML Extraction for use with Dodeca Outline Viewer reports, has been removed and replaced by a Windows batch and Linux shell script process. #2886, #3033
In previous versions, when an Essbase connection’s
OutlineExtractEnabledis set to True, the Dodeca metadata service automatically checks for changes to the outline at the configured time interval, which is specified in the deployed dodeca.properties file. When a change is detected, the outline is extracted as XML and saved in the metadata repository as an Essbase Outline XML binary artifact. The automated functionality provided limited scheduling capability and sometimes required web service calls between different servers, which introduced potential authentication and firewall issues.
The new outline extraction process is written using a combination of either Windows batch files or Linux shell scripts, which in turn call either MaxL or the Essbase REST API to extract the outline xml file. The script then calls the Dodeca Shell to insert the extracted outline xml file into the Dodeca repository as an Essbase Outline XML binary artifact. Since the new process uses scripting functionality, it can be called from other processing scripts in the environment or scheduled using any common operating system scheduling software.
The script files are installed with the Dodeca Framework in the bin\extract-xml-outlines folder. The following instructions are provided in a README.txt file:
Copy the files in this directory to a new working directory.
Copy the dshell.jar from your version of Dodeca 8.2 or higher to the same directory.
Update the JAVA_HOME, ESSBASE_USERNAME, ESSBASE_PASSWORD, RETAIN_LAST_VERSIONS_COUNT CONNECTION, TENANT, and EXTRACT_METHOD variables to the appropriate values for your environment and extract method.
Update the variables listed below for your selected extract method. MaxL - HYPERION_HOME and ESSBASE_SERVER (and verify the remaining MaxL variables) REST - ESSBASE_SERVER_REST
Update the extract-xml-outline-cube-list.txt file with a pipe-delimited list of the desired applications and cubes to extract. Example: Sample|Basic Demo|Basic
Execute this file at the command line.
In 8.2, the on-demand Update Outline XML capability is still supported by the client in the Essbase Connection Editor; the
OutlineExtractXmlRetentionCountproperties, however, are no longer supported, since these were associated with the previous automation functionality.
Fixed Issue: When the view’s
Asynchronousproperty is True and workbook script is used to perform an Essbase operation that changes the size or layout of a retrieve range, the
DataCellDoubleClickPolicymay not be properly respected. For example, when using the OpenViewForDrillthrough policy, the target view, specified as the
DataDrillthroughViewID, may not open when the user double-clicks a data cell. This issue was introduced in version 184.108.40.2069. #3183
Added support for parallel resolution of commentary ranges when the
ParallelExecutionproperties are True. #2841
Auto-Complete: In 220.127.116.119, functionality was introduced to provide a capability similar to Excel auto-complete. In 8.2, auto-complete has been enhanced to support the ability to optionally display a drop-down button in the active cell when edit mode is entered. By default, the
ShowDropDownButtonproperty is False. Use of the drop-down button more closely mimics the Excel behavior. #2801
Fixed Issue: When a metadata property that represents a color is set to Transparent, the color reverts to White. This includes the following properties:
Metadata Dependency Explorer
Fixed Issue: Under certain circumstances, such as when the repository contains a large number of binary artifacts, the following error occurs when running a
Depended On Bysearch in the Metadata Dependency Explorer: Servlet engine ran out of available memory. #3210
Fixed Issue: With the SQLPassthroughDataSets Editor and Essbase Scripts Editor, the Commit button becomes enabled after opening the SQL Editor or Query Editor and clicking OK without making a change. This issue was introduced in version 18.104.22.1689. #3212
Fixed Issue: In 22.214.171.1249, the sorting of items in Metadata Editors was changed to sort based on natural order, such that View1, View2, and View10 would display as View1, View2, and View10 instead of View1, View10, View2. This caused a performance degradation when a Metadata Editor is opened and there is a large number of metadata instances, so the change has been reverted. #2558
For the selector tool, which appears in the toolbar for a selector tree and listbox, an image has been added to the button that, when clicked, opens the tree or listbox control. The image provides an end user with a visual cue. In addition, the text to the left of the button, which displays the null selection text or the current selection, also opens the control when clicked. #3227
SQL and Essbase Excel Relational Views
Fixed Issue: When a SQL or Essbase Excel view, with DataSetRanges defined, contains an array-entered formula, such as INDEX, in a data table sheet range, the following error occurs when the view is built and no rows are retrieved: Operation is not valid for a partial array formula or data table. #3156
Fixed Issue: For a Select statement, which has an AS clause that refers to an Alias beginning with a single number, the number is removed from column name in the results. When the alias begins with a number followed by '0', an error similar to the following occurs: Invalid 'name' attribute value '019YTD': The '0' character, hexadecimal value 0x03, at position 0 within the name, cannot be included in a name. This issue was introduced in 126.96.36.1999. #2756
Fixed Issue: When an INSERT or UPDATE statement contains multiple occurrences of the same argument, which is denoted by the @ character, the following error occurs with Oracle as the database when the user attempts to save changes: Unable to save changes to <dataset range ID>. Invalid values were detected by the database when saving changes. All valid changes were successfully used. Correct the errors and retry saving any unsaved changes.
The error displayed in the Excel comment for the inserted or updated row is Internal error or Missing IN or OUT parameter at index depending on the number of occurrences of the argument.
When the database is SQL Server, the save operation fails with the following error: Unable to update DataSetRange <dataset range ID>. Unable to update the SQLPassthroughDataSet <SQLPassthroughDataSet ID>. The type for parameter '<parameter>' cannot be deduced in this context.
Similar errors may occur when an
UpdateSQLstatement contains a Case statement. #3230, #3222
View Commentary and Attachments
In 8.2, view comments and attachments are supported. In contrast to the worksheet commentary and attachment capability supported in previous versions, view comments and attachments rely on the context of the view and do not require a range to be defined on a worksheet. #2968
|The terminology that has been adopted to distinguish between the different types of commentary and attachments is worksheet comments, worksheet attachments, view comments, and view attachments. Comments and Attachments are terms used synonymously with worksheet comments and worksheet attachments.|
A view can be configured to allow for both types of comments and attachments. When both are allowed, the Worksheet Comments Editor and View Comments Editor appear as tabs in a docked pane.
The View Comments Editor can be presented with a Chat style user-interface, similar to Slack, as shown below, or with a Grid style. In this screenshot, both view comments and attachments are enabled.
View Comments Properties
Enabledproperty must be set to True for view comments to be available.
KeyItemsdefines the key items that are used to associate or link the comments to the view. Each key item is represented by a unique key and the associated value, and is referred to as a key/value pair. One key item is required.
When the view’s comments are intended to only be available within the scope of the view, and not shared across multiple views, a key item for the view ID should be included.
Other key items can represent, for instance, a selector, such that the view comments on a given thread are available within the context of the selection. For example, if a key item is defined with the
Keyas Market and the
Valueas the Market selector’s token, [T.Market], then a separate comment thread or discussion, can exist for each market.
AutoAddViewIdToKeyItemsproperty is True, which is the default value, a view ID is automatically added as a key item.
AutoAddSelectorValuesToKeyItemsproperty is True, which is the default value, key items for the selectors are automatically added. Selectors that allow multiple selections are not included.
EditModecontrols whether the Chat interface or Grid interface is presented.
When the Chat edit mode is used, the application’s
ViewChatPollingIntervalcontrols how frequently the comments are automatically refreshed. By default, the interval is 30 seconds.
If specified, the
ContextStringis stored with each comment. It can be used to capture context-specific information that may be important to understanding the comment.
AllowUpdatecontrol which operations are allowed. The value can be specified as a formula that evaluates to True or False. When
AllowUpdateevaluates to True, the context menu contains the Delete or Edit tool, respectively.
MaxCommentCharacterscontrols the maximum number of characters that a given comment can contain. A value of -1, which is the default, indicates that the number of characters is not limited.
SortPolicycontrols how comments are sorted in the Comments Editor. DateAscending sorts by date, oldest to most recent. DateDescending sorts by date, most recent to oldest. None applies no sorting.
ThreadPolicycontrols the type of threading allowed for view comments.
OneCommentOnly: Allow only one comment per cell.
ListWithoutThreads: Allow multiple comments, but no threading.
ThreadedOneRootComment: Allow only one comment thread.
ThreadedMultipleRootComments: Allow multiple comment threads.
Undefined: Use of this policy will prevent any comments or responses from being entered.
View Comments Editor Properties
TabCaptionToolTipcontrol the captions and tooltip text presented in the user-interface. <<<
DisplayModecontrols whether the View Comments Editor is displayed in a docked pane or a modal dialog.
DockedControl: The editor is displayed in a dockable pane. The docked location is specified by the
LockedDockedControl: Same as a DockedControl, except that the user cannot move the comments editor to a different docked location.
ModalDialog: The editor is displayed in a modal dialog.
DockedControlLocation- Controls the initial docked location of the View Comments Editor.
The remaining properties are only applicable when
EditModeis Grid, and control the components presented in the View Comments Editor:
AllowContext, and which optional columns are included for the list of comments:
View Attachments Properties
Enabledproperty must be set to True to allow files to be attached to the view. To allow for end-users to attach a file to a view, the
EditModemust be set to Grid, since the Chat interface does not support attachments.
Files can also be attached to a view using the workbook script
AttachmentOperations.AttachFilemethod and overload.
AllowDeletecontrols whether the user is allowed to delete an existing view attachment. The value can be specified as a formula that evaluates to True or False.
MaximumAttachmentsrepresent parameters that control the file type and size, and number of attachments.
View Hierarchy Editor
Fixed Issue: When a view is added to a hierarchy, the views may be listed in the Select View(s) to Insert dialog in descending alphabetical order. *3211
In previous versions, the context menu displayed by the ViewSelectorTree and the ViewSelectorExplorerBar are different and neither reflects the application styling. #2528
In 8.2, the previous context menus have been replaced with a context menu that reflects the application styling.
In 8.2, a new view selector type, ViewSelectorExplorerBarTreeHybrid, combines ExplorerBar groups with tree hierarchies. #2490
Most of the properties are the same as the ViewSelectorTree and ViewSelectorExplorerBar properties. The only property that is unique to the ViewSelectorExplorerBarTreeHybrid is the
ExplorerBarGroupHierarchyDisplayPolicy, which is similar to the
HierarchyRootNodeDisplayPolicyproperty, supported by the ViewSelectorTree.
ExplorerBarGroupHierarchyDisplayPolicycontrols whether an ExplorerBar group is created for each top-level item in each hierarchy OR an ExplorerBar group is created for each hierarchy.
The options include the following:
ExplorerBarGroupForTopLevelItemInSingleHierarchy - When a single view hierarchy is presented by the selector, each top-level item in the hierarchy is represented by an ExplorerBar group. When multiple hierarchies are presented by the selector, each hierarchy is represented by an ExplorerBar group.
ExplorerBarGroupForTopLevelItem - Each unique top-level item in each hierarchy is represented by an ExplorerBar group.
ExplorerBarGroupForHierarchy - Each hierarchy is represented by an ExplorerBar group.
In this example, the view selector’s
HierarchyIDis set to Standard, which is the hierarchy defined in the View Hierarchies Editor on the right. The
ExplorerBarGroupHierarchyDisplayPolicyis set to ExplorerBarGroupForTopLevelItemInSingleHierarchy. For a single hierarchy, ExplorerBarGroupForTopLevelItem would result in the same layout in the view selector.
When the application’s
ViewSelectorProperties.AllowEditViewMetadataproperty is True, additional options are available in the context menu for navigating to a view’s related metadata, including the following: Edit Essbase Connection, Edit Selector, Edit Selector List, and MDX Script from AutoCompleteRanges. #3190
For a SQLPassthroughDataSet, the context menu supports options to navigate to the related item in the SQLPassthroughDataSet Metadata Editor, to the Query Editor for a specific query, or to the SQL Editor for the selected SQL statement.
Fixed Issue: The Workbook Analyzer processing fails with the following error when an analyzed Excel file is currently open in Excel: Analysis failed with exception: WorkbookParser is null. #3102
While this issue has been addressed and the Workbook Analyzer no longer aborts under these circumstances, an Excel file that is currently open in Excel cannot be analyzed and the failure is reported in the Results file. For example, a status similar to the following will appear in the Pass/Fail column for the file: Fail - Exception: The process cannot access the file 'C:\temp\Workbook Analyzer\Income Statement_Template.xlsx' because it is being used by another process.
Workbook Script Editor
In the Workbook Script Editor, a new context menu option, Go to procedure, supports the ability to navigate from a procedure argument name to the referenced procedure. When defined in the current workbook script, the procedure is activated and scrolled into view. When the procedure is defined in another workbook script, the workbook script is selected, and the procedure is selected and scrolled into view. #2384
In 8.2, the Workbook Script Editor supports the ability to easily return to any of the 25 most recently activated cells in the editor. The Return to the previously active cell and Return to the next cell in the previously active cell list tools allow for navigating backwards and forwards cell-by-cell, or for selecting a specific cell from a dropdown list of the cells. #2384
The tools are helpful when used in conjunction with the new Go to procedure context menu tool, since the history of activated cells can span multiple workbook scripts. If the procedure is in another workbook script, returning to the original workbook script is easy to do by using the Return to the previously active cell button or the dropdown list.
Fixed Issue: In the Formula Editor, when the dropdown list of available functions is displayed, the tooltip is not updated for the highlighted item when the up and down arrow keys are used to scroll through the items in the list. #2913
When an event link is added and the user accepts the default name for the procedure, the procedure is automatically created, a new method row is added, and the method selection list is displayed. In previous versions, when an event link is added and the user changes the default procedure name, the procedure is not automatically created. In 8.2, the procedure is automatically created for a non-default, custom procedure name. #3198
ErrorHandlingMode, OpenDebugger, has been removed as an option from the dropdown list in the Workbook Script Editor. The option was never supported, and has always been treated the same as the ThrowException option. #1092
New Function: The
DataTableRangeHasChangesfunction returns whether a specific range within a DataTableRange’s sheet range has any unsaved changes. Any named range or address within the DataTableRange’s sheet range may be used. If an address is not specified, the current cell address is used. #2989
Address - Optional. A range name or address within a data table range. The default is the active cell.
New Argument for
LookupValueFunction - In previous versions, the
LookupValuefunction performs a case-sensitive comparison when the MatchType is Exact, but performs a case-insensitive comparison when the MatchType is Contains, StartsWith, or EndsWith. To allow for the ability to perform a case-insensitive comparison for an Exact match, an optional IgnoreCase argument has been added, which defaults to False. The argument only applies when the MatchType is Exact. When set to True, the case is ignored when looking up the Value. #3174
New Argument for
ExecuteProcedureMethod - The Break argument supports the ability to conditionally exit the procedure from which
ExecuteProcedureis called. This avoids the need to call the
ExecuteProcedurewhen exiting the procedure is appropriate based on a given condition. The Break argument is only evaluated after the procedure associated with
ExecuteProcedureis executed. #3087
PromptForInputmethod has been revised to support the use of tabs and the return key, which allows for multiple lines to be entered, in the input field. #2958
ToolValueChangedEvent Links and
ExecuteProcedure.ToolActionMethod Overload: #2741
In previous versions, the only way to implement the logic for a custom tool using workbook script is to assign the
WorkbookScriptToolControllerto the tool and identify the name of the workbook script and procedure as tool arguments.
In 8.2, an alternative approach is supported, which consists of using the
ToolValueChangedevent links as appropriate for the tool type, and executing the related workbook script logic by using the
ToolClickedevent link is supported for the Button and StateButton tools. The
ToolValueChangedevent link is supported for the ComboBox and TextBox tools. The
ToolValueChangedevent is not raised until the user exits the tool.
Both event links support the following arguments:
ToolValueargument is supported for the
ToolClickedevent link, since the StateButton tool has a value of either True to indicate the state is "on" or False to indicate the state is "off".
Both events can be cancelled by the
CancelEventmethod. This allows for the workbook script, for example, to inform the user and cancel the action when a condition is detected that should prevent the action from being executed.
To illustrate with an example, the following describes how to use the new event links and overload for the Lock Cells and Unlock Cells tools, which appear in the context menu of the sample view.
Instructions for adding the tools to the toolbars configuration and defining the workbook script logic for locking and unlocking cells are not included.
A utility script is used to define the workbook script logic that is executed when the tools are clicked.
ToolClickedevent link is added for each tool. When the event link is added, the default procedure name, OnToolClicked is manually changed to reflect the tool associated with the event, OnLockCellsClicked and OnUnlockCellsClicked.
ExcecuteProceduremethod is added to each event link procedure and the
ToolActionoverload is selected. Then, the
Proceduremethod arguments are set to identify the key of the associated tool and the procedure to execute when the tool is clicked.
The utility script is added to the view’s workbook script
ScriptSet. If the view does not have a workbook script, the utility script can be assigned to the view’s WorkbookScriptID.
Fixed Issue: When a view’s
Asynchronousproperty is True and it utilizes one or more workbook script MethodCondition or CellCondition method arguments that evaluate the state of the view’s workbook, various errors can occur. For example, when using
MethodConditionduring an asynchronous event, the following error occurs: No sheet with the name or index "<sheet name>" could be found in the workbook. #3188
With the introduction of View Commentary and Attachments,
the worksheet commentary functionality has been enhanced to support the ability
to optionally display a Chat interface in the Comments Editor instead of a
Grid interface. The
EditMode property controls which user-interface style is
Comments Editor and Comments Explorer are terms which refer to the user-interface component used to see and edit view and worksheet comments and attachments.