Dodeca Version 7.8.0

January 14, 2020 - Build 7077

This version of the Dodeca 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 2017 (, NetAdvantage 2011, Volume 1 (11.1.20111.2042), Aspose.Cells, Syncfusion Essential Studio, and GdPicture.NET 11.0.6.

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 are supported and tested on Java 1.5. The Dodeca-Essbase service for all Essbase versions 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.

This release contains the following changes:

Essbase Connections Editor

  • The Essbase Connections Editor now supports the ability to determine the versions of various server components associated with a given connection, including the version of the Essbase server, the Java API, and the Dodeca Essbase servlet. The server locale is also available.

    The following properties represent the versions and locale information: DodecaEssbaseServletVersion, EssbaseJAPIVersion, EssbaseJAPIVersionDetail, EssbaseServerLocale, and EssbaseServerVersion


    Since the properties are read-only and are not persisted with the Essbase connection metadata in the metadata repository, the versions and locale values will typically be displayed as blank unless the connection has been used within the current session and has not been changed. The values can also be refreshed by using the Refresh Versions and Locale or the Test Connection tool. #2417

  • Fixed Issue: When an Essbase connection is added or modified, an unnecessary call to the server may be performed when the connection is committed. #2426

Essbase Options

  • Similar to the existing SendBlanksAsZero option, new Essbase option, SendBlanksAsMissing, supports the ability to send blank data cells as missing data. #2397

    The SendBlanksAsMissing option is not supported for ASO databases.

Essbase Outline File Extraction

To facilitate the ability of customers to provide the Dodeca support team with Essbase outlines when needed to, for instance, reproduce issues or address workbook script-related questions, an outline file can now be extracted and automatically saved as a binary artifact.

This capability is available in the Essbase Connections Editor with the Create Outline File Binary Artifact tool.


The type of the generated binary artifact is Essbase Outline File, and the ID is the same as the ID of the Essbase connection. A new version of the artifact is created with each extraction. The value of the OutlineFileExtractMessage property contains the ID and the version of the last Essbase Outline File binary artifact created for the database.


The Binary Artifacts Editor has also been modified to accommodate the Essbase Outline File type. Although the editor supports the ability to explicitly create an Essbase Outline File binary artifact by importing an outline file, the recommended workflow is to use the Essbase Connections Editor.

The Binary Artifacts Editor also supports the ability to filter on this type, as well as export an outline from an Essbase Outline File binary artifact.

As with other binary artifact types, an Essbase Outline File binary artifact can be exported using the Export Metadata to Local Zip File utility. #2153

Essbase Outline XML Extraction

  • To provide more control over Essbase outline XML extraction on the server, a new setting, OutlineExtractXmlVersionRetentionCount has been added to the Essbase connection metadata. The property controls the maximum number of extracted XML versions to keep for a given Essbase connection. By default, the value is -1, which indicates there should be no maximum limit on the number of extracted XML versions to retain for the Essbase connection.

    In addition, the way the OutlineExtractEnabled setting is applied has been revised. The property still controls whether caching of the Essbase outline in XML format is automatically processed when the configured interval of time elapses. The dodeca.outline.xml.cache.check.interval is specified in the file, and defaults to 1440 minutes (24 hours.) However, the property no longer has to be set to True in order to use the Update Outline XML or Outline Viewer buttons in the Essbase Connections Editor. #2390

  • Fixed Issue: By design, when OutlineExtractEnabled is set to True for a given Essbase connection, the Dodeca metadata service checks for changes to the outline at the configured time interval. 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 issue, which has been addressed, is that the XML was being extracted even when no changes had been made to the outline. #2390

Essbase Scripts Editor

  • Fixed Issue - Under some circumstances, deleting text in an Essbase query or script by holding the backspace key can raise an unhandled exception that has the potential to crash the application. This occurs when nested functions are present, and context-sensitive completion hints for multiple functions are displayed in quick succession. #2422

Essbase Server Scripts Editor

  • Fixed Issue - When filtering displayed server scripts by type and an expanded cube contains no scripts of the specified type, the status node text is incorrectly set to Node0, Node1, etc. #2427

HFM Connector

The ability to access HFM data from within a Dodeca application is now supported. The HFM Connector architecture actually allows for utilizing this capability with any version of the Dodeca framework, but the 7.8 release supports a more explicit definition of an HFM connection. #2410

The following documentation provides an overview as well as the steps required for setting up and configuring an HFM Connector:

The Essbase Connections Editor now supports two types of Essbase connections: EssbaseConnection and HFMConnection. When a new connection is created, the New Essbase Connection dialog displays a Type dropdown listing both options.


The properties displayed for an HFMConnection include only those applicable to HFM.


As described in the article, an HFM connection is represented and generally treated as an Essbase connection by the Dodeca client. So, for instance, when selecting an Essbase connection for a view, connections that are configured for HFM are listed along with connections that are configured for Essbase.

Other utilities, namely Search Metadata Properties and Metadata Dependency Explorer, treat an HFM Connection as an Essbase Connection.

The following tools and utilities are not supported for HFM Connections:

  • Log Essbase Request and Response XML to the Server

  • Log Essbase Performance to Server

License Validation

  • Fixed Issue: When the Dodeca metadata service starts, if license information cannot be obtained because the database is temporarily unavailable or the configured credentials are expired or otherwise invalid, the metadata service must be restarted after the underlying issue has been corrected. Until the metadata service is restarted, all clients will receive an error similar to the following when attempting to launch: The Dodeca license could not be validated. A valid license could not be found. #2421

Metadata Dependency Explorer

  • Fixed Issue: The Metadata Dependency Explorer does not detect a depends on dependency between a workbook script and an MDX script when the AddDataCache.EssbaseMDXScript method overload is used. #2414


  • Fixed Issue: When an EssbaseSelectorTreeView, SQLSelectorTreeView, EssbaseSelectorListBox, or SelectorListBox is configured to allow multiple selections, a selected item may be excluded from the selection text displayed in the selector tool (and tooltip) and from the token value, when the item’s display text is embedded in another selected item. For the treeview selectors, specifically when the embedded text is in a previously selected item, and for the listbox, when the embedded text is in a selected item that appears in the list above the item. This issue was introduced in #2424

SQLPassthroughDataSet - Queries

  • Fixed Issue - When using the SQLStandardizationPolicy FullStandardization for a SQLPassthroughDataSet query, block comments that are closed on the same line and immediately following a line comment are corrupted, resulting in the block comment being left open. This issue would occur for a comment similar to the following:

    select column1,
           /* -- column3, */
    from   table1

    In this release, the FullStandardization policy has been updated to ensure that block comments are properly handled, regardless of their content. This issue was introduced in #2396

View Selector Tree

  • Fixed Issue: When the view selector’s ViewSelectorItemToolTipPolicy is set to Description, views without a description will display the description of the previous view with a description, which was hovered over in the view selector. #2387

View Template Designers

  • Fixed Issue: The Unhide Rows and Columns tool fails when the hidden rows or columns are represented by discontiguous ranges. The error message is similar to the following: EssbaseSpreadsheetGear.SetRowsHidden failed: "1:1,11:13" is not a valid range or reference for sheet "Income Statement." #2411

  • Fixed Issue: In the Excel (and SQLExcel) View Template Designer, when copied cells are empty, but contain formatting, the cell formats are not pasted when a Paste Special tool option, which includes formats, is used. #2425

Workbook Script Editor

  • Fixed Issue: When opening the Formula Editor to modify a value, Excel and Workbook Script function names contained in the value are automatically capitalized, which could cause issues under some circumstances. #2412

  • Fixed Issue: Procedures are sorted in descending order when opening the editor. #2389

Workbook Scripting

  • The Substitute function has been deprecated. The function will continue to be supported, but has been replaced with the new Replace function. The Substitute function has a known issue with multiple quoted arguments, which results in a "Missing arguments" error. The Replace function does allow for multiple quoted arguments. #2394

  • New Function: The Base64Decode function returns a decoded representation of a given Base64-encoded string. #2407

    • EncodedString - The base64 encoded string to decode.

  • New Function: The Base64Encode function returns a Base64-encoded representation of a given string. #2407

    • String - The string to base64 encode.

  • New Function: The DataTableRangeColumnInfo function returns the name or data type of a data table range column. The data must be retrieved before calling this function. #2408

    • Type - The type of column information. Valid values are Name and DataType. When DataType is specified, the .NET equivalent of the database data type is returned.

    • Address - Optional (default is the active cell). The address that identifies the data column.

  • New Function: The DataTableRangeColumnInfoByIndex function Returns the name or data type of a data table range column. The data must be retrieved before calling this function. #2408

    • Type - The type of column information. Valid values are Name and DataType. When DataType is specified, the .NET equivalent of the database data type is returned.

    • SQLPassthroughDataSetID - The ID of the SQLPassthroughDataSet that contains the data table.

    • DataTableName - The name of the data table that contains the column. This is the DataTable specified for a Query in the SQLPassthroughDataSet, which contains the data used to populate the data table sheet range.

    • Index - The one-based index that identifies the column within the data table range.

  • New Function : The Replace function replaces existing text with new text in a text string. Unlike the Excel Substitute function, this function does not limit the text argument values to 255 characters, and also allows for specifying whether a match is based on a case-sensitive or a case-insensitive comparison. #2394

    @Replace(Text, OldText, NewText, [CaseSensitive], [InstanceNumber])
    • Text - The text in which the occurrence(s) of OldText are replaced with NewText.

    • OldText - The text to replace.

    • NewText - The text to replace the OldText with.

    • CaseSensitive - (Optional) The default is TRUE. Controls whether a case-sensitive comparison is used to detect a match.

    • InstanceNumber - (Optional) The default is 0, which indicates that all occurrences are replaced. The occurrence of OldText to replace with NewText, starting at 1 to indicate the first occurrence, 2 for the second, etc.

  • New Function Argument: An optional parameter, UseCache, has been added to the DimensionUDAs function control whether the UDAs are returned from the session cache, if contained in the cache, or from the database. #2392

    • DimensionName - The dimension for which the UDAs are returned.

    • ConnectionID - Optional (default is the view’s connection). The ID of the Essbase connection.

    • DefaultValue - Optional (default is an empty string). The value to use if not found.

    • Matching - Optional (default is to match all). Filter for UDAs that match the specified wildcard string based on a case-insensitive match.

    • UseCache - Optional (default is true). Indicates whether the UDAs should be returned from the session cache, if contained in the cache, or retrieved from the database.