Skip to main content
Version: Next

Configuration

Configuration for the Evolve App Server is specified in a JSON file. The server requires a configuration file to start. The config file can contain the following JSON object:

KeyDescriptionRequired
serverObject that holds http related config.
Refer server config options below
Yes
ewbObject that holds the ewb server related config.
Refer ewb config options below
Yes
databaseObject that holds the database config.
Refer database config options below
Yes
authObject that holds the config for the client authentication method
Refer auth_config options below
Yes
uiObject that holds the config provided to the UI
Refer ui config options below
No
powerFactoryModelObject that holds the power-factory-model related configuration
Refer power-factory-model options below
No
hostingCapacityObject that holds the hosting capacity related configuration
Refer hosting capacity options below
No
airflowObject that holds the Airflow related configuration for use by the Admin Service
Refer airflow options below
No
metricsDatabaseObject that holds the metrics database config.
Refer database config options below
No
sincalModelObject that holds the Sincal Model Service config.
Refer sincal model config options below
No

Server Config

OptionDescriptionRequiredDefault
hostThe host for the server.No"localhost"
portThe port for the server to listen on.No433 if useTLS is true, otherwise 80
useTlsEnable HTTPS on the serverNofalse
keyStorePathPath to a Java Key Store that contains credentials for TLSNoWill disable TLS if missing
keyStorePasswordPassword to access the Java Key Store aboveNo
privateKeyAliasThe alias to the private key to use for TLS, contained within the Java Key Store aboveNo
privateKeyPasswordThe password to the private key to use for TLS, contained within the Java Key Store aboveNo
webClientHostThe host for the Web ClientNohost
webRootPath to a directory that contains the static assets for the web clientYes"static"
logFilePath to a file to write log output toNo

Example Server Config:

{
"server": {
"host": "0.0.0.0",
"useTls": true,
"keyStorePath": "keystore.jks",
"privateKeyAlias": "ewb.local",
"keyStorePassword": "zepben",
"privateKeyPassword": "zepben",
"webClientHost": "*",
"port": 7654,
"webRoot": "static",
"logLevels": {
"ROOT": "INFO",
"Server": "DEBUG"
}
}
}

EWB Config

OptionDescriptionRequiredDefault
hostThe host for EWB serverNo"localhost"
portThe port on which to find the EWB serverNo9000
protocolThe protocol to use when making requests to the EWB server - HTTP or HTTPSNo"HTTP"
authThe property that specifies m2m authentication parameters for an authenticated EWB server.
Refer to ClientCredentialsAuth options below
No
verifyCertificateThe verification for the SSL cert when connecting to the services over TLSNo"true"
connectionPointIdentifierSpecify the NameType name used by EWB to store the connection point identifierNo"NMI"

Client Credentials Auth Config

NOTE: To configure no authentication between EAS and EWB, omit the ewb.auth block completely.

OptionDescriptionRequiredDefault
methodThe auth method to use for authentication with EWB (AUTH0, ENTRAID)Yes
issuerThe issuer domain for authentication using a client_credentials Oauth2 flowYes, unless using Managed Identity tokens with EntraID
audienceThe audience for authentication with auth0Yes, unless using Managed Identity tokens with EntraID
clientIdThe clientId which is used by the client in order to authenticateYes
clientSecretThe clientSecret which is used by the client in order to authenticateYes, for regular auth. For Managed Identity should be skipped

NOTE: to use Managed Identity tokens with EntraID, do not provide clientSecret in the configuration (only the clientId).

Example EntraID EWB Config:

{
"ewb": {
"host": "localhost",
"port": 9000,
"protocol": "HTTP",
"auth": {
"method": "entraid",
"audience": "12341234-1234-4321-1234-123412341234",
"issuer": "https://login.microsoftonline.com/12345678-2222-3333-4444-1234546781234/v2.0",
"clientId": "s8df79as7d9f87a9sd7f7",
"clientSecret": "laksjdflkjasdlfk"
}
}
}

Database Config

OptionDescriptionRequiredDefault
urlThe url to use to connect to the databaseNo"jdbc:h2:mem:mem;DB_CLOSE_DELAY=-1;DATABASE_TO_LOWER=TRUE;"
driverThe database driver to useNo"org.h2.Driver"
updateSchemaOnStartIf set to true, the app server will attempt to initialise and/or update the database schema and default data (including roles and permissions) on startup.Notrue
sqlDirsA list of paths to directories containing ".sql" files. On startup, every ".sql" file will be executed against the databaseNo

Example Database configuration:

{
"database": {
"url": "jdbc:postgresql://<hostname>/<database-name>?user=<user>&password=<password>",
"driver": "org.postgresql.Driver",
"updateSchemaOnStart": true,
"sqlDirs": [
"./scripts/sql"
]
}
}

Auth Config

MethodDescriptionRequired
auth0Configures authentication through Auth0.
Refer auth0 options below
No, mutually exclusive with others
entraIdConfigures authentication through EntraID.
Refer entraID options below
No, mutually exclusive with others
noneIt allows for unauthenticated access to the server
Refer auth none options below
No, mutually exclusive with others

Auth0/EntraID Config

OptionDescriptionRequiredDefault
methodThe method to use to authenticate (auth0, entraid)Yes
trustedIssuersThe list of issuers to accept tokens fromYes
audienceThe audience for authenticationYes

Example Auth0 configuration:

{
"auth": {
"method": "auth0",
"trustedIssuers": ["https://zepben-dev.au.auth0.com"],
"audience": "https://evolve-ewb/"
}
}

Auth None Config

OptionDescriptionRequiredDefault
defaultUserIdThe id for the default userYes
defaultUserEmailThe email for the default userYes
defaultUserRolesThe roles that will be inherited by the default/unauthenticated userYes

UI Config

OptionDescriptionRequiredDefault
defaultScreenThe default screen to open when the UI is opened. "map" for the network map or "fault_location" for the fault location overlay
Nomap
studiesEnabledWhether studies are enabled in the UI. true for enabled, false for disabled.Notrue
profilesTrendDisplayEnabled Whether the Trend Display module under Profiles is enabled in the UI. true for enabled, false for disabled.Nofalse
profilesSubstationLoadAnalysisEnabled Whether the Substation Load Analysis module under Profiles is enabled in the UI. true for enabled, false for disabled.Nofalse
defaultMapLayerColorsDefine default map layer colors to be rendered for all themes.
Refer Map layer colors below.
No
themesAn array of objects to define the styling and colors of the map.
Refer Themes below
No
defaultThemeSpecifies the default theme from themes to display by default.No
powerFactoryExporterEnabledWhether the Power Factory Exporter Module is enabled in the UI. It requires powerFactoryExporterOptions as well.No
powerFactoryExporterOptionsSpecifies the Exporter Options to be enabled if powerFactoryExporterEnabled is true.
Refer Exporter Options below.
No
sincalExporterEnabledWhether the Sincal Exporter Module is enabled in the UI. It requires sincalExporterOptions as well.No
sincalExporterOptionsSpecifies the Exporter Options to be enabled if sincalExporterEnabled is true.
Refer Exporter Options below.
No

Exporter Options

OptionDescriptionRequiredDefault
enableInternalNodesThis allows user to add the Internal Substation Nodes in the "Network Hierarchy Explorer"Yesfalse
enableLVFeedersThis enables the Show LV Feeders switch in the UI which a user can use to interact with the LV section of the network.Yestrue

Themes

OptionDescriptionRequiredDefault
nameName of the theme (for display purposes only).yes
sourceUrl mapbox-gl URL to fetch theme from.yes
thumbnailUrlFile path for EAS thumbnail image. See the sample configuration for examples - paths must be present in network-map.yes
layerColors Define layer specific colours for this theme. Properties not set will use values from defaultMapLayerColors.
Refer Map layer colors below
No

Note that for layerColors any top-level property that is not set the default will be used from defaultMapLayerColors. This means that if you do not specify voltage within layerColors you will get the default voltage coloring. It's important to note that this will only apply to top-level properties listed in Map layer colors below. For example, if you override phases you should set colours for all possible phases in your network, otherwise unmatched phases will default to black.

Map Layer Colors

If not configured defaults will be determined by the network map configuration.

OptionDescriptionRequiredDefault
phasesAn object mapping phase codes to hex color codes.
Refer phase below.
No
pen A list of hex color codes to be cycled through when coloring arbitrary groupings of lines.No
voltageAn array of objects with keys of range and colors to define voltage ranges and their hex color codes.
Refer voltage below.
No
offSupply A list of hex color codes to be used to denote off-supply lines.No
highlightA default hex color code to be used when highlighting lines.No
missingVoltageColor for lines with voltages that are not covered in any range under voltage.No
partiallyOffSupplyA list of hex color codes to be used to denote partially off-supply lines.No
containerColorsAn object mapping EquipmentContainer mRIDs to hex color codes.
Refer container colors below.
No
enableColorOverridesA boolean type field to disable picking the color from local storage.
Refer enable color overrides below.
No

Phase

Possible phase codes: A, B, C, AB, AC, BC, ABC, AN, BN, CN, ABN, ACN, BCN, ABCN, X, Y, YX, XN, YN, YXN, NONE

Example color configuration:

{
"phase": {
"A": "#FF0000",
"B": "#00FF00",
"C": "#0000FF",
"AB": "#FF8800",
"AC": "#7c4cad",
"BC": "#00BB00",
"ABC": "#000000",
"AN": "#BB0000",
"BN": "#BBBB00",
"CN": "#0000BB",
"ABN": "#BB6600",
"ACN": "#73479b",
"BCN": "#008800",
"ABCN": "#444444",
"X": "#bb6666",
"Y": "#444488",
"YX": "#AAAAAA",
"XN": "#AAAAAA",
"YN": "#AAAAAA",
"YXN": "#AAAAAA",
"NONE": "#CCCCCC"
}
}

If a PhaseCode is omitted it will default to black.

Pen

Pen colors will be used when coloring lines by "Container" if the containerColors option is not specified.

Voltage

To define voltage colors you must define a range and color which should be used for that range. Note that for any voltage missing a color code and range will default to the missingVoltage color or black if none is set.

{
"voltage": [
{
"range": [
0,
240
],
"color": "#1FF0EA"
},
{
"range": [
400,
4000
],
"color": "#00CCFF"
}
]
}

Container Colors

A mapping of EquipmentContainer mRIDs to a hex color code. Note that for any containers missing a color code they will default to black.

Example color configuration:

{
"containerColors": [
{
"mRID": "feeder#1",
"color": "#FF0077"
},
{
"mRID": "feeder#2",
"color": "#99FF99"
}
]
}

Enable Color Overrides

This will enable override of map layer colors from server config. If it is not required and developer want to use colors from localStorage, this can be set false or unset. Example:

{
"enableColorOverrides": true
}

PowerFactoryModel Config Types

TypeDescriptionRequired
httpConfigures the power-factory-model functionality to use an external http server for the creation of power-factory-models.
Refer power-factory-model http options below
No, mutually exclusive with mock
mockConfigures the power-factory-model functionality use a provided mock file as the result of any power-factory-model creation request. This is meant for testing purposes only
Refer power-factory-model mock options below
No, mutually exclusive with http

Http PowerFactoryModel Config

OptionDescriptionRequiredDefault
hostThe host for the network model creation serviceYes
portThe port for the network model creation serviceYes
modelsDirPath to directory where all generated power-factory-models will be storedYes

Example PowerFactoryModel configuration:

{
"powerFactoryModel": {
"type": "http",
"host": "localhost",
"port": 8089,
"modelsDir": "modelsDir"
}
}

Mock PowerFactoryModel Config

OptionDescriptionRequiredDefault
mockModelPathPath to the file to be used as a mock for all power-factory-model creation requestsYes
modelsDirPath to directory where all generated power-factory-models will be storedYes

Hosting Capacity Config

TypeDescriptionRequiredDefault
serviceObject that holds configuration related to connecting to a hosting capacity service.
Refer to Hosting Capacity Service Config Type
No
resultsDatabaseObject that holds configuration related to connecting to a hosting capacity results database.
Refer to Hosting Capacity Results Database Config
No

Hosting Capacity Service Config Type

TypeDescriptionRequired
httpConfigures the hosting capacity functionality to use an external http server for running hosting capacity work packages.
Refer hosting capacity http options below
No, mutually exclusive with mock
mockConfigures the hosting capacity functionality to use a mocked backend that will not actually run any hosting capacity work packages. This is meant for testing purposes only
Refer hosting capacity mock options below
No, mutually exclusive with http

Http Hosting Capacity Service Config

OptionDescriptionRequiredDefault
hostThe host for the hosting capacity serviceYes
portThe port for the hosting capacity serviceYes

Example Hosting Capacity Service configuration:

{
"hostingCapacity": {
"service": {
"type": "http",
"host": "localhost",
"port": 9191
}
}
}

Mock Hosting Capacity Service Config

OptionDescriptionRequiredDefault
succeedIf true all hosting capacity calls will result in a successful response. If false all will result in a failureYes

Hosting Capacity Results Database Config

OptionDescriptionRequiredDefault
urlThe JDBC URL to use to connect to the results databaseYes
driverThe database driver to use. If left unspecified, HikariCP will infer the driver from the JDBC URL.No

Example Hosting Capacity Results Database configuration:

{
"hostingCapacity": {
"resultsDatabase": {
"url": "jdbc:postgresql://<hostname>/<database-name>?user=<user>&password=<password>",
"driver": "org.postgresql.Driver"
}
}
}

Airflow Config

OptionDescriptionRequiredDefault
hostThe host for the Airflow serviceNo"localhost"
portThe port for the Airflow serviceNo8080
protocolThe protocol to use when making requests to the Airflow server - HTTP or HTTPSNo"HTTP"
verifyCertificateThe verification for the SSL cert when connecting to the Airflow service over TLSNo"true"
usernameThe username to use when making requests to the Airflow serviceYes
passwordThe password to use when making requests to the Airflow serviceYes

Example Airflow configuration:

{
"airflow": {
"host": "localhost",
"port": 8080,
"protocol": "HTTP",
"verifyCertificate": false,
"username": "airflow_user",
"password": "airflow_password123"
}
}

Metrics Database Config

OptionDescriptionRequiredDefault
urlThe JDBC URL to use to connect to the metrics databaseYes
driverThe database driver to use. If left unspecified, HikariCP will infer the driver from the JDBC URL.No

Example Metrics Database configuration:

{
"metricsDatabase": {
"url": "jdbc:postgresql://<hostname>/<database-name>?user=<user>&password=<password>",
"driver": "org.postgresql.Driver"
}
}

Sincal Model Config

OptionDescriptionRequiredDefault
frontendExporterConfigDefaultsPathPath of the JSON file used to constrain and provide defaults for frontend options for the Sincal Exporter.Yes
backendExporterConfigPathPath of the JSON file used to provide backend options for the Sincal Exporter.Yes
executionObject specifying the method of executing the Sincal Exporter. Refer sincal model execution options below.Yes
storageObject specifying the method of storing input and output files for the Sincal Model Service.Yes
ewbAuthClientObject specifying the OAuth client used by the Sincal Exporter. Refer sincal model EWB auth client options below.No

Sincal Model Execution Config Types

TypeDescriptionRequired
dockerConfigures the Sincal Model Service to execute the Sincal Exporter via an exposed Docker daemon.
Refer sincal model docker execution config below
No, mutually exclusive with mock
mockConfigures the Sincal Model Service to automatically fail or succeed in model creation rather than actually run the Sincal Exporter. This should only be used for testing purposes.
Refer sincal model mock execution config below
No, mutually exclusive with docker

Docker Sincal Model Execution Config

OptionDescriptionRequiredDefault
urlThe address of the Docker daemon to run the Sincal Exporter on.Yes
certPathThe path of the SSL/TLS certificate store to use when connecting to the Docker daemon.No
imageThe name of the image of the Sincal Exporter.Yes"sincal-exporter"
networkThe name of the network to use for the container.Yes"bridge"
ewbUrlThe address of EWB to use in the Sincal Exporter container. If left unspecified, the URL will be built from the EWB config.No
removeOnExitCodesA list of exit codes. If a Sincal Exporter container finishes with one of these exit codes, it will be removed. Helpful for debugging.Yes[0]

Mock Sincal Model Execution Config

OptionDescriptionRequiredDefault
succeedIf true all Sincal Exporter calls will result in a successful response. If false all will result in a failure.Yes

Sincal Model Storage Config Type

TypeDescriptionRequired
blobConfigures the Sincal Model Service to use Azure blob storage for input and output files.
Refer sincal model blob storage config below
No, mutually exclusive with file
fileConfigures the Sincal Model Service to use the local filesystem for input and output files. The download routes for output models do not work with this option. This should only be used for testing purposes.
Refer sincal model file storage config below
No, mutually exclusive with blob

Blob Sincal Model Storage Config

OptionDescriptionRequiredDefault
blobServiceUrlThe URL of the Azure blob service endpoint.Yes
inputBlobContainerNameThe name of the container holding the input blobs.Yes"sincal-input"
templateBlobNameThe name of the input blob for the template Sincal file.Yes"blank.sin"
standardDbBlobNameThe name of the input blob for the standard database.No
infeederMappingBlobNameThe name of the input blob for the infeeder mapping.No
protectionDevicesDbBlobNameThe name of the input blob for the protection devices database.No
outputBlobContainerNameThe name of the container to hold the output blobs.Yes"sincal-output"

File Sincal Model Storage Config

OptionDescriptionRequiredDefault
templateBlobNameThe path of the template Sincal file.Yes
outputPathThe path to use for the output files. This should be a writable directory.Yes

Sincal Model EWB Auth Client Config

OptionDescriptionRequiredDefault
clientIdThe ID of the OAuth client to authenticate against.Yes
clientSecretThe secret of the OAuth client to authenticate against.Yes

Example Sincal Model Service configuration:

{
"sincalModel": {
"frontendExporterConfigDefaultsPath": "/path/to/defaultFrontendSincalConfig.json",
"backendExporterConfigPath": "/path/to/backendSincalConfig.json",
"storage": {
"type": "blob",
"blobServiceUrl": "https://replacewithstorageaccountname.blob.core.windows.net/",
"inputBlobContainerName": "inputcontainer",
"templateBlobName": "template.sin",
"standardDbBlobName": "standard_db.sqlite",
"infeederMappingBlobName": "mapping.csv",
"protectionDevicesDbBlobName": "protection_devices.sqlite",
"outputBlobContainerName": "outputcontainer"
},
"execution": {
"type": "docker",
"url": "tcp://localhost:2375",
"ewbUrl": "http://host.docker.internal:9000",
"image": "sincal-exporter-console-debug",
"network": "host",
"removeOnExitCodes": []
},
"ewbAuthClient": {
"clientId": "1234567890",
"clientSecret": "swordfish"
}
}
}