Skip to main content

Release Notes: Version 26.06

What's New

Platform version in the new console

You can now view the platform version directly from the console. This is available in the new console only — the version is shown at the bottom of the left-side menu, and clicking it takes you straight to the matching release notes. Please note that it may take a few hours after a deployment for the version to update.

ewx-cli updates

This release brings a set of improvements to the ewx-cli:

  • Auto ingestion fix: ewx-cli config upload --namespace-property market_adapters now merges new entries with the existing dict on the destination namespace instead of overwriting it, and prompts before replacing any colliding keys.
  • Dashboard group transfer: ewx-cli config dashboards and ewx-cli config upload_dashboards now accept a --group option that fans the dashboard out to every user in a permission group on the destination namespace.
  • Unchanged rules: ewx-cli config upload now labels rules whose display name, description, code, and parameters match the destination as (Unchanged) instead of (Update), and skips the no-op API call.

🖥️ UI Improvements

  • Chart timezone change: Switching the chart timezone on the datasource detail view no longer triggers a redundant timeseries refetch, and the localized chart and datapoint table now rebuild correctly on change.
  • Namespace properties admin-only: The Namespace properties page in the old console is now restricted to admins, the entry button no longer appears for other users, and saving only patches the defaults key via the admin API so unrelated namespace properties can no longer be accidentally lost when the page fails to load.
  • Sticky actions column in Firefox: Fixed an issue where action buttons in data tables stayed off-screen in Firefox until users scrolled horizontally. They now stick to the right edge alongside the column header, matching the behaviour in Chrome.
  • Created-on filter for file management: The "Created on" date filter on the file management page now correctly returns matching files. It was previously returning empty after a recent API change.
  • API documentation session refresh: The new console's API Documentation page now refreshes the platform session and transparently retries the request when a "Try it out" call hits an expired session, so the same Execute click returns the real response. Previously the page kept returning unauthorised until a manual reload.
  • Profiling filter reload fix: Filter dropdown values in the Profiling view now reload automatically when the time range is switched while a filter is open, instead of remaining empty until the filter is closed and reopened.
  • Friendly server-error dialog: When a request to the backend fails with a server-side error, the new console now opens a dialog explaining that the error is on our side and offers a one-click button to copy a debug block (timestamp, request ID, trace IDs, app version, namespace) that users can paste into a support message so we can locate the matching backend logs immediately.
  • Fix for German language: Fixed an issue that prevented some German translations from being displayed correctly.

⚙️ Custom Business Logic

  • Process monitoring timezone: Process monitoring configurations now support a configurable timezone (IANA format, defaults to UTC) that controls when alerts are evaluated and when historical metric snapshots are taken. The timezone setting has been consolidated to the configuration level, replacing the previous per-alert timezone.
  • Batch datasource and tag loading in rules: Rule code can now call self.load_multi_datasources(ids) to load multiple datasources in a single batch call, and self.load_tags_multi_datasource(ids) to fetch tags for multiple datasources without loading the full datasource objects.
  • JSON market adapter performance: Improved the performance of the JSON market adapter so that it can now handle larger files without timing out during ingestion.

🔐 API & Permissions

  • Classifier ID validation: The API now rejects channel and datasource classifier IDs containing spaces, dots, or other special characters with a validation error. Only alphanumeric characters, hyphens, and underscores are allowed.
  • Client credentials user attribution: User email is now correctly recorded in datasource audit logs and access token subjects when authenticating via client credentials, replacing the opaque client ID that was previously used.
  • Datasource search filter fix: Datasource search now returns results when the search filter has leading or trailing spaces.
  • Empty static value validation: Creating or updating a transformation configuration with an empty staticValue in any datasource mapping field is no longer allowed. The API now returns a 400 error, and the old console form blocks saving when a static value field is cleared during an update.
  • IAM group API change: The userIds field has been removed from group responses and replaced with userCount. This also fixes inflated member counts that occurred when users were removed directly from the system without going through the IAM service.
  • Default group deletion fix: Fixed an issue where the default system permission groups could be deleted via the API or UI, which would lock all users in the namespace out of every resource.

📚 Documentation Updates

  • Search help cleanup: Updated the search help sheet in both consoles to match what the backend actually supports — removed the outdated "Search suggestions" and "Multi-value queries" blocks, dropped the unsupported NOT and > / >= operator examples, and corrected the AND/OR precedence note (OR binds tighter than AND).
  • Shared package versions: Documented that customer-facing package versions (ewx-cli, ewx-public, pytest-bdd-ewx) follow the platform release version (e.g. platform 26.03 ships package version 26.3.0), and corrected the stale install example on the ewx-cli page.
  • ewx-public install docs: Corrected version references in the ewx-public package installation guide from 26.2.0 to 26.3.0.
  • How to upload files to GCS: Added a guide on how to upload files to a GCS bucket, describing the process for multiple scenarios.
  • Inbound integration service docs: Updated the inbound REST integration service documentation to use the correct per-environment endpoint URL format, removing outdated references.

🚀 Notable Backend Changes

  • In-house identity provider: We have migrated the platform's authentication from Google Firebase to an in-house identity solution. This is a behind-the-scenes change to how sign-in is handled and should not impact any users — no action is required on your side.
  • Timeseries aggregation timestamp fix: Fixed an issue where aggregated timeseries events had timestamps in seconds instead of milliseconds, causing datasources to be stored with incorrect timestamps.
  • Large CSV ingestion fix: CSV ingestions that resolve more than 500 datasources per payload now succeed reliably; the datasource lookup is fanned out to Bigtable in batches instead of a single request that could time out. Payloads referencing more than 1,000 datasources also emit a warning audit event suggesting the user set datasource_id_columns on the market adapter or split the input file.
  • Enhanced security hardening — Cloud Armor WAF: The platform's existing security infrastructure can now be extended with per-environment Cloud Armor WAF policies across all public-facing gateway and EnerGPT services. This adds an extra layer of protection against OWASP Top 10 attack patterns, automated scanner detection, and login brute-force attempts — complementing the existing network-level and application-level controls already in place.
  • Split column fix: Fixed a bug that prevented the split column function in transformation configurations from working in some namespaces. This functionality now works correctly out of the box, upon namespace creation.

26.06.01

⚙️ Custom Business Logic

  • Market adapter audit events: Datasources created or updated through the market adapter v2 now correctly emit audit events, ensuring a complete audit trail for all datasource changes.

📡 Integration Component

  • GLDPM acknowledgement matching fix: Resolved a bug where outbound GLDPM messages were not being correctly matched to their returning acknowledgements, causing the integration to be unable to confirm whether a GLDPM submission was accepted or rejected by the counterparty.

26.06.02

⚙️ Custom Business Logic

  • Large flow output files: Fixed issue where additional output files around 10MB or larger would fail the flow. Now larger file sizes are supported by the additional output functionality.

📡 Integration Component

  • Large custom Pub/Sub payloads: Offloaded large payloads published via publish_to_custom_pubsub_topic now retain their original message attributes when delivered to EnergyWorx integration services, so downstream consumers receive the same metadata as for non-offloaded messages.

26.06.03

  • Cloud NAT static IP allocation: Environments that require stable outbound IP addresses (e.g. for client-side firewall whitelisting) can now be configured with reserved static external IPs for Cloud NAT, replacing automatic IP allocation. This prevents unwhitelisted IPs from being assigned during high-load events or deployments.

Platform Bug Fixes

  • Flow chaining fix: Fixed an issue where bulk chain flows could silently fail to trigger downstream flows due to incorrect Datastore key type resolution.

26.06.04

ewx-public testing utilities: Fixed the ewx-public package so it now includes the ewx_public.testing module, restoring the ability to write unit tests for custom flow rules as documented.