Skip to main content

Release History

VersionDate
2.1.022 October 2024
2.0.027 October 2022
1.15.028 July 2022
1.14.021 June 2022
1.13.008 March 2022
1.12.020 January 2022
1.11.020 January 2022
1.10.019 January 2022
1.9.017 January 2022
1.8.008 December 2021
1.7.009 November 2021
1.6.025 October 2021
1.5.023 September 2021

v2.0.0

Breaking Changes
  • Removed support for self auth.
New Features
  • Added functionality to create and manage power-factory-models.
Enhancements
  • None.
Fixes
  • None.
Notes
  • None.

v1.15.0

Breaking Changes
  • None.
New Features
  • None.
Enhancements
  • None.
Fixes
  • None.
Notes
  • None.

v1.14.0

Breaking Changes
  • None.
New Features
  • None.
Enhancements
  • None.
Fixes
  • Fix bug where studies and faults published by no-auth users are filtered out of queries
Notes
  • None.

v1.13.0

Breaking Changes
  • Updated to find the relocated connection point identifier. You will need to use a EWB server running a database generated from an updated migrator for this to work.
New Features
  • The EWB connection point identified can be specified via the config file via the ewb.connectionPointIdentifier setting.
Enhancements
  • None.
Fixes
  • Made less cryptic error messages for malformed sealed object configurations (specifically "auth" in config.json).
Notes
  • None.

v1.12.0

Breaking Changes
  • None.
New Features
  • None.
Enhancements
  • None.
Fixes
  • None.
Notes
  • None.

v1.11.0

Breaking Changes
  • None.
New Features
  • None.
Enhancements
  • None.
Fixes
  • None.
Notes
  • None.

v1.10.0

Breaking Changes
  • None.
New Features
  • None.
Enhancements
  • None.
Fixes
  • None.
Notes
  • None.

v1.9.0

Breaking Changes
  • None.
New Features
  • None.
Enhancements
  • None.
Fixes
  • None.
Notes
  • None.

v1.8.0

Breaking Changes
  • None.
New Features
  • None.
Enhancements
  • None.
Fixes
  • None.
Notes
  • None.

v1.7.0

Breaking Changes
  • None.
New Features
  • None.
Enhancements
  • None.
Fixes
  • None.
Notes
  • None.

v1.6.0

Breaking Changes
  • None
New Features
  • None
Enhancements
  • None
Fixes
  • None
Notes
  • None

v1.5.0

Breaking Changes
  • None
New Features
  • None
Enhancements
  • None
Fixes
  • None
Notes
  • None

Breaking Changes

  • Updated the hosting capacity service logic to import the work package configuration from the hosting-capacity-utils library instead of duplicating all the required classes.

  • mapLayerColors has been superseded by defaultMapLayerColors, themes, and defaultTheme. If you previously specified layer colors you will have to update your configuration to match the new options. See config.md and sample-config.md for information on the new settings and examples.

  • Coloring lines by voltage now requires specifying a range of voltages. Previous voltageColors configuration is not compatible with the new required format and will need to be updated.

  • API calls will now return Bad Request (502) instead of InternalServerError (500) when EWB cannot be contacted.

  • Updated GqlWorkPackageInput to have its 'modelConfig' property to be non-nullable.

  • Updated ModelConfig to include fixed time and time period.

  • Updated to evolve-super-pom version 0.35.2.

  • Updated H2 database engine from 1.4.200 to 2.2.224. See https://www.h2database.com/html/migration-to-v2.html for more details.

  • The following columns in the schema have been converted from TEXT to CLOB:

    • net_models.generation_spec (Now named power_factory_models.generation_spec; see other breaking changes)
    • net_model_templates.generation_spec (Now named power_factory_model_templates.generation_spec; see other breaking changes)
    • result_sections.description
    • studies.description
    • studies.tags
  • Upgrade Jetbrains exposed from 0.38.2 to 0.48.2. See https://github.com/JetBrains/Exposed/blob/main/docs/ChangeLog.md for more details.

  • Configuration for the EWB auth has changed:

    • To use a specific issuer, provide method, issuer, audience, clientID, and clientSecret parameters. Make sure audience and clientID match the values expected by EWB. NOTE if using Managed Identity, skip clientSecret, and only provide clientID.
  • Configuration for EAS auth has changed (consult the docs if needed):

    • For EntraID and Auth0, provide the following parameters:
      • method ("entraid" or "auth0")
      • trustedIssuers
      • audience
  • Removed Fault Location module FaultLocationService.

  • EAS is now exposing the same auth config endpoint to clients as EWB (Note: only the first configured trustedIssuer will be returned):

    * `authType`
    * `issuer`
    * `audience`

    This is a breaking change for the clients expecting tokenPath, issuerDomain or configType.

  • EAS now uses a Role based permissions system:

    • Users requests now must provide External Roles in their access token that inherit the permissions required to perform the request.
    • Existing REST API endpoints have been updated with new permission requirements, see docs for complete list.
    • Existing GraphQL API queries have been updated with new permission requirements, see docs for complete list.
    • Auth configuration is now required for EAS to start.
    • For Auth type None, defaultUserPermissions has been removed and replaced by defaultUserRoles. These roles must exist and have the relevant permissions in the EAS database. The default roles and permissions are populated when the EAS database is initialised by updateSchemaOnStart (see docs for a complete list of default roles).
    • Auth type None no longer provides access by default. If no defaultUserRoles are configured, only requests that don't require any permissions will succeed.
    • Auth type AUTH0, ENTRAID, no longer have permissions option.
    • Default External Roles:
      • SUPER_ADMIN, EWB_ADMIN, TIMESERIES_MODELLER, MODELLER, DEVELOPER, MAP_VIEWER, METRICS_VIEWER, INTEGRATION_ADMIN.
  • Removed /api/user/createUser and /api/user/queryUser http endpoints.

  • Removed Evolve Gateway DER Service functionality. evolveGateway configuration options and DER related http endpoints have been removed, including /api/config/der, api/der/tile/{z}/{x}/{y}, api/der/asset/{nmi}/ and api/der/logo/{aggregatorName}.

  • Renamed all instances of "net model" to "power factory model":

    • NetModel PowerFactoryModel
    • netModel powerFactoryModel
    • net-model power-factory-model
    • net_model power_factory_model
    • NET_MODEL POWER_FACTORY_MODEL
    • netmodel powerfactorymodel

    This was done to reduce confusion with the Sincal Model Service.

  • Removed auth.issuer configuration option. Replaced by auth.trustedIssuers that accepts a list of issuer domains.

  • Updated to ewb-conn-jvm version 0.11.0 to support trusting tokens from multiple issuers.

  • Updated to evolve-sdk-jvm version 0.23.0 to support new version of ewb-conn-jvm

  • In a Power Factory Model Export, the LoadConfig value is now set and passed on to the Power Factory Model Service (and on to the exporter).

  • Updated hostingCapacity configuration options. This now accepts:

    • service - Hosting Capacity service connection information (what was previously configured directly in hostingCapacity).
    • resultsDatabase - Hosting Capacity Results Database connection information.
  • Renamed defaultUserId to defaultUsername.

New Features

  • Configuring voltage colors now supports a range of voltages for a color. If a conductor has a color that doesn't match any range a default can be specified through the missingVoltage option.
  • Added defaultMapLayerColors which allows you to specify a set of default colors to be used on the map.
  • Added support for themes through the ui.themes configuration. Each theme is a mapbox theme and can have its own set of color definitions through the layerColors option. See config.md for details on how to configure themes.
  • Added support for specifying a default map theme with ui.defaultTheme
  • Added support for specifying colors for partially off supply lines through the partiallyOffSupply option.
  • Added basic hosting capacity functionality. At this stage only one graphql mutation exists with the purpose of running hosting capacity work packages.
  • Added the functionality to specify spreadMaxDemand as part of a NetModelGenerationSpec.
  • Added the functionality to specify whether transmission network should be included as part of a NetModelGenerationSpec.
  • Filename from User input is pass on for power factory model generation.
  • Hosting capacity work package run request now supports more configuration options.
  • Added functionality to cancel hosting capacity work packages.
  • Added functionality to request progress of currently running work packages.
  • Added 'calibration' flag to ModelConfig.
  • Added new fields to GqlHcModelConfig that are passed through to ModelConfig. Consult opendss-model-processor docs for details.
    • pFactorBaseExports
    • pFactorForecastPv
    • pFactorBaseImports
    • fixSinglePhaseLoads
    • maxSinglePhaseLoad
    • fixOverloadingConsumers
    • maxLoadTxRatio
    • maxGenTxRatio
    • fixUndersizedServiceLines
    • maxLoadLineRatio
  • Add support for logging in with Microsoft EntraID
  • Add support for M2M auth to EWB with Microsoft EntraID
  • Added the functionality to control the network-model loaded by EWB. This can be used via the following GraphQL mutations.
    • switchNetworkModelDatabase Restart EWB with the network-model of the specified date. Following the restart EWB will remain "locked" to the specified date.
    • lockNetworkModelDatabase Locks the EWB network-model date to the currently loaded model. If EWB restarts for any reason, it will continue to reload the "locked" date instead of the latest available.
    • unlockNetworkModelDatabase On next restart EWB will load the latest network-model available in the data path instead of the date it was previously "locked" to.
  • Added Admin page routes
  • Added optional connection to a metrics database. This is configurable through the metricsDatabase option.
  • Added a /metrics route, which serves the frontend static assets. The frontend can then load a new Metrics page at this route.
  • Added collapseLvNetworks field to ModelConfig
  • Added feederScenarioAllocationStrategy field to ModelConfig
  • Added includeEnergyConsumerMeterGroup field to ModelConfig
  • Added GraphQL queries and types for the metrics database.
  • EAS now uses a Role based permissions system.
  • Added permissions field to the response of the currentUser GraphQL query. This field contains a complete list of permissions inherited by the External Roles provided in the access token used to make the request (or defaultUserPermissions if None auth is configured).
  • Added GraphQL queries and mutations for Sincal Model management.
    • Added routes for downloading Sincal models and logs.
  • Added support for accepting client tokens from multiple issuers simultaneously. Multiple issuers can now be provided via the new configuration option auth.trustedIssuers. Note: Only the first issuer is returned to clients via /config/auth.
  • Added new feature flags sincalExporterEnabled and powerFactoryExporterEnabled in config.ui section for PowerFactory/Sincal Exporters. Note: When enabling the flag, they require relevant powerFactoryExporterOptions or sincalExporterOptions.
  • Added optional connection to a Hosting Capacity Results Database. This is configurable through the hostingCapacity.resultsDatabase option.
  • Added the following GraphQL queries for retrieving information from the Hosting Capacity Results Database
    • getOpportunity - Retrieve an Opportunity by ID.
    • getOpportunityLocations - Retrieve all opportunity locations available for a specific year. (opportunity locations for all years if a year is not specified).
    • getOpportunitiesForEquipment - Retrieve Opportunities attached to the supplied conducting equipment mRID.
    • getOpportunities - Retrieve all Opportunities available for a specific year (Opportunities for all years if a year is not specified).
    • getDurationCurves - Retrieve duration curves for a single piece of equipment in a specific SYF.
  • Added workPackageName parameter to runWorkPackage which represents the name of the work package. This parameter is now mandatory.
  • Updated the runHostingCapacityWorkPackage to accept the workPackageName field as a parameter for storing the work package name and entries in the database.
  • Hosting capacity work packages created via EAS are now recorded in the hosting_capacity_work_packages database table.
  • Added new getWorkPackages GraphQL query to support:
    • Pagination.
    • Searching by id, name, and createdBy.
    • Added support for partial matching on the name
    • Returning work package details such as:
    • status: Progress percentage if in progress.
    • description, created_at, updated_at, parent_id.
    • Added getWorkPackageById GraphQL query to indicate work package progress with all other information.
  • Added the following configuration option to generate jwks keys for Personal Access Tokens for EAS:
    • jwks - Configuration for generating jwks keys for Personal Access Tokens.
      • currentUserSigningKey - The key name used to sign the Personal Access Tokens for users.
      • currentMachineSigningKey - The key name used to sign the Personal Access Tokens for machines.
      • issuer - The url of the issuer for the Personal Access Tokens.
  • EAS now provides the OpenID configuration endpoint at /.well-known/openid-configuration and JWKS endpoint at /.well-known/jwksfor verifying Personal Access Tokens issued by EAS.
  • Added functionality to allow EAS to trigger container based network ingestion tasks to generate new EWB Network Models. The container service to use is configured by providing a Ingestor config object (see Ingestor Service Config in config.md for full details). The ingestion tasks themselves can be triggered by the new GraphQL mutation executeIngestor.
  • Added GraphQl mutation executeIngestor to initiate a new network ingestion. Calling this mutation requires the permission INGESTOR:RUN.
  • Added getWorkPackageTree GraphQL query that takes a work package id and returns its ancestors and immediate children.
  • Added createUserApiKey GraphQL query to create user Personal Access Tokens/API keys:
    • createUserApiKey - Creates a new user Personal Access Token for the user making the request and takes the following parameters:
      • roles - Array of roles to delegate to the new Personal Access Token. Must be a subset of the user's existing roles.
      • tokenName - Included in the newly created token as the tkn claim. This cannot be blank and can only include lowercase characters, numbers, dashes -, and underscores _, with a max length of 32 characters.
  • Added support for passing a seed in the ModelConfig for a work package.
  • Added support for "Public Access" mode to allow limited access to unauthenticated users alongside regular authenticated users. This can be enabled, and permissions configured, by adding a publicAccess object(See config.md for full details.) to the auth config block. Note: Regardless of the permissions granted to unauthenticated users, unauthenticated requests for map tiles will always be directed to the EWB public tile endpoint /ewb/network/graphics/api/v1/mvt/geo-view/public/{x}/{y}/{z} instead of the regular tile endpoint /ewb/network/graphics/api/v1/mvt/geo-view/{x}/{y}/{z}.
  • Added the GraphQL query getPublicGeoViewConfig to expose the GeoViewConfig used to configure the EWB public map tile endpoint. The returned GeoViewConfig Json object is encoded to as string.
  • Added new GraphQL mutations to generate diffs between hosting capacity work package results
    • generateNetworkPerformanceDiff - Generate diff for data from network_performance_metrics table and insert them into network_performance_metrics_diff
    • generateEnhancedNetworkPerformanceDiff - Generate diff for data from network_performance_metrics_enhanced table and insert them into network_performance_metrics_enhanced_diff
  • Added createMachineApiKey GraphQL query to create machine Personal Access Tokens/API keys:
    • createMachineApiKey - Creates a new machine Personal Access Token for the user making the request and takes the following parameters:
      • roles - Can be any external role unlike createUserApiKey which takes a subset of the user's external roles.
      • tokenName - Included in the newly created token as the tkn claim. This cannot be blank and can only include lowercase characters, numbers, dashes -, and underscores _, with a max length of 32 characters.
  • Added editWorkPackage GraphQL mutation to edit work package name and description. Calling this mutation requires the permission HC_WORK_PACKAGE:UPDATE

Enhancements

  • Updated vulnerable dependencies to latest version (H2, Postgres, Liquibase, Jackson, SnakeYAML)
  • Added config option in AppConfig Ui to enable/disable work package browser option as workPackageBrowserEnabled
  • Better error messages when attempting to update/delete PowerFactory/Sincal models/templates/presets as someone who isn't the owner
  • Migrate eas to new config pattern using kotlinx.serialization for deserializing the json file

Fixes

  • Errors are now returned to the client for hosting capacity calls.
  • Upgraded ktor to fix hanging request issue
  • Fixed execution order of SQL migration scripts
  • Updated default H2 database connection string to include DATABASE_TO_LOWER=TRUE.
  • Fixed issues caused by incorrect method of getting username from Entra ID JWT.
  • Fixed issue where boolean is returned instead of ID of deleted template for deletePowerFactoryModelTemplate mutation.
    • An error is now returned in the GraphQL response for this mutation if the current user is not the owner of the template.
  • Make WorkPackagesProgress serialisable so it can be returned from the getWorkPackageProgress endpoint

Notes

  • The REST endpoint /api/map/symbol/{symbolPath...} does not require EWB:READ permission. Its use only requires an authenticated user or that "Public Access" is enabled.\n\n---\n