Skip to main content

Release Notes: Version 26.03

What's New

Rule Profiling

The new Profiler gives you visibility into the CPU performance of your processing rules and flow configurations. Using interactive flame graphs and time-based analysis, you can quickly identify which rules are most CPU-intensive, pinpoint bottlenecks within individual functions, and compare performance across datasources — making it easier to optimize your data processing workflows. To learn more, check out our documentation here.

Trigger schedule versioning

It is now possible view the edit history of trigger schedules and perform rollbacks to previous configurations directly from the UI. ⚠️ Please note: older trigger schedules, created before this release, will show the user ID in the last edited by instead of the user's email. Once updated, the email will correctly show up. In any case, users with IAM permissions can convert user ids to user emails if necessary.

Market Adapter Framework

Introduced several new functions to the Market Adapter framework, enabling users to directly create/retrieve Datasources, Tags, and Timeseries, as well as trigger flows directly from the adapt() method. On top of that, the following were updated:

  • Domain object validation: Added strict validations for domain objects output from a Market Adapter, including ISO standard checks for Timezones and existence checks for channel classifiers.
  • Annotation handling: Updated Market Adapter timeseries output to ensure annotations and sequence_id are handled properly during direct ingestion.
  • Documentation: Updated documentation to reflect all these changes and make the market adapter framewor easy to use.

Deprecation Notice

Later this year, we’ll be moving the platform from pandas version 1 to version 2. We currently expect to make this switch in release 26.09; while this date may shift, the upgrade will occur no earlier than 26.09.

Since some functions are deprecated in pandas 2.0, some rules might need refactoring to stay compatible. To make this as painless as possible, we’re doing the following

  • We’ll provide best-practice documentation on upgrading and testing your rules for compatibility
  • We’ll ensure that all rules in the standard package are updated by the time we upgrade

⚙️ Rule Framework

  • Local development maintenance: Refactored the packages necessary to develop and test rules outside the Energyworx platform to simplify and standardize them. This has no impact in existing packages and imports, and it is not yet avaible. It will be made available in the next release, through the GAR.

🖥️ UI Improvements

  • Graph accuracy fix: Resolved an issue where "NULL" values that had a DPA were incorrectly displayed as "0" in frontend graphs; these are now clearly distinguished.
  • Last datapoint per channel: Added functionality to the new console which allows users to eaily see what is the most recent reading available for each channel classifier.
  • Clickable chart legends: Restored the ability in the original console to plot or unplot lines in a chart by clicking directly on the channel classifier name in the legend.
  • User edit traceability: Fixed a bug where edits made by users with "nan" in their email address appeared as "edited by no one"; this fix works retroactively for past edits.
  • Flow view: Fixed a bug that caused some flows to not be retrieved when clicking in the Get Latest Flows button.
  • Live flags: Fixed an issue that was preventing the first Enum option in the Live Flags to be picked when using the UI to set up live flags.
  • Spanish support The platform is now also avilable in Spanish. You can change the language in the user settings if you wish to use it.

🔐 API & Permissions

  • Last datapoint per channel: Added a new endpoint to API V2 to retrieve the last available datapoint for a channel classifier.
  • Least Privilege for Admins: Reduced the default power of the Admin resource to the bare minimum required for environment administration (global whitelisting and namespace management).
  • Read-only default groups: All default permission groups are now read-only by default and cannot have their roles changed, ensuring core security settings remain intact.
  • APIv2 Datasource validation: Fixed several validation issues in APIv2 to prevent the creation of datasources with invalid timezones, filters, or classifiers.
  • Duplicate tag prevention: Updated APIv2 to detect and reject duplicate tags where only the valid_from attribute was changed to a future date, returning a 409 Conflict Error.
  • Endpoint cleanup: Removed the redundant and non-functional PATCH datasource endpoint in APIv2; users should use the POST method for updates.
  • ResouceInput in Flows: Fixed an API issue which caused flow runs to fail in some cases where a rule had a parameter of type ResourceInput

📚 Documentation Updates

  • Live Flags guide: Added a new page to the knowledge base covering the setup and visualization of Live Flags.
  • Admin access details: Improved documentation regarding the new "Administrator" tab and how to manage restricted admin rights.
  • Technical inheritance docs: Updated documentation for nested rules and multiple class inheritance.
  • Namespace properties: Added new guides on how to update namespace properties.
  • Tags updates via API: Updated documentation regarding how to update tags via the API

🚀 Notable Backend Changes

  • Tag version deduplication: Fixed a comparison method bug that was creating redundant tag versions for non-SCD tags even when properties remained unchanged.
  • Pod autoscaler improvement: Fixed a memory limit issue in the ewx-pod-autoscaler that caused processes to get stuck.
  • Collective trigger optimization: Significant performance improvements for collective triggers, ensuring faster processing of large message volumes (100k+).
  • Memory leak resolution: Fixed a memory leak within the Datasource service in APIv2 that was identified during performance testing.
  • Error handling on ewx-cli: Improved error handling in the ewx-cli, to ensure clear error messages are thrown where possible.
  • Package versioning: Fixed an issue where certain packages in the GAR were not correctly versioned. Documentation has also been improved to be more detailed on the required steps to use said packages.

26.03.01

Platform Bug Fixes

  • Improved Audit Event query performance: Optimized the Audit Event query in the new console to significantly improve loading times when retrieving large volumes of audit data.

Integration Component Fixes

  • SEL meter timestamp correction around DST transitions: Fixed an issue where SEL meter timestamp generation produced incorrect timestamps during Daylight Saving Time (DST) clock changes. The data retrieval script has also been updated to support fetching data for a specific date range (start and end date).

26.03.02

Platform Bug Fixes

  • get_tag fix: Fixed an issue in the get_tag function which failed when tags were manually created in the platform.

26.03.03

Platform Bug Fixes

  • PubSub Optimization: Refined message size validation and lowered internal limits to ensure reliable delivery.

26.03.05

Platform Bug Fixes

  • Trigger local time DST fix: Fixed an issue where triggers migrated from UTC to local time execution produced incorrect timestamps during DST transitions, causing data drift in subsequent data exports.
  • New console account login fix: Resolved an authentication error that prevented newly whitelisted accounts from logging into the new console (NUI), which resulted in a 500 Internal Server Error.

26.03.06

Platform Bug Fixes

  • Legacy API URL routing fix: Resolved an issue with routing for the legacy API URL (api.<short_env>.energyworx.net).

26.03.07

Platform Bug Fixes

  • load_datasources_by_virtual_datasource_filter restored: Restored the rule framework method load_datasources_by_virtual_datasource_filter, which had been raising NotImplementedError since the FlowRule refactor. Rules using this method to resolve a virtual datasource to its underlying concrete datasources now work as before.
  • get_active_tag_versions fix: Fix timezone comparison error: resolves a TypeError when tags with timezone-naive valid_from are compared against timezone-aware datetimes. (EWXS-28080)