To obtain a copy of the Exivity installer, you can use the following link:


Upgrading to the latest release is a straight-forward process. More information.



September 18, 2019

Bug fixes

  • Fixed an issue with nested conditions in Transformers If a Transcript script opens a block of statements using 'if' or 'where' but does not have a closing brace, then if the transformer was run for multiple days it was possible to get an error stating that the maximum depth of nested statements had been reached. A check has now been implemented at the end of script execution which will verify that there are no unclosed statement blocks in effect. If there are then a meaningful error message will be logged and the task will fail.

  • Fixed a memory issue in USE A memory related corner case with certain Extractors could trigger an endless loop. This has now been resolved.

  • Removed error for future dates When reporting on a future Budget period start date , Horizon produced an invalid error message. This has now been resolved.


September 11, 2019

New features

  • Added the ability to Manage and View Budgets It is now possible to create and report on multi-level budgets. More information on this feature can be found at

  • Added header validation in the lookup editor

  • Added the ability to change mail server encryption It is now possible to select TLS, SSL or No mail encryption when configuring an e-mail server

  • Ability to disable SAML2 user creation Enabled an option to not automatically create new users in SAML2 configurations

  • Extractor/Transformer editor will wrap long lines The editor will now wrap very long lines in order to make them more readable.

  • Added Budget Viewer API Endpoint Ability in the Proximity API to call budget viewer.

  • Ability to Search for Service and Category Added Service Category as a searchable field in the Services Report. Also added Service as searchable field in Instance Report.

  • Added API suppot for Global Variables The Proximity API now has CRUD support for Global Variables. Support in Glass GUI, Extractors and Transformers will be added in a future release.

  • Solved an issue with component encoding The USE component-encode did previously not encode numeric values. This has now been resolved.

  • Added the ability to manually create services A user is now able to manually create one or multiple services in the Service Catalogue

  • If the logfile is not writable, terminate the Transcript task Transcript changed to fail if log file cannot be written, rather than falling back to using stderr

  • Adjustments are now included in service group subtotals Adjustments were previously ignored from service group subtotals. This behavior has now changed, so that adjustments are now included in both subtotal and total costs in the cost summary report

  • Backend support for previewing a custom DSET In Transcript preview mode, a user can select a non-default DSET to preview. GUI support will be added in future release

  • Added a warning when using Etc timezones When a timezone in a Workflow is set to Etc, the user will receive a warning to make them aware of the Etc timezone behavior. To learn more, please consult the following article:

  • Added new table to database for Global Variables and Environments

Bug fixes

  • Transcript fails if service key exceeds allowed size

    When adding services, if service key is longer then 127 characters, Transcript fails with descriptive error in log file

  • Improved diagnostics in Budget engine If there is no usage data to reporting period, Horizon returns more detailed diagnostic information

  • Fixed crash in case of invalid budget configuration Horizon was crashing when a budget revision contained no budget items. Issue has been resolved, and a more detailed error message has been added

  • Improved error diagnostics in Budget engine in case of a missing filter Horizon was producing incorrect error message when budget item referenced non-existent filter. Error message fixed to report specific probelm

  • Improved error handling when creating an RDF where 2 or columns have the same name with different cases Transcript will now analyse the column headings before creating an RDF and generates a meaningful log message when 2 or more column names would conflict before writing the daily RDF

  • Transcript fails if service key exceeds allowed size When adding services, if service key is longer then 127 characters, Transcript fails with descriptive error in log file


August 28, 2019

New features

  • Added endpoints to the API to create, update and delete service categories CRUD API endpoints are now available for both services and service categories.

Bug fixes

  • When encrypting variables, the encrypted result is now deterministic for any given system When encrypting variables, it was possible that for the same input value, different encrypted values would be generated in the script. This was harmless, but has now been fixed.

  • Buffer reset before HTTP retries There was an error were a buffer was not reset before retrying HTTP request. Therefore a buffer in some situations could contain the result of several tries, causing an invalid XML or JSON payload. This error was fixed by resetting the buffer before every retry.

  • Step output limited to 1MB Log from standard output of a Workflow step is limited now to 1 MB to minimize database polution

  • Added an automatic process to clean up excess workflow logs

  • The level parameter on the accounts API endpoint is now an integer instead of a string

  • Improved API error messages for validation errors

  • Added valid default value for service.charge_model

    Newly added field charge_model contains NULL values for existing services. These are now migrated to peak (1) as that is the default service charging behavior.

  • Upgraded nginx to version 1.17.3

    Upgraded the nginx web server from version 1.17.1 to version 1.17.3


August 08, 2019

Bug fixes

  • Fixed variable resolution after 'if' block

    Transcript sometimes failed to resolve variables after skipped 'if' block.

  • Upgraded PHP to version 7.3.6


August 06, 2019

New features

  • Removed Github links in white labeled configurations Removed the github links for extractors and transformers when using a white labeled install

  • Removed default logo and icon for white labeled configurations Removed the standard Exivity logo's and icons when using a white labeled install

  • Updated disclaimer for white labeled configurations Disclaimer does not reference Exivity anymore when using a white labeled configuration

  • Extractor scripts can now use the HTTP PATCH method The 'http' statement now supports the HTTP PATCH method

Bug fixes

  • Fixed an issue with notification drivers

    Pigeon could not find the notification drivers for Slack and SMS. This has now been fixed.

  • Fixed an invalid API error when resetting password Reset password could return an internal error (500), if a password didn't exist for the user. This was an invalid error, and has been changed to a valid 204 response.


July 31, 2019

Bug fixes

  • Fixed an issue where a log message could be incorrectly tagged as an error When creating services, an error message may be generated in the logfile which begins "services: set proration for service". This should be a debug level message and is not an error. This has now been fixed.

  • Fixed an issue where the error message generated by the append statement could be incorrect Fixed an issue whereby when appending one DSET to another, if the first DSET did not exist then the resulting error message in the log would state that it was the second DSET that doesn't exist.

  • Fixed an issue with embeds When the embed option is enabled, if the fields in the CSV to import were quoted then embed would not work as expected. This has now been fixed.

  • Don't resolve variables in 'else' branch being skipped Transcript doesn't resolve variables in 'else' branch when 'else' is not executed, therefore it removed 'unknown variable' errors in the situations when variables declared and used only inside 'else'


July 10, 2019

If your Exivity installation connects to the Internet thru the use of an Internet Proxy, you will need to ensure that a number of system variables are in place according to this manual before upgrading to version 2.4.7 or higher

New features

  • Transcript script content is stored in RDF A copy of the ETL processing script used for generating data for any given day is now stored in each RDF alongside the processed data itself, thus enhancing support and diagnostic processes.

  • New import option to include the name of the imported file(s) It is now possible in a Transformer to automatically add a column to each dataset, which will contain the name of the imported file(s). This can be achieved by enabling the filename_column = true import option.

  • Support for auto retrying failed HTTP requests in USE If an HTTP request fails during the execution of an Extractor, the script can now be changed to set the option http_retry_count. This will determine the amount of times a HTTP request is retried. The default value is 2 retries.

  • Extractor scripts now have separate automatic variables for diagnosing HTTP related issues When connecting to a server over HTTP, the HTTP_STATUS_CODE variable will now always contain a numeric value. Any textual supplementary information pertaining to that value can be found in a new variable called HTTP_STATUS_TEXT. In the event that a timeout occurs and no HTTP response is received, the HTTP_STATUS_CODE variable will contain the value -1.

Bug fixes

  • Continue when http get_header yields no results When retrieving the text of a header from an HTTP response in an Extractor using the http get_header feature, the Extractor script wil now continue to execute even if no header content was found.

  • Avoid overwriting of services because of charge_model introduction Fixed a bug where if the charge_model was changed, the update would not be reflected after executing the Transformer script. Now, when using option services = overwrite in a script, services will be recreated if the charge model changes.

  • When creating services sometimes a rate revision would be created when there was no need to do so Under certain circumstances, when updating the service definitions via the services statement in Transcript a new revision could be created which was a duplicate of the existing revision. This has now been fixed.


June 21, 2019

New features

  • Service category totals are added to summary reports

  • Removed the 'Use local storage' configuration setting Now, the data in the interface is always synced with the server in order to better ensure data integrity.

  • Fixed an issue when aggregating a DSET that is not the default DSET The aggregate statement may have failed to correctly aggregate a DSET if the DSET ID specified in the statement was not the default DSET. This has now been fixed.

  • When logging out, users are redirected to the login screen automatically Instead of showing an intermediate screen requiring a user to first click on a link to login again.

  • Streamlined the usergroup permissions to align with the new navigation structure

  • Created new automatic variable UNIX_UTC in USE A new automatic variable is now available in extractor scripts. This is called UNIX_UTC and will return the current UTC time as a UNIX timestamp value.

  • Implemented a new 'average' monthly charging model Monthly services may now be created which are charged based on the average quantity used throughout the month.

  • Deprecated the current budget feature in favour of a new implementation The new budget implementation will be released in Q2-2019.

  • Added an option to Transcript to skip invalid records during import It is now possible to skip invalid records during the import phase of a Transformer.

  • Improved ordering of options in the side menu The menu on the left hand side of the interface has been overhauled in order to group the options in a more logical manner.

  • Now only privileged users will see an alert message when debugging is enabled

  • Manual account administration The Exivity back-end now supports manual creation, editing and deletion of accounts GUI support for this feature will be included in a future release

  • Added lookup editor for ad-hoc data sources Lookup data sources can be used for various types of data sources not obtainable through automated extractors. Edit lookups by navigating to Data pipelines > Lookups. Read more at

  • Added the option to modify or translate certain labels displayed by the Exivity interface. Find the new options by navigating to Administration > Settings > Translations.

Bug fixes

  • Workflow notifications status trigger Fixed an issue where a notifications was always send regardless whether the failed / successful condition was met

  • Workflow status log historical dates Fixed an issue where the status logs for a workflow could display incorrect timestamps

  • Fixed an issue which could lead to a crash in the GUI for certain edge-case adjustment configurations

  • Fixed a small issue which prevented empty metadata values to be stored

  • Do not send notifications for internal workflows Changed behavior of the Workflow engine to only send out notifications for user created workflows, and not for internal/garbage collector jobs

  • Updating Workflows during Workflow execution Fixed an issue were none of the workflows could be changed while a Workflow was running

  • Fixed a bug which prevented certain pages from showing correctly when no reports are defined

  • Fixed an issue whereby retrieving audit information from the API could fail

  • Fixed an issue with workflows containing 12 steps or more Fixed an issue where workflows with 12 or more steps could cause an API error.

  • Fixed an issue with newlines in scheduler log entries On occasion, it was possible that log entries generated by the scheduler would contain newline characters which could cause problems with the log viewer. This has now been fixed (log entries should no longer contain newlines).

  • Fixed an issue whereby credentials in a connection string could appear in the logfile When using a direct connection string with credentials to collect from an external database, under some circumstances an error message could contain a copy of the connection string. Log entries containing connection strings should no longer contain credentials.

  • Workflow management menu option is hidden from users without permission to manage workflows When logged in as a user who does not have permission to manage workflows, the GUI will hide workflow management options. Previously, users without the rights to do so were unable to perform any actual workflow management even though the option was displayed.

  • Fixed an issue that could cause workflows to stop working Fixed an issue whereby on rare occasions, the scheduler could leave its configuration database in a locked state, leading to problems running workflows.

  • Implemented support for decompressing ZIP files that expand to more than 2Gb

  • Fixed nested foreach loops Fixed issues where a nested foreach loop could cause issues with some XML parslets

  • Fixed an issue whereby the data status associated with a report would sometimes not be shown When accessing a report definition, sometimes the data status (the list of dates and the status of the data associated with each date) would not appear until the report definition was accessed a second time. This has now been fixed.

  • Fixed a bug which sometimes made it impossible to go into full-screen mode in the GUI

  • Fixed a bug which caused a warning to be incorrectly displayed when users tried to change their password

  • Fixed an issue whereby on rare occasions monthly services could have adjustments applied more than once Fixed an issue whereby if a monthly service had new instances appear on a date in the month after the date that the first instance of that service was seen, and if adjustments were applied to that service + instance combination then it was sometimes possible for the adjustments to be applied more than once.

  • Fixed an issue which could cause a GUI crash after deleting a service After deleting a service, it was possible that the GUI would display an error when subsequently viewing service rates. This has now been fixed.

  • Fixed a rare issue where importing into a transformation script could cause a crash When importing files using a wildcard, Transcript would crash if one of the files to import was empty and 'option embed' was enabled. This has now been fixed.


January 23, 2019

New features

  • The 'export' statement will no longer generate an error if asked to process an empty DSET while option mode = strict is set

  • Implemented user-definable timeout setting when retrieving data from HTTP sources

    When retrieving data from HTTP sources, the number of seconds to wait for a server response before timing out can be defined using set http_timeout.


January 17, 2019

New features

  • Added editable labels for report levels

  • Added the ability to mass delete services

  • Invoice report is now called Summary report

  • The 'finish' statement in Transcript can be made to cause the task to fail if the DSET it's given is empty

    Previously, when creating an RDF, the finish statement would perform no action if the DSET to create the RDF from was empty. This is still the case if 'option mode = permissive' is in force, but if 'option mode = strict' then the finish statement will now generate an error. The error will cause the task to fail for the current day, and if 'option continue' is not enabled, the task will be terminated, else the task will move onto the next date in the range of days being processed.

  • When importing multiple files using the pattern option to import, any invalid files will be skipped When multiple files matching a pattern are imported, any of those files that are malformed or otherwise non-importable will be skipped.

  • Added the ability to exit a subscript invoked via #include in a transform script The 'return' statement, when used in a Transform script, will now cause script execution to resume from the statement following the #include statement in a parent script that referenced the script containing the 'return' statement.

  • Increased the performance of the correlate statement Correlation should now be significantly faster than it was previously

  • Increased the performance of the aggregate statement

    Aggregation should now be significantly faster than it was previously

Bug fixes

  • Fixed a bug where users couldn't update their own details (including their password)

  • Fixed a bug where only 10 datasets were displayed when creating a new report

  • Fixed a bug where the mail sender name was not persisted in the configuration

  • Fixed an issue when importing CSV files containing quotes

    When importing a CSV file with two successive quote characters at the end of a field, Transcript would reject the file as invalid. This has now been fixed.

  • Fixed an issue where deleting data let to GUI crashes on occasion When deleting data (RDFs) associated with a report, it could be that if one or more days had previously been overwritten, a stale database entry would cause issues after the RDFs were deleted. This has now been fixed.

  • Fixed a bug whereby using terminate within the body of an if statement in a Transform script could cause an error Invoking terminate in an if block when running a transform script against a range of dates could cause the error The maximum number of nested blocks (32) is already in use. This has now been fixed.


December 13, 2018

Bug fixes

  • A bug was fixed which could lead to an error in the invoice report when using a rate with a minimum commit set

  • Fixed an issue with minimum commit It was possible that when applying minimum commit to a service, that other services would be affected by that minimum commit. This has now been fixed.

  • Fixed an issue when retrieving NULL fields from an ODBC query When using ODBC to collect data, the presence of NULL values in the results could cause USE to crash. This has been fixed.


November 30, 2018

New features

  • Added the ability to view instance level details on the invoice reports.

  • Added the ability to customize the report exports (CSV format only) field delimiter and decimal separator. These settings are system-wide and available to administrators by navigating to Administration > Configuration > Formatting.

  • Added the ability for users to reset their own passwords. This requires the email address of users to be set and a working server configuration for sending emails. This can be configured in Administration > System > Environment.

  • Logfiles generated from workflow tasks now include a timestamp. This prevents logfiles from consecutive runs of the same task from being overwritten.

  • Workflow status now automatically refreshes after a manual run.

  • Added a new Environment tab in Administration > System. In this tab, information about the system the Exivity instance is running on can be filled out. In the future this will be expanded to include more configuration options.

  • Invoice reports now include minimum commit uplifts as separate entries.

  • Carriage-returns and line-feeds in data extracted using ODBC are now replaced with spaces. When extracting data with USE, the presence of newlines in the data could cause corrupt CSV output. Carriage Return and Line Feed characters in data extracted from ODBC are therefore now replaced with spaces.

  • Enhanced expression support in the Extractor component. Conditional expressions have been enhanced in the Extractor component such that more complex conditions can be evaluated and additional operations can be performed. Additionally, it is now possible to set a variable value using an expression.

  • Services can now be manually deleted using the GUI.

Bug fixes

  • The datasets selector visible when creating a new report definition is now alphabetically sorted.

  • Fixed a bug which caused the contents of extractor editor to not update after updating variables. The contents of the extractor script itself was always saved after updating variables, only those changes were not visible in the editor.

  • Fixed a bug which caused the account depth selector to reset after performing an upgrade.

  • Fixed a bug which could cause the interface to become unresponsive after preparing a report.

  • Fixed an issue when running Transform scripts for days with 25 hours in them. When running a Transform script with a data-date representing a day where the clocks were adjusted such that the day had 25 hours in it, the script would be executed a second time automatically once the first had completed. This could lead to unexpected errors and log entries on occasion, and has now been fixed.

  • When writing to CSV files in USE, embedded CR/LF characters are converted to spaces. USE will now automatically strip out embedded carriage-return and line-feed characters when writing data to CSV files. Each unique occurrence of one or more sequential CR/LF characters will be replaced with a single space.

  • Fixed a bug whereby the body of an 'if' statement in the Transformer could terminate prematurely. In some cases, using an 'import' statement with an 'options' block within the body of an 'if' statement could cause statements following the 'import' to be skipped. This has now been fixed.


November 22, 2018

Bug fixes

  • Updated the documentation links in the header to point to our new documentation site.

  • Fixed grouping behaviour in the details table of the accounts report. In some cases, accounts could appear grouped under the wrong parent account in the 'Detailed' table in the accounts report.


October 31, 2018

Bug fixes

  • Fixed an issue with incorrect quantities sometimes showing on reports. Occasionally, when running a report for a range of dates, the quantities on one or more services differed from the quantity for that service shown when a report was run for a different date range (or just the day in question). This issue has now been fixed.


October 26, 2018

New features

  • The USE 'basename' statement can now write its results to a new variable. Previously, the 'basename' statement would always modify the value of the variable whose name was supplied as the argument. It can now also accept a literal string and create a new, or update an existing, variable to hold the result.

  • Archives in GZIP format can now be decompressed using USE. USE now supports the 'gunzip' statement which can be used to inflate GZIP'd data. Details of how to use this statement may be found at

  • FIxed an issue whereby when running a Transform script the Audit database would be locked for the duration of the task. Transcript now only opens the Audit database when it needs to, reducing the likelihood of encountering errors pertaining to a locked audit database in the logfile.

  • A new system variable is now available containing the number of days in the current month. The existing dataMonth variable, which contains the yyyyMM of the current month is now supplemented with a new variable called dataMonthDays which contains the number of days in that month.

  • Changed default service type to 'automatic' in the 'services' statement in Transcript. When creating services, if no 'type' parameter is provided then the default service type will now be be set to 'automatic'.

Bug fixes

  • Fixed an issue whereby when creating a service, the audit indicated that the service creation failed. When a service definition is successfully created, Transcript will now correctly audit that event as opposed to indicating that the attempt failed.

  • Fixed an issue whereby over-writing services could result in database errors in the logfile. Sometimes when overwriting services, a constraint error would be logged in the logfile and the service would not have any rate associated with it. This has been fixed.


October 18, 2018

Bug fixes

  • Fixed an issue that could cause database corruption.

    Fixed an issue that could cause database corruption due to the Aeon database being held open for long periods of time.


October 10, 2018

New features

  • Added a live preview feature when working with transforms. A new feature has been added which can display a live preview of the transformer output. Note: this feature is currently in beta and will be further updated in the next release.

  • The code editor has been updated. The code editor for Extractor and Transformer scripts has been updated (it now uses the open source Monaco editor - resulting in a significant improvement over our previous editor. This greatly enhances the user experience when editing scripts in the GUI. Note: This change also lays the foundation for more advanced features going forwards.

  • Charges for monthly services now take quantity into consideration as well as price. If two or more days in a month have the same highest price then the one with the highest quantity will be reported. Previously, the first seen was reported which could lead to discrepancies between the reported quantity and price on the report.

  • When running reports blank instance values are now displayed as a hyphen. When running reports against data with blank instance values in the usage data, the instance value will now be represented as a hyphen, which improves the aesthetics of the report.

  • Added hardware information to Transcript log-files. Log-files created by Transcript now contain information about the CPU and RAM at the top of the log.

  • Increased auditing information in Transcript. Events relating to service, rate and RDF changes are now audited

Bug fixes

  • Removed COGS option for users without rights to view COGS information. In the services and instances report, users with no access to view COGS will no longer be able to select the COGS type in the details table. Note: This bug never allowed users without appropriate access rights to view the actual COGS data.

  • Fixed a bug where the list of datasets on the report definition page was only showing the first 10 results. This could result in an inability to create new reports using datasets that were not included in those results

  • A link to the instances report has been added to the search feature in the header.

  • The service interval column in the instances report now contains data. Previously this column was always blank

  • Fixed a bug where searching for units within a services reports leads to a GUI crash.

  • Fixed an issue whereby very rarely a charge would not be included in reports. On very rare occasions, information in a record in the prepared report caches was not included in the output when a report was run. This has now been fixed.

  • Fixed an issue that could cause Aeon database corruption. Fixed an issue that could cause database corruption (and workflows to fail) due to the Aeon database being held open for long periods of time.

  • Fixed an issue whereby re-using an existing named buffer in USE for ODBC purposes could lead to unexpected results. Fixed an issue in USE whereby if an existing named buffer was re-used to store data retrieved from ODBC then a new buffer could have been created with the same name as the existing buffer, and attempts to reference it would return the old data.

  • Fixed an issue when executing ODBC queries that return no data. Using the ODBC capability to execute a query that returns no data will no longer cause an extractor to return an error.


September 05, 2018

New features

Bug fixes

  • Fixed an issue whereby 'append' could crash if one or other DSET was empty When executing the 'append' statement in a transformation script, if one or other of the DSETs involved in the operation was empty (having no data rows) then a crash could occur. This has now been fixed.

  • Fixed an issue where an expression that evaluated as FALSE could show the wrong line number in a log message The DEBUG level logfile entry indicating an expression is true or false would contain a reference to the wrong line number if the expression evaluated to false. This has now been fixed.

  • Fixed an issue whereby some comparisons would evaluate incorrectly in expressions Fixed and issue whereby in some cases where a value was quoted in an expression, the quotes would be considered part of the value itself.

  • Fixed a condition where reports were not showing for non-admins

  • Quantity metric is available again for the timeline chart on the services and instances reports

  • Reports in the navigation menu dropdown are now alphabetically ordered


August 28, 2018

New features

  • Ability to filter data in report using search query: The search bar in Accounts, Services and Instances reports now supports the use of operators (for example >and <) to filter your results based on column values or strings.

  • Add avg_unit_based_rate to report/run API endpoint Added the average per unit rate field to the report/run API endpoint and a placeholder for the average per interval rate which will be implemented later.

Bug fixes

  • Fixed an issue where deleting services could lead to adjustments not displaying correctly

  • Rate column in report details tables now use the configured rate precision setting

  • Fixed an issue whereby scheduled tasks that output more than 4kb of data to the console could suspend execution and do nothing until they timed out


August 22, 2018

New features

  • Transcript can now normalise scientific decimal numbers to standard format: When processing data that contains numbers in scientific format (such as 2.1E-5) the normalise statement can now be used to convert these to standard decimal notation (0.000021 in the above case) using the form normalise columncolNameas standardwhere colNameis the column containing the values to convert. Any values already in decimal will be unchanged, except that any trailing zeros will be removed from them. Non-numeric values will be converted to 0.

  • Support group and group_col as service parameters in Transcript: In the serviceand servicesstatements in Transcript, the parameters to define the service category are category and category_colThese parameters now have aliases of groupand group_col respectively, for those who prefer to use that terminology.

Bug fixes

  • The replace statement in Transcript will no longer behave unexpectedly when given an empty string as the target to replace: When using replace to update substrings within the values in a column, if the target string (the text to replace) is empty then Transcript will generate a meaningful log entry explaining that it cannot be used to replace empty strings, and will no longer overwrite non-blank column values with multiple copies of the replacement text.

  • The export statement in Transcript now supports backslashes as path delimiters: When specifying a relative path for the exportstatement, Transcript will automatically create any directories that do not exist in that path. Previously there was a bug whereby the auto-creation of those directories would only work if UNIX-style forward slashes were used as delimiters in the path. This has now been fixed and Windows or UNIX style delimiters may be used when specifying an export path.

  • Fixed a bug in the scheduler that could cause schedules to fail: In some cases schedules could fail for no obvious reason. This has now been fixed.


August 17, 2018

New features

  • USE scripts can now be forced to terminate with an error result Previously, the 'terminate' statement could be used to cancel script execution, but its use would always indicate that the script ran successfully. This may not be appropriate in all cases (for example if an error is detected by the script itself but ultimately cannot be resolved satisfactorily). The 'terminate' statement will still cause a script to exit with a success result by default, but may now be invoked as 'terminate with error' such that an error status is returned instead.

  • Added more service attributes as optional columns in the reports details table. The following extra service attributes can now be enabled as columns in the report details table: interval, charge type, cogs type and proration.

  • Support 'group' and 'groupcol' as service parameters in Transcript In the 'service' and 'services' statements in Transcript, the parameters to define the service category are 'category' and 'category_col'. These parameters now have aliases of 'group' and 'group_col' respectively, for those who prefer to use that terminology.

  • Reduced the chance of a 'database is locked' warning when preparing reports When preparing reports, on occasion it is possible for a warning to appear in the logfile pertaining to the global database being locked. When this warning happened, it could cause some days in the reporting period to remain unprepared. A known specific cause of this issue has been fixed, significantly reducing the likelihood of it happening.

Bug fixes

  • Fixed an issue where an ODBC connection could cause a crash in USE When executing an ODBC-based collection in USE, under certain circumstances an incorrect direct connection string could cause a crash. This has been fixed. Additionally, when an ODBC error occurs the error written to the logfile contains more detail than in previous releases.

  • The order of workflow steps in the status tab now corresponds to the order of workflow steps in the configuration tab.

  • An issue has been fixed where old user preferences could conflict by updates in the GUI, leading to errors when loading the service and instance reports.

  • An issue has been fixed where certain characters in a workflow status could lead to errors in the API. Sometimes, when running a scheduled task, the output written to the database contains non-printable characters. The API now re-encodes those characters, which means the GUI will now correctly show the status for those workflows.

  • When selecting a reporting period that spans multiple months, the charts will now only show a single label for each month.

  • Fixed a USE crash bug with certain combinations of conditional expressions Fixed an issue whereby if an expression with more than 2 parameters was followed later in the script by an expression with fewer parameters than the first, a crash would occur.

  • Fixed issue where an extractor could crash when using a parslet after formatting some JSON A bug has been fixed whereby if the 'json format' statement was used to prettify some JSON in a named buffer, use of a parslet to extract data from the JSON could cause a crash.

  • Fixed an issue where sometimes an XML parslet would cause an 'out of memory' error in USE When using an XML parslet, it was possible that an 'out of memory' error would be returned in the logfile and the script would fail, even on small input files. This has now been fixed.


August 03, 2018

Bug fixes

  • The 'export' statement in Transcript now supports backslashes as path delimiters

    When specifying a relative path for the 'export' statement, Transcript will automatically create any directories that do not exist in that path. Previously there was a bug whereby the auto-creation of those directories would only work if UNIX-style forward slashes were used as delimiters in the path. This has now been fixed and Windows or UNIX style delimiters may be used when specifying an export path.

  • The 'replace' statement in Transcript will no longer behave unexpectedly when given an empty string as the target to replace

    When using 'replace' to update substrings within the values in a column, if the target string (the characters to replace) is empty then Transcript will generate a meaningful log entry explaining that it cannot be used to replace empty strings, and will no longer overwrite non-blank column values with multiple copies of the replacement text.


July 25, 2018

New features

  • Increased default timeout when retrieving data from HTTP servers

    Currently a USE script will fail if more than 3 minutes elapse without response when downloading data from an HTTP server. This has been increased to 5 minutes to cater for slow APIs.


July 19, 2018

New features

  • Transcript can now normalise scientific decimal numbers to standard format When processing data that contains numbers in scientific format (such as 2.1E-5) the 'normalise' statement can now be used to convert these to standard decimal notation (0.000021 in the above case) using the form 'normalise column colName as standard' where 'colName' is the column containing the values to convert. Any values already in decimal will be unchanged, except that any trailing zeros will be removed from them. Non-numeric values will be converted to 0.

  • When accessing the GUI via http visitors will be redirected to https automatically

  • Progress indicator in the report/run endpoint can be disabled To disable, set the progress parameter to 0. More information at our API documentation.

  • Filter selectors show which items are present in the current report The service category selector in the services and instances report, and service selector in the instances report will show items not available in the current report grayed out.

  • On-demand workflow execution Workflows can now be executed on demand. Also the schedule for a Workflow can be disabled.

  • Single workflows can now have multiple schedules

  • Workflows can now be scheduled in a specific timezone

  • Added the average rate column to the reports details table

  • Added the ability to show various totals in reports summary widget Summary widget now has the option to show all totals (previous behaviour) or only the totals for the current search results, or for the current pinned items.

  • Added report shortcuts to the dashboard

  • COGS, fixed COGS and fixed prices are now evaluated per instance when preparing reports Previously, if a service was created that used any of fixed_price_col, cogs_col or fixed_cogs_col to indicate that the rate in question should be obtained from the usage data for any given day, then the charge engine would use a single value from the specified column(s) and apply that to all instances of the services for the day. Now, each row of usage is individually consulted when preparing reports such that the specific value on that row is used (as is already the case when using 'rate_col' for pass-through rates)

  • When extracting XML or JSON values, parse errors no longer cause the USE script to terminate Previously, when using a static parslet to extract XML or JSON values from the contents of a named buffer, if the buffer contained invalid JSON or XML then the USE script failed with an error in the log saying that the contents of the buffer could not be parsed. Now, if a named buffer contains data that is not valid JSON or XML, any attempt to extract a value from it using a static parslet will be expanded to the value EXIVITY_INVALID_XML or EXIVITY_INVALID_JSON.

  • Improved performance and lowered memory requirements when running a report Previously, in some circumstances running a report could take longer than expected and consume large amounts of memory in the process. The performance and memory use of the report engine have both been improved.

  • Reduced memory and increased performance when preparing reports Previously it was possible for some installations to use large amounts of memory and exhibit unreasonably slow performance when preparing reports. Preparing reports is not intended to be a realtime feature and will always incur some time overhead, but this time should now be significantly reduced in many cases, and the memory required to complete the process will be much less.

  • New output format for the /report/run endpoint in the API Due to changes to the charge engine, the output format of the /report/run endpoint in the API has changed. An up-to-date overview of the attributes returned by this endpoint can be found at our API documentation.

  • Free formatted ODBC connect strings are now supported in USE This exposes all ODBC driver options to the user, and avoid the requirement of creating manually DSN at the operating system level.

  • The 'split' statement now supports discarding unwanted result columns When using the 'split' statement it is now possible to discard all but a selected range of the resulting new columns.

Bug fixes

  • Fixed a Transcript crash when deleting a DSET Transcript will no longer crash in certain circumstances when deleting a DSET using the 'delete dset' statement.

  • The Transcript 'export' statement now creates a path automatically When exporting data from Transcript, if a relative path is specified as part of the export filename, Transcript will automatically create the path if it does not exist. The path will be created relative to /exported

  • Changed the behaviour of some columns in the report tables The optional _per unit charges and per interval charges columns on the report pages represent a fraction of the total charge and as such should be considered a subtotal rather than a rate._

  • Allow users to see anonymous roll-up accounts even if they have no access When a user only has access to some children of a parent account, reports will now show the combined usage of those accounts grouped as an unknown account in the reports.

  • Fixed a rare bug where incorrect character encoding in the data source could lead to reports not loading

  • Currency symbol is no longer shown for quantity graphs

  • An issue has been fixed which could lead to empty reports when there actually was report data In some cases, selecting certain combination of filters could lead to reports showing No data while there actually was report data for the current set of filters. This behaviour was observed mainly on the instances report page.

  • Usernames are now allowed to contain special characters As a side effect of changing usernames to be case-insensitive, using special characters was no longer permitted since v1.8.1. This restriction is now removed.

  • Changed the behaviour of clearing the charge engine caches Clearing the charge engine (Edify) caches unprepares all reports. The button on the About page now reflects this.

  • It is now possible to use decimal values for adjustment amounts Previously this was only possible through the API. The GUI has been updated to also support this.

  • Changing the date in the invoice report no longer resets the account selection Previously, when changing the date range on the invoice report screen, the current account selection (dropdown inside the invoice page) would automatically select the first account in the list. This has now been fixed to remember the selection when changing the date.

  • Exivity now works correctly when installed in a directory containing spaces

  • Transcript variables were not properly expanded when using in an import filter

  • Export of consolidated invoice now contains data for all accounts Previously, selecting the CSV or Excel export of a consolidated invoice would only export data for the first account on the invoice.

  • Fixed crash bug in the 'services' statement When creating services, Transcript will no longer crash if a blank interval or model value is encountered while building the service definitions.

Older release notes can be found here.