Skip to main content

Release History

VersionReleased
1.3.005 August 2026
1.2.003 July 2026
1.1.010 June 2026
1.0.007 May 2026
0.6.103 December 2025
0.6.002 October 2025
0.5.118 August 2025
0.5.030 July 2025

[1.3.0]

Breaking Changes

  • Replaced specificAllocationInstance with allocationInstanceSelection in InterventionConfig, which allows selection of multiple allocation instances for consideration when interventions.
  • InterventionConfig in the work package request has been updated to support multiple concurrent interventions.
  • TARIFF_REFORM and CONTROLLED_LOAD_HOT_WATER interventions have been replaced by LOAD_RESHAPING which is configured via InterventionConfig.loadReshaping.

New Features

  • Add a StreamDeletionFailed event to track stream deletion statistics.
  • Added applied_interventions table to output the applications of the following interventions:
    • Community BESS
    • LV STATCOMs
    • Distribution transformer tap optimization
    • OLTC
  • Added config flags in the ModelConfig for controlling undersized LV line fixes and load-data window filling:
    • model.autoFix.fixUndersizedLvLines, to configure whether to upgrade LV lines above large customers.
    • model.windowFillMissingLoad, to configure whether missing load is filled from the last available reading at the same time of day.
  • Added support for sizingLookaheadYears to Criteria CandidateGenerationConfig.

Enhancements

  • Update container lifecycle tracking on the Kubernetes runtime to better reflect the actual container lifecycle.
  • Make RabbitMQ queue and stream deletion more reliable with confirmations and retries.

Fixes

  • Fix an issue with permits being temporarily lost (for the timeout period) when a container failed ungracefully.
  • Fix an issue with permits becoming lost due to the Kubernetes API not timing out.
  • Redact sensitive configuration values.
  • Time out work packages that never start (e.g. due to a lost message), instead of leaving them stuck indefinitely.
  • Updated Sqlite Input database schema to match the postgres schema.

Notes

  • The intervention configuration stored in the work_packages table is now clear (set to null) on completion of the work package.

[1.2.0]

Breaking Changes

  • None.

New Features

  • None.

Enhancements

  • Update stream deletion to delete non-active work package streams in small batches.

Fixes

  • Update monitors to automatically restart on failure.

Notes

  • None.

[1.1.0]

Breaking Changes

  • Updated RunWorkPackage endpoint use the new work package request format.
  • PRRP must accept the new feeders field.

New Features

  • Added support for intrinsic work packages.
  • Intervention work packages now pass through the list of feeders into PRRP for filtering.

Enhancements

  • Expose intrinsic permits through existing permits_available metric.

Fixes

  • None.

Notes

  • None.

  • Support up to com.zepben.commons and com.zepben.ewb v1.1.0

Fixes

  • None.

Notes

  • None.

[1.0.0]

Breaking Changes

  • Configuration changes including new required resource configs hcsDb for hosting capacity database and storageBackend for cloud blob storage, change rabbitmq to a single configuration, removed workPackageInactivityTimeout and messageConsumerTimeout.
  • Dropped and recreated the qa_event_log table in the results database. The table now include a new id column in the primary key to uniquely identify events within the execution of a SYF. The second column has also been changed from Integer to Double.
  • Dropped the following columns on the input.bess_instances table:
    • kw_band_discharging
    • kw_target_charging
    • kw_target_discharging
  • Renamed the kw_band_charging column on the input.bess_instances table to percentage_rated_kva_deadband, to be used for the deadband on both charging and discharging targets.
  • Updated to supply unified runtime configuration to model generator.
  • Updated to supply unified runtime configuration to model executor.
  • Updated to supply unified runtime configuration to results processor.
  • Updated to supply unified runtime configuration to Post Results Results Processor (Prrp).
  • Minimum required JVM version for compilation is 17
  • Updated Succeeded to Completed in WorkPackageDetailsFetcher - wpState to match updated enum WorkPackageState from its dependency commons.

New Features

  • Added new wp-details endpoint to retrieve detailed progress metrics (counts by status) and model groupings for work packages.
  • Added new wp-active endpoint to retrieve the currently active (started, pending, running) work packages.
  • Added configuration option to enable load fallback functionality for PQV based models.
  • Added new field inputDb.forecastEquipmentCommissionMonthDay to configuration. This value is passed to the model generator as a command line argument --forecast-equipment-commission-month-day.
  • Support optional envRef's on Kubernetes container config templates.
  • Add a config option notificationHandler.parallelism to configure maximum notification handler paralllelism
  • Added config option nominalLowVoltage to configure nominal phase-to-phase voltage for LV customers, in volts. It is 400 by default.
    • The version of PRRP must be v0.3.0 or higher to support this new config option.
  • Added the following columns to the input.bess_instances table to support enhancements to the community BESS intervention:
    • percentage_idling_kw
    • phase
    • percentage_rated_kva_target_charging
    • percentage_rated_kva_target_discharging
  • Added negligibleImpedanceMinHvThreshold and negligibleImpedanceMinLvThreshold to ModelConfig

Enhancements

  • Major overhaul to the internal workings to make hosting capacity service
    • Durable
    • Remove the dependency between work package configuration and the total number of queues in RabbitMQ
    • Support concurrent execution of multiple work packages
  • No longer explicitly delete Kubernetes jobs when stop() is triggered, and utilise automatic cleanup. This allows logs to be collected before the job is removed.
  • Allow the RabbitMQ client to prefetch any number of notification messages
  • RabbitMQ client will now retry the initial connection attempt 3 times rather than exiting after one failure.
  • Delete RabbitMQ streams for failed results processors when they fail
  • Tag created containers with their corresponding SYF information
  • Support Kubernetes 1.35 as a container runtime

Fixes

  • Fix hosting capacity database deadlock
  • Fix notifications being discarded from the queue on notification handler exception
  • Fix notifications becoming stuck in the queue
  • Discard notifications that cannot be deserialized

Notes

  • Kubernetes jobs now automatically cleanup after 15m rather than 1h
  • Updated project to Kotlin 2.3.20

[0.6.1]

Breaking Changes

  • Dropped and recreated the qa_event_log table in the results database. The table now include a new id column in the primary key to uniquely identify events within the execution of a SYF. The second column has also been changed from Integer to Double.

New Features

  • Added new field inputDb.forecastEquipmentCommissionMonthDay to configuration. This value is passed to the model generator as a command line argument --forecast-equipment-commission-month-day.

Enhancements

  • Add configuration for requesting pqv-fallback functionality from the model processor.

  • All timestamp strings being parsed to Kotlin/Java types must include seconds. This is due to the update of kotlinx-datetime to 0.6.1.

  • Result queues are now assumed to be streams, so a compatible version of opendss-jvm-executor must be used.

  • RabbitMQ instance must use the rabbitmq_stream plugin and the stream.advertised_host and stream.advertised_port must be configured. resources.rabbitmq.streamPortForContainers in the HC service config must match stream.advertised_port.

  • Configuration change from hosting-capacity-utils

    • Added new configuration class SyfConfig to group variables moved out of WorkPackageRequest and WorkPackageConfig.
      • ForecastConfig - Functionally similar to old set up where it holds a list of feeders, years, scenarios and load time.
      • FeederConfigs - Holds a list of individual feeder settings so each feeder can run a hosting capacity study with distinct settings.
    • Added new configuration class LoadTime and LocalLoadTime which holds load specific variables.
      • FixedTime/LocalFixedTime - Fixed time setting for the study, includes an optional map of FixedTimeLoadOverrides.
      • TimePeriod/LocalTimePeriod - Time period setting for the study, includes an optional map of TimePEriodLoadOverrides.
    • Major refactoring of configuration.
      • WorkPackageRequest
        • Moved feeders, years, scenarios, timePeriod and fixedTime into SyfConfig and LocalLoadTime.
      • WorkPackageConfig
        • Moved feeders, years, scenarios, timePeriod and fixedTime into SyfConfig and LocalLoadTime.
      • CommonConfig
        • Moved timePeriod and fixedTime into LoadTime.
      • ModelConfig
        • Moved fixedTimeLoadOverride and timePeriodLoadOverride into LoadTime and LocalLoadTime
      • Introducing WorkPackageInput change and access of load time.

New Features

  • Support intervention
    • PRRP is run at the start of a work package (before model generation) if intervention.cadidateGeneration is specified in the work package's request.
    • Intervention config is passed through to the model generator via the Job protobuf message.
  • Schema migration scripts for load, result and input db.
  • From hosting-capacity-utils, volumes can now be specified for docker container templates. Notably useful when combined with the config field generator.cli.outputModelsPath, by setting generator.containers.volumes.<volume name> to the same directory name e.g. /opendss-models.
  • Support applying transformer tap settings from input db by specifying a transformerTapSettings in the model config when building models.
  • Added new config option ewb.accessToken to allow authenticating to EWB with an EAS generated AccessToken.
  • Added new table calibrated_taps to the input database to store transformer tap settings for use by the model generator.
  • Create new end point for hosting capacity work package cost estimation /v1/estimate
  • Added new table calibration_meter_results to the results database to store meter level voltage results from a calibration run.
  • Takes in FixedTimeLoadOverride or TimePeriodLoadOverride in appConfig to allow load profile overriding for specified meters.

Enhancements

  • Supports kubernetes image pull secrets in container template configuration.
  • Added support for passing a ewb authentication issuer and audience to the model generator.
  • Can now specify service account name in the template for kubernetes containers.
  • Now the service will clean up queues left over by work package failures.
  • Models output from the generator to disk are now suffixed by the work package ID.

Fixes

  • Fixed the configured client secret for authenticating with EWB using M2M auth not getting passed to the opendss-generator.
  • Fixed issue where the hosting capacity service did not support config outputs from zconf.
  • Fixed issue where you had to specify both cpu and memory for kubernetes resource limits and request.
  • Cluster autoscaler will no longer evict jobs created by this service when using Kubernetes

Notes

  • Changelog for upcoming load schema placed in resources/db/changelog/load2. Work still needs to be done to support generic aggregations.

[0.6.0]

Breaking Changes

  • Renamed configuration property maxActivePipelines to maxActiveWorkPackages as part of the refactor to support running multiple work packages concurrently.

New Features

  • Support running multiple work packages concurrently. This simplifies the service's architecture and allows for more efficient use of RabbitMQ resources.
  • Added new table node_level_results to the results database to support node level opendss results.
  • Added useSpanLevelThreshold, simplifyPLSIThreshold, spanLevelThreshold, and emergAmpScaling to ModelConfig
    • simplifyPLSIThreshold is required to Enable ImpedanceNormalizre in NetworkSimplifier
    • spanLevelThreshold can be supplied to CommonImpedanceCollapsor to include DesignedRating of Conductor to be considered during AcLineSegment collapse.
    • if useSpanLevelThreshold is set to true, designRating will be used during current comparison during CommonImpedanceCollapsor instead of ratedCurrent
    • emergAmpScaling is used to calculate the emergAmps of LineCode. It was previously hard set to 1.5 times but now exposed as a configuration.
  • Added new table inverter_control_profiles to the input database to support translating generators to PvSystems in OpenDss(Advanced PV).
  • Containers started using the Kubernetes Runtime are now also labelled with the work package id

Enhancements

  • Support Super-Pom 0.45.1
  • Support up to com.zepben.commons and com.zepben.ewb v1.1.0

Fixes

  • None.

Notes

  • None.

[0.5.1]

Breaking Changes

  • Rework load schema with a new set of Liquibase migrations, starting with version 0.5.0. This new schema was previously placed in the load2 folder, which has since been removed. You will need to create a new database (possibly in the same Postgres server) and point to it for the new schema, then migrate any data from old tables (e.g. network_hierarchy).
  • PQV schema has been updated to be long form with more types of values supported. This will break anything using the pqv schema.
  • Existing calibration_meter_results table will be dropped and recreated with a new schema. Deleting any existing data in the table.

New Features

  • None.

Enhancements

  • Support up to Super-Pom 0.39.0

Fixes

  • None.

Notes

  • None.\n\n---\n

[0.5.0]

Breaking Changes

  • None.

New Features

  • None.

Enhancements

  • None.

Fixes

  • Support configuration of impedance collapsing and span thresholds for ratings.

Notes

  • None.\n\n---\n