Updating to the Latest Version

If you are updating your version of Exago, please consult this guide to be notified of any potential breaking changes. Note that if you are updating from more than one version behind the current one, then the information from that section and all sections above it will apply to you.

If your version is not listed, then we do not support a direct update path to the latest version. Please file a support ticket.

Note: To ensure a smooth upgrade when overwriting a previous installation, ensure that the web server (IIS/Apache/Nginx), the Monitoring Service, and any Scheduling Services are turned off before running the installer.

 

Updating from v2018.2 and earlier

When updating from v2018.2 and earlier, the following topics may require your attention.

Updated Linux Scheduler Installer

The Linux Scheduler installer has been updated in order to allow systemd compatibility and customization of service names. With these enhancements come a few changes in behavior for Scheduler installation including the replacement of start, stop, restart and status checks with a single new script named exago-scheduler.sh by default.

The behavior of the Linux installer will not change for overwriting existing installs; however, any new installation of the Scheduler will function according to these changes. For more information please see the Installing the Scheduler Service on Linux (v2019.1+) article.

Unique IDs are now required for Data Objects

Data Objects are now required to have unique IDs. These IDs will have automatically been assigned if the Data Objects were created using the Automatic Database Discovery tool. However, Data Objects created manually or via the API (as Entities) will need to be manually assigned IDs.

When upgrading to v2019.1, it is imperative that each Data Object is assigned a unique ID if they are not already set. Any new Data Objects created without the use of the Automatic Database Discovery tool must now be assigned unique IDs. If they are not assigned a distinct ID value, a warning message will appear preventing these Data Objects from being created.

Furthermore, any existing API code that dynamically creates new Data Objects should be examined to ensure that unique ID values are being assigned.

Time zone enhancements and changes to scheduling

Enhancements have been made to how Exago considers daylight saving time and other non-linear scheduling issues related to geopolitical time zones. In order to implement these enhancements, the Client Time Zone Name setting has been added where the client's geopolitical IANA time zone may be specified. Furthermore, changes have been made to scheduling calculations with the inclusion of the Noda Time library within Exago, allowing the Scheduler tool and Scheduler Queue to accurately consider DST and other time zone related issues.

For detailed information on these enhancements please see the Time Zone Calculation Enhancements in v2019.1 article.

Upon updating, it is recommended that the Next Execute Date of existing Schedules is reviewed for accuracy. If Client Time Zone Name is being utilized, existing schedules may need to be manually edited or recreated in order to reflect these changes.

Furthermore, certain DateTime values may have been assigned different meanings in the Scheduler Job XML following the implementation of Noda Time. Depending on the modifications made to your implementation of the Scheduler Queue, changes may have to be made to its code:

Changes to Entity creation via the .NET API

In the .NET WebReportsAPI class, the NewEntity() function now requires the string parameter entityName. This parameter represents the name (alias) of the data object, functionally replacing the Entity.Name argument, and must be unique. The Entity.Name argument, however, is still writable.

Ex. Entity etlEnt = api.Entities.NewEntity("New Entity");

Furthermore, the Add() function of the Entities class requires the new Boolean parameter addEntityData, which is set to false by default. In order to add the Entity Data to the local collection, its value must be set to true.

Ex. api.Entities.Add(etlEnt, true);

Each instance of the NewEntity() and Add() functions in use in current .NET API code, must be modified to reflect these changes.

Recommended configuration architectural changes

With v2019.1, major architectural changes have been made to the configuration with the intention of optimizing the system. The system has been modified allowing a portion of the configuration to be extracted into a static configuration, which will be loaded into static memory and made available to all sessions. The contents of this parent configuration extend its specified attributes to the child (dynamic) configuration, which will contain the remainder of the configuration information and will be loaded at each user session.

Caution: If using a static configuration with one or more scheduler or remote execution services, all static configuration .xml files must be added to the Config subdirectory of all scheduler instances.

These optimizations will considerably decrease configuration processing time, as well as decrease overhead in storing and executing scheduled reports, and are strongly recommended. However, these changes are entirely optional and do not need to be implemented. The directive for each configuration file will be defaulted to Dynamic status, requiring no additional set up if these changes are not desired.

New warnings regarding Metadata in the Admin Console

The use of full metadata across all data objects is strongly recommended in v2019.1 as it will reduce the frequency in which the databases are queried whenever metadata is required. As such, new warning icons will appear in the Admin Console next to data objects that do not have metadata properly implemented.

Changes to Active Role settings in the Admin Console

The setting in the configuration indicating the currently active role has changed. The Active Role setting under the Main Settings of the Admin Console retains the Id of the role to be made active upon session start. The active role may now be changed manually using the dropdown.

Changes to Null Tenant Parameters

Following changes made to nullable parameters in v2019.1, in order to disable tenancy on a tenant column, the parameter value for each tenant column now must be set to “{disabletenancy}.” Previously, to ignore tenancy, this parameter value could be left as an empty string; however, in v2019.1, any empty tenant parameters currently in use within the system will be identified as empty string tenant filters.

In order to continue disabling tenancy, the value must be set to “{disabletenancy}” across all instances of tenant parameter values set to empty strings.

For more information, please see the Multi-Tenant Environment Integration article.

Corrected spelling of REST Folder.Propagate property

In previous versions of Exago BI, the REST Folder.Propagate property was incorrectly spelled as "Propogate." This spelling has been corrected and as such will affect any REST API code using the previous spelling of the Propagate property. Any instance of the incorrect spelling of the Propagate property should be corrected after updated.

Folder Management Caching & Database Aggregation enabled by default

The Folder Management Caching and Aggregate and Group in Database settings have been enabled by default in newer versions of Exago in order to ensure that clients are reaping the performance benefits associated with these options without having to explicitly activate them.

 

Updating from v2018.2.5 and earlier

When updating from v2018.2.5 and earlier, the following topics may require your attention.

New Required Field Added for Custom Functions

The Return Type field has been added to custom function objects. This field has been added to support the conversion of filter formulas to SQL so that they may be evaluated in the database using the Convert Filter Formulas to SQL flag in the Admin Console.

Note: For more information, please see the Database Formulas article.

This field is required for all custom functions, and, upon updating, all custom functions will need to be assigned a return value of either String, Integer, Decimal, or Date. Return values for all custom functions already existing before the upgrade will default to String.

LoadAssemblyInExternalDomain Moved to AppSettings

The <loadassemblyinexternaldomain> tag has been moved to the appsettings.config file and has been defaulted to true. This change will rarely affect Exago instances; however, it is important to take note of its new location.

SQLUtils.dll Moved to WebReportsApi.dll

The SQLUtils.dll file has been removed from the base Exago install and has been built into the WebReportsApi.dll file. In order to continue to use its methods, WebReports.Api.SqlUtils will need to be referenced.

 

Updating from v2018.2.1 and earlier

When updating from v2018.2.1 and earlier, the following topics may require your attention.

New Parameters for Conditional Drop Pin Formatting

The @metric_label@ and @metric_value@ parameters within the Conditional Drop Pin Formatting option of the Google Maps wizard are no longer valid. These parameters have been replaced with the serializing parameters @metric_value_<index>@, which automatically receive the values of each map metric in the order of their creation (e.g., @metric_value_1@, @metric_value_2@, and so on).

Any reports containing an interactive map with Conditional Drop Pin Formatting that uses either the @metric_label@ or @metric_value@ will need to be recreated using the new parameters or an error will be thrown upon execution of the report.

 

Updating from v2018.1 and earlier

When updating from v2018.1 and earlier, the following topics may require your attention.

New uses of User Preferences

The new Tutorial Mode feature relies upon User Preferences. Depending on your User Preference Storage Method you may or may not need to take action:

New Configuration Settings

With v2018.2 there are new configuration settings for Exago. Below we’ve listed those that are enabled by default and may warrant consideration or action as you upgrade:

<Showtipsexpressview> and <Showtutorialexpressview>: These settings enable the new Tutorial Mode feature. They are True by default but will have no impact if your User Preference Storage Method is set to None. Be sure to set values for the Parameter userId or disable these features.

See the section Configuration Changes below for a complete list.

Disable the old Monitoring Service

The installer will install the new Monitoring Service as a separate service instead of overwriting the existing one. If installing over an existing installation, the installer will detect and halt any older services running against the monitoring executable.

In order to prevent older services from restarting on system startup, you should remove or disable them. Otherwise there can be multiple services running against the same installation, which will cause duplicate entries to be written to the monitoring database.

This command line command can be used to delete specified monitoring services:

sc delete ExagoMonitoringService.full_version_number

Example

sc delete ExagoMonitoringService.v2017.2.1.117

Back up settings files

Some settings files may be overwritten when updating. Make sure to back up the following files before running the installation:

<WEBAPP>/Config/Other/dbconfigs.json
<WEBAPP>/Config/Other/cdataconfig.json
<WEBAPP>/Config/Other/tagwhitelist.json
<SCHEDULER>/eWebReportsScheduler.exe.config <WEBSERVICE>/appSettings.config

Application settings files for the web application and monitoring service will not be overwritten.

'Name' Property of Filter Objects Deprecated

The Name property of Filter Objects has been deprecated. This property has been obsoleted by the property FilterText.

This change may affect any references to Filter Objects made within the .NET API. For more information please see .NET API General Reference - Sorts and Filters.

 

Updating from v2017.3 and earlier

When updating from v2017.3 and earlier, the following topics may require your attention.

Cartesian Processing Disabled

Special Cartesian Processing is now disabled by default when creating a new configuration file. This change was made to better support certain database-processing features.

If you are starting a new configuration, please be aware that reports with Cartesian products with Special Cartesian Processing set to Default will now behave differently on execution. To retain the legacy behavior, either set the Admin Console flag back to True, or set each report-level flag to True (instead of Default).

Vertical Table behavior change

Vertical Table transformations are now done in the database instead of in application memory. This results in much faster processing as well as the ability to use database-processing features, such as Advanced Joins, with transformed tables.

If you are experiencing issues you can revert to the legacy behavior by setting the configuration file flag <canjointransformobjectsindb> to False.

web.config file

Certain application settings now require editing the <WebApp>\web.config file directly instead of the appSettings.config file. If you use a non-default web.config file, make sure that you are tracking your changes so that future upgrading and scaling can occur without error.

ReportObjectFactory.SaveToApi()

The .NET API method ReportObjectFactory.SaveToApi() has been altered. This method used to return bool to indicate whether the save succeeded or failed. This method now returns void. If the save failed it throws an exception with the details of the failure.

Ensure that you wrap calls to this method within try-catch blocks and properly handle exceptions.

 

Updating from v2017.2 and earlier

When updating from v2017.2 and earlier, the following topics may require your attention.

If you use Application Themes, also see Application Theme Updates for relevant style changes.

REST authorization key field has changed

Upon updating to this version, existing REST web applications will be unauthorized, and most REST calls will fail until action is taken.

The REST web service no longer uses the "Password" field to generate the authorization header key. The new "REST Key" field supplants the Password field for this purpose.

The REST Key field is blank by default upon installation. For security reasons, the Password and REST Key should not be the same key. Either migrate the old "Password" to the new field and choose a different Password, or choose a new REST Key and make sure that the new authorization header is being sent.

In the Admin Console you can click the Generate button in the REST Key field to generate a randomized REST key. This is NOT the encoded version - it must still be encoded according to the authentication method in use.

See REST Authentication for more information.

Internet Explorer 10 is no longer supported

Users will now see an error message when attempting to launch Exago BI in Internet Explorer 10. Please advise your users to upgrade to a supported browser.

 

Updating from v2017.1 and earlier

When updating from v2017.1 and earlier, the following topics may require your attention.

Back Up Your Dashboards

Dashboards created or saved in version v2017.2 are not compatible with older versions of Exago BI. Old dashboards will be updated to the new format when they are saved in the Dashboard Designer. Back up your dashboards in case of the need for a rollback.

Action Events

The Dashboard Viewer has undergone significant overhaul. Dashboard action events created for previous versions may no longer work as expected. These should be retested and modified if necessary.

Note: The Resizable Dashboards action event will no longer work in version 2017.2.

When using the OnParameterValueChange action event, the clientInfo.parameterValuesCtrl object will no longer be available in the context of dashboards.

Internet Explorer 9 is no longer supported

Users will now see an error message when attempting to launch Exago BI in Internet Explorer 9. Please advise your users to upgrade to a supported browser.

Function enhancements

Nine new functions were added, including four aggregate functions and five miscellaneous functions. Additionally, the built-in functions have had their descriptions overhauled, and their arguments have also been given names and descriptions.

This has some implications for how custom functions are created in the configuration and/or the API.

If you build functions in the API, please note that the MinArgs and MaxArgs properties of UdfFunction objects are no longer valid. Instead specify argument information in the ArgumentsJson property. See .NET API General Reference and Config File XML Referencefor more information.

The functions MonthName, QuarterName, and QuarterNumber were added as custom functions in the configuration file. This is to provide administrators with the ability to customize how these functions work.

Interface updates

Many icons and CSS have been updated to a new color scheme. If you use the default Basic application theme or any of the default icons and CSS, please be aware that you may have to make changes in your styling to reflect the new look.

Several new ExpressView themes were added to the application, and several miscellaneous themes have been updated as well. If you use folder management, you will have to manually update these files in your database.

Data Fields pane

The data fields pane for ExpressViews, Dashboards, and Advanced/Express/Crosstab Reports has been consolidated into a single pane in the left most application toolbar (underneath the Reports Tree icon). The settings to enable the Data Fields Search Bar for Dashboards and ExpressViews were consolidated into one setting. See Configuration Changes for more information.

Application themes may require some adjustment to match the new layout.

As always, please be aware that you should turn on Column Metadata if you are to enable the Data Fields Search Bar.

Monitoring Schema Change

The Monitoring database schema has been tweaked. The SystemStatistics table has had a new TransactionId column added to associate memory and CPU rows across common transactions. This was done to facilitate a vertical table transform, in order to report off both memory and CPU usage in the same report or chart.

When the monitoring service is restarted after updating, it will assess the schema in the monitoring service's Monitoring.sqlite table and add the TransactionId column. The scheduler and web application local databases will not be altered. The service will henceforth record a TransactionId for scheduler statistics. No existing monitoring data will be modified.

If, for some reason, the table cannot be altered, the monitoring service will abort.

The SystemStatistics table schema should be altered in the configuration file to reflect this change. You can add the TransactionId column to an existing definition, or create a new vertical definition for the table:

<entity>
<entity_name>SysStats</entity_name>
<db_name>SystemStatistics</db_name>
<!--<datasource_id></datasource_id>-->
<object_type>table</object_type>
<key>
<col_name>transactionId</col_name>
</key>
<transform>
<col_name>type</col_name>
<val_name>value</val_name>
<non_transform_col>
<col_name>timestamp</col_name>
<data_type>8</data_type>
</non_transform_col>
<non_transform_col>
<col_name>hostId</col_name>
<data_type>0</data_type>
</non_transform_col>
<non_transform_col>
<col_name>transactionId</col_name>
<data_type>0</data_type>
</non_transform_col>
</transform>
</entity>

 

Updating from v2016.3 and earlier

When updating from v2016.3 and earlier, the following topics may require your attention:

Standard Reports renamed to Advanced Reports

Standard Reports have been renamed to Advanced Reports throughout the application. 'Standard' has been changed to 'Advanced' in the following areas:

The config file keys under General and Roles/General have changed from "showstandardreports" to "showadvancedreports." Existing configs with showstandardreports will load just fine.

New API enumerations are available: wrApiAction.NewAdvancedReport supersedes wrApiAction.NewReport. wrReportType.Advanced supersedes wrReportType.Standard. Please adjust your code accordingly.

Changes to home page

The 'Main Menu' section of the home page has been redesigned. Several icons have undergone changes, and there is now no logo in the upper left corner. If you are using a custom application theme, you may have to make some changes to your css and images.

The 'Browse Reports' menu is more easily collapsible. Additionally, its expanded or collapsed state is preserved per user, via a new user preference.

ExpressView default theme with folder management assembly

ExpressViews now support custom theme files, which have the extension .wrtev. These are JSON files, unlike previous themes. To create a custom theme, style an ExpressView, then hold Alt-Ctrl-Shift and press the Save icon. The theme is saved to the Reports folder, but you can move it to the Themes folder if you wish; it is accessible from either location. The theme type "ExpressView" has been added to the relevant folder management methods.

If you are using a folder management assembly to store report and theme data, you need to manually add the file {Exago}\Themes\Legacy.wrtev to your theme storage. This is the default ExpressView theme. Otherwise users will encounter errors with ExpressViews.

Furthermore, as of v2017.1, the methods GetReportListXmlGetReportXml, and GetThemeXml are obsoleted by the methods GetReportListGetReport, and GetTheme, respectively.

If Folder Management is being used, the methods GetThemeList and GetTheme need to be updated to return values for ExpressViews.

Top N filters enabled by default

A new way to filter reports, called Top N or Top/Bottom, has been added and is enabled by default. If you want to disable this feature, change the admin setting Filter Settings > Show Top N Filters to False.

 

New Features

v2019.1

For more detailed description see What's New in Version 2019.1.

v2018.2

v2018.1

v2017.3.1

v2017.3

v2017.2

v2017.1

v2016.3

 

Configuration Changes

The following section details the changes made to the configuration xml file.

v2019.1.0

Added to <webreports>

Added to <general>

Added to <column_metadata>

v2018.2.6

Added to <general>

Added to <function>

Moved to <appsettings.config>

Moved to <webreportsapi.dll>

Note: SQLUtils.dll has been removed from the base install. To continue using its methods, it must now be referenced from WebReports.Api.SqlUtils

v2018.2.0

Added to <general>

v2018.1.19

Moved to <appsettings.config>

Moved to <webreportsapi.dll>

Note: SQLUtils.dll has been removed from the base install. To continue using its methods, it must now be referenced from WebReports.Api.SqlUtils

v2018.1.0

Added to <general>

Removed from <general>

Added to <entity>

Added to <join>

Added to <role> • <rolegeneral>

Added to <role> • <security>

v2017.3.1

Added to <general>

v2017.3

Added to <general>

Removed from <general>

v2017.2

Added to <general>

Removed from <general>

Added to <function>

Removed from <function>

v2017.1

Added to <general>

Removed from <general>

v2016.3

Added to <general>

Added to Scheduler configuration file