New Features
TSM-8663: Removal of Support for PostgreSQL 13
[BREAKING] Version 13 of the PostgreSQL database is out of support and no longer supported.
In order to continue using PowerTSM, an upgrade to version 14 or higher is required!
TSM-8631: WebTSM Services: Optional Startup Check for Configuration and License Availability
The WebTSM Services can now verify that HAKOM.Config and the HAKOM.License are present and readable before it begins serving requests, retrying for a configurable period and refusing to start if they remain unavailable. This prevents the service from coming up in a broken state when those files are not yet ready at startup, which previously surfaced as runtime errors. The check is disabled by default and enabled via the HAKOM_WEBTSM_CHECK_FILES_BEFORE_STARTUP environment variable (must be set to true), with the number of retries after first failure controlled by HAKOM_WEBTSM_CHECK_FILES_RETRY_COUNT (default 10, -1 for unlimited).
TSM-8476: Removed obsolete constructors in .NET API
The obsolete constructor without parameters of the class AttributeValueSerialization and the constructor with only DAL as parameter of the class ImportTask have been removed.
TSM-8394: AttributeManager: Edit Unit Assignments on List Attributes
Unit assignments on list attributes can now be modified after creation. Note that this feature requires an HTTP connection of version 4.11 or higher. When editing, all available units are displayed with checkboxes reflecting the current assignments. If a unit cannot be removed due to existing usage, a confirmation dialog prompts the user to either force the removal or cancel.
TSM-6780: Added Auditing to Authorization Tables
Changes in authorization tables (database tables with prefix FWS_) are now audited in _ARCHIVE tables.
TSM-6979: TSM App: Attribute Rows - Only Show One Value When Using Time Slices
AttributeDefaultBehavior added as a setting in HAKOM.Config. It controls which time slice of an attribute with time slices is displayed when attribute values are shown together with time series data in the TSM App. Now (default) returns the value of the newest time slice that is not in the future. FirstInRange returns the value valid at the start of the queried period; if no time slice is valid at the start yet, the first time slice beginning within the period is used. LastInRange returns the value valid at the end of the queried period. None returns no values for user-defined attributes; system attributes are still shown. In all cases the result is empty if no matching time slice exists or the value of the selected time slice is empty (empty values are not skipped).
TSM-6980: TSM App: Attribute Rows - List Attributes Can Be Displayed as Values or Descriptions
When displaying assigned list attributes, the user can chose, whether their value or description is used. By default the value is displayed. If the user wants to show the list attribute’s description instead, he or she needs to add a pipe - | - to the end of the attribute’s name.
TSM-8326: Performance Improvement for Saving Data on Spontaneous Time Series in Oracle
The Oracle implementation of an internal stored procedure used for saving time series data and compressed time series data on spontaneous time series has been improved. The new version generates far fewer distinct query plans, thereby improving overall performance.
TSM-8425: TSM App with HTTP API Connection: Edit Tab No Longer Freezes Until All Conversion Time Series Are Loaded
When using the TSM App with a v4+ HTTP API connection: The Edit tab used to wait until all conversion time series had finished loading, which lead to long waiting times on data sources with vast numbers of such time series. With this change, the tab no longer waits until all have been loaded, but instead becomes responsive immediately. In addition, conversion time series are no longer automatically reloaded on every tab change, thus, further improving performance.
TSM-8173: WebTSM Services: Liveness health check (/health/live) now actively monitors service health
Previously, the /health/live endpoint always returned a healthy response regardless of the actual service state. It now performs real checks to confirm the service is operational:
-
Configuration loaded — verifies that the application configuration has been successfully loaded and is accessible.
-
License loaded — verifies that the required licenses are valid and available.
-
Graceful shutdown — the existing shutdown check now also applies to the liveness endpoint, so the service correctly reports unhealthy when it is in the process of shutting down.
The readiness endpoint (/health/ready) is unchanged in behavior.
TSM-7176: TSM APP: Warning When Risking Formula Deletion
When editing or creating a time series, the user can choose between the mutually exclusive “standard” or “formula” settings. When a time series is saved while the “standard” tab is selected, the formula is deleted. This change adds a warning message when switching to the “standard” tab while a formula exists. If the user wants to continue anyway, the formula is not deleted still, but only when the time series is saved. Going back to the “formula” tab will show the formula unchanged.
TSM-8586: Formula Time Series: Content-Based Assembly Cache Invalidation
The assembly cache for formula time series and ad-hoc formulas is no longer invalidated based on the modification dates of the EvalComponent files, but on a hash of their content. Version updates that rewrite the EvalComponent files without changing their code therefore no longer clear the cache, avoiding mass recompilations and the resulting timeouts after an update. Compiled assemblies are now named by the hash of their source code, so time series with identical formulas share one cached assembly. When the EvalComponent code actually changes, the assembly cache (including the ad-hoc formula cache) is cleared in the background and rebuilt automatically; this also happens once on the first calculation after updating to this version, because the cache format has changed.
TSM-7121: Time Series Search: Optionally Show Attribute Values as Columns
Time series search: assigned attributes can now optionally be shown as their own sortable columns in the search results, with the attributes to display chosen via a dedicated settings window. For list attributes, you can show either the value or the resolved description. This behavior can be enabled in the HAKOM.Config by setting HAKOMConfiguration:products:TSM:settings:EnableAttributeColumnsInTimeSeriesSearch to true.
Fixed Bugs
TSM-2567: TSM App: Corrected Misleading Info-Message for “Create New Categories“ Checkbox
The info-message now correctly states that missing category attributes are created regardless of the provided value, and clarifies that only non-category attributes need to be created manually before import.
TSM-7353 WebTSM Services: Improved Health Checks for Repository Readiness
The /health/ready endpoint opened database connections to all configured repositories on every request. In environments with many repositories, this caused connection failures and false Unhealthy results despite all databases being available. Repository connectivity is now checked by a background service and the endpoint returns cached results, providing stable and reliable health status.
The probe interval and concurrency limit can be configured in HAKOMConfiguration/products/WebTSMServices/HealthCheck/RepositoryReadyCheckInterval (default: 10 minutes) and HAKOMConfiguration/products/WebTSMServices/HealthCheck/RepositoryReadyMaxDegreeOfParallelism (default: 4)
TSM-8479: WebTSM Services: Internal Exceptions in Bulk Requests Are Not Always Logged
Internal errors that cause responses with status code 500 InternalServerError are now correctly logged in all bulk endpoints.
TSM-8332: WebTSM Services: Fixed InternalServerError from Invalid API Keys
Requests authenticated with a non-existent or deleted API key no longer cause exceptions that trigger a 500 InternalServerError.
TSM-8565: Missing Endpoint in OpenAPI Specification
The endpoint /timeseriescollections/data/quotations has been erroneously removed from the OpenAPI Specification. Meanwhile the endpoint remained functional. This fix restores the missing documentation reference.
TSM-8597: Improved Security for Formulas
Validation and thus security of formula time series and ad hoc formulas have been improved.
TSM-8517: TSM App: Fixed Referencing Time Series in Formulas using a 4+ HTTP API Connection
An error occurred when reading imported time series with formulas referencing other time series by name while connected to a 4+ HTTP API. This error was caused by an internal format conversion issue and has now been fixed.
TSM-8519: WebTSM Services: Fixed Object Disposed Exception in Webhooks
Webhooks that include the original request body via the $REQUEST_CONTENT placeholder no longer intermittently fail with a "Cannot access a disposed object" error. The request content is now read before the request completes, so it is reliably included in the callback instead of being sent empty.
TSM-8562: Excel Reference Error When Deleting Excel Columns
Deleting a column other than the last one could leave invalid references (#REF!) in the Name Manager. These are now cleaned up automatically on refresh: references to columns that still hold a time series are corrected to the proper cell, and references that are no longer needed are removed. This eliminates the previous follow-up errors, such as attributes no longer being read and the application error when opening a new template.
TSM-8537: TSM App - Calendar Plugin: NullReferenceException after Time Series Search
Fixed a NullReferenceException that occurred after searching for a time series and returning from the search dialog in the Calendar Plugin.
TSM-8542: Login window appears in the background when starting TSM from Excel
When signing in from Excel, the login window could open behind the splash screen and stay hidden. The login window is now reliably brought to the foreground when user input is required.
TSM-8541: Master Data: Misleading Warning When Deleting Attributes
When deleting an attribute in master data, the confirmation dialog showed only a number without the record type (e.g. "1"). Affected record counts are now listed with their proper labels.
TSM-8628: .NET API: Reduced Unnecessary Database Connections When Reading Time Series Definitions
Reading a time series definition opened and closed more database connections than needed, and on SQL Server executed the underlying stored procedure more often than necessary. Both have been reduced, lowering database load when reading definitions.
TSM-7564: Incorrect Documentation of Response Body For Time Series Collection Attributes
The endpoint {repository}/timeseriescollections/attributes/{attributeID} displayed an incorrect response body in the OpenAPI specification. This has been corrected.
TSM-8650: Master Data Import/Export: Importing Time Series That Use Nodes Throws Error on HTTP API and WebTSM Services Connections
Previously, trying to import time series with assigned attributes of type node failed with an exception when using an HTTP API or WebTSM Services connection. This has been corrected and importing and exporting works normally again.
TSM-8682: Do Not Double Encode '+' When Using a 4.12+ HTTP API Connection
Before version 4.12, ‘+' had to be double encoded when sending requests to a 4.x HTTP API service. Since version 4.12 fixed this in the service, this fix now corrects this on the client side as well, when connected to a 4.12+ version. When connecting to an older version, PowerTSM continues to double encode '+’.