How to set up HCM Scenarios
This guide walks you through the process of configuring HCM scenarios, from preparing the required data tables to creating scenario configurations that can be executed in work packages.
Prerequisites
Before configuring scenarios, ensure you understand the concept of HCM scenarios and have access to the database where input tables will be populated.
Required Input Tables
You'll need to populate these tables in the following order. See the Input Table Reference for complete field specifications.
1. Profile Tables (Foundation Data)
| Table | Purpose |
|---|---|
| pv_profiles | Time-series solar generation patterns with technical specifications |
| ev_profiles | Electric vehicle charging patterns by use case and charger level |
| bess_profiles | Battery charge/discharge patterns with efficiency characteristics |
2. Allocation Tables (Grouping Rules)
| Table | Purpose |
|---|---|
| pv_allocations | Groups PV profiles with probability weightings and locking rules |
| ev_allocations | Groups EV profiles with probability weightings and locking rules |
| bess_allocations | Groups BESS profiles with probability weightings and locking rules |
3. Forecast Tables (Capacity Projections)
| Table | Purpose |
|---|---|
| pv_forecasts | Solar capacity projections by network level and year |
| ev_forecasts | EV quantity projections by class and network area |
| bess_forecasts | Battery capacity projections by network level and year |
| demand_forecasts | Background load growth with uncertainty levels |
4. Configuration Table (Scenario Definition)
| Table | Purpose |
|---|---|
| scenario_configuration | Links allocations and forecasts to create named scenarios |
Step-by-Step Configuration Process
The configuration process follows the data architecture: Profiles → Allocations → Forecasts → Scenario Configuration → Work Package. Both allocations and forecasts feed independently into scenario configuration.
Step 1: Create Profile Data
Start by populating the profile tables with time-series behavioural data for each DER type.
Key considerations:
- Ensure
normalised_powerarrays have the expected length (typically 17,520 intervals for 30-minute data) - Set appropriate
phasesvalues (1 or 3) - Use consistent
intervals_per_yearvalues across profiles - Include realistic technical parameters (DC/AC ratios, efficiencies)
Step 2: Define Allocation Strategies
Create allocation entries that group profiles and define distribution rules.
Notes:
lock_year Controls whether profiles are matched to specific years during allocation.
true — The system uses the represents_year field from the bess_profiles table to match each profile to the corresponding year in the scenario. This ensures year-appropriate profiles are used (e.g. a 2028 profile is only allocated to 2028 model runs). If this option is selected, ensure that all years have a valid matching profile, as otherwise the scenario will fail.
false — Profiles are drawn from a general pool and can be allocated to any scenario year, regardless of their represents_year value. Useful when year-specific behaviour is not required or when profiles are intended to be representative across multiple years.
lock_feeder Controls whether DER profiles are restricted to a specific feeder during allocation.
true — The feeder code associated with the DER profile must match the feeder specified in feeder_code in bess_profiles. This ensures site-specific or feeder-specific DER behaviour is preserved and profiles are not applied outside their intended network location.
false — Profile allocation is feeder-agnostic, allowing any eligible profile to be assigned to any feeder in the scenario. Suitable when DER behaviour is considered representative across the network rather than tied to a specific location.
probability_weighting
The relative weighting used to influence profile selection during stochastic allocation. When multiple profiles are eligible (after applying lock_year and lock_feeder filters), this value controls how often each profile is selected relative to others. Only the proportional values matter (a profile with a weighting of 2.0 will be selected twice as often as one with 1.0), regardless of the absolute values used, although we recommend values out of 1.0 for simplicity.
Profiles with a weighting of 0 or NULL are excluded from the pool entirely and will never be selected.
Step 3: Prepare Forecast Data
Populate forecast tables with capacity projections for each DER type.
Forecast level selection: Choose appropriate aggregation levels based on your data availability and analysis needs:
FEEDERfor standard distribution planning Currently unsupported (but may be in the future):LV_FEEDER,SUBSTATION,SUB_GEOGRAPHICAL_REGION,GEOGRAPHICAL_REGION
Time period coverage:
- Ensure forecasts cover all years you plan to model
- Include appropriate
financial_year_endvalues - For demand forecasts, specify relevant
poe(Probability of Exceedance) levels
Step 4: Configure Scenarios
Create entries in the scenario_configuration table that combine your prepared components.
Never name a custom scenario base. The system automatically includes a hardcoded base scenario representing current network conditions without additional DER uptake or demand changes. Naming your own scenario base will cause conflicts with this system baseline.
The base scenario can be called in the SYF config during work package configuration without needing to define it in the scenario_configuration table.
Core configuration elements:
| Field | Purpose | Example Value |
|---|---|---|
scenario_id | Unique identifier | "high_solar_moderate_ev" |
scenario_name | Human-readable description | "High Solar with Moderate EV Adoption" |
pv_allocation_id | Reference to PV allocation strategy | "suburban_residential_pv" |
ev_allocation_id | Reference to EV allocation strategy | "mixed_vehicle_classes" |
bess_allocation_id | Reference to BESS allocation strategy | "residential_storage" |
pv_forecasts_scenario | Name of PV forecast data set | "high_solar_2030" |
ev_forecasts_scenario | Name of EV forecast data set | "moderate_ev_uptake" |
bess_forecasts_scenario | Name of BESS forecast data set | "conservative_storage" |
demand_forecasts_scenario | Name of demand forecast data set | "baseline_growth" |
pv_forecast_level | Network level for PV forecasts | "FEEDER" |
ev_forecast_level | Network level for EV forecasts | "FEEDER" |
bess_forecast_level | Network level for BESS forecasts | "FEEDER" |
demand_forecast_level | Network level for demand forecasts | "FEEDER" |
demand_forecast_poe | Probability of Exceedance level | 50 |
Example Scenario Configuration
Here's how you might configure different scenarios by mixing and matching components:
| Scenario Name | PV Forecast | BESS Forecast | EV Forecast | Demand Forecast | Use Case |
|---|---|---|---|---|---|
conservative_growth | Low adoption | Low adoption | Moderate adoption | Low growth | Conservative planning |
accelerated_solar | High adoption | Low adoption | Moderate adoption | Moderate growth | Solar-focused future |
aemo_step_change | High adoption | High adoption | High adoption | High growth | AEMO Step Change replication |
Quality Assurance Checklist
Before executing scenarios, verify:
Data Integrity:
- All referenced
allocation_idvalues exist in their respective allocation tables - All forecast scenario names exist in their respective forecast tables
- All forecast levels are valid enum values
- No scenario uses the reserved name
base
Mathematical Validity:
- All
demand_forecast_poevalues exist in the demand forecast data - Profile arrays have consistent lengths and valid value ranges
Cross-Reference Consistency:
- Specified forecast levels have actual data in the forecast scenarios
- Profile years cover all modelled scenario years (when using year locking)
- Referenced profile IDs exist in their respective profile tables
Temporal Alignment:
- Forecast years align with intended modelling periods
- Profile
represents_yearvalues cover scenario requirements - Demand forecast time periods match other DER forecasts
Integration with Work Packages
Once scenarios are configured, they can be referenced in work package configurations as per the Work Package Configuration Guide.
Note: Scenarios run independently within work packages, allowing flexible comparison and incremental analysis. You can execute any combination of scenarios together without dependencies between them.
Once scenarios are configured, they can be referenced in work package configurations (the SYF Config: Scenarios, Years, Feeders) as per the Work Package Configuration Guide.
Troubleshooting Common Issues
Scenario validation failures:
- Check that all referenced IDs exist in their respective tables
- Verify probability weights sum correctly
- Ensure forecast levels exist in the data
Missing data errors:
- Confirm all required forecast scenarios are populated
- Check that profile data covers the necessary time periods
- Verify network codes exist at specified forecast levels
Performance issues:
- Start with a small number of feeders and years for testing
- Use appropriate forecast aggregation levels
- Consider computational requirements when designing large scenario sets
Contact Zepben technical support for further assistance with complex configurations or issues.