Change Log

All notable changes to this project will be documented in this file.

Version 2.19

Features

Version 2.18.1

Features

Fixes

Version 2.18

Breaking changes

The configuration file of the Trigger Relay service should be used as the base for the configuration of the new Mesh Data Transfer service.

The database configuration from the Database Gateway service needs to be applied to the Mesh Data Transfer settings file. The HttpEndpoints:DatabaseGateway node should be removed from Mesh Data Transfer configuration. The Kestrel configuration from the Database Gateway service should be dropped.

The configuration from Export Data Store settings file needs to be applied to Mesh Data Transfer settings file. Specifically:

  • the Storage, node should be moved to Mesh Data Transfer settings,
  • if present, the MercatoMapping, UnitScheduleMapping and TsVolumesWebServiceExport nodes should be moved to Mesh Data Transfer settings,
  • the export queue should be added to the QueuesConfiguration section,
  • the contents of ParticipantSettings node should be merged (previously the node existed in the configuration files of both services),
  • the HttpEndpoints:ExportDataStore node should be removed from Mesh Data Transfer configuration.

The Kestrel configuration from the Export Data Store service should be dropped.

The configuration from Mesh AMQP Relay settings file needs to be applied to Mesh Data Transfer settings file. Specifically:

  • ImportWorker and FailedMessages nodes should be applied to Mesh Data Transfer settings,
  • QueuesConfiguration in Mesh Data Transfer should be updated with the queues used for the imports (the import, import reply and failure queues),
  • ImportExportCommonSettings:Delay configuration parameter in Mesh AMQP Relay configuration is now moved to ImportWorker:Delay in Mesh Data Transfer configuration,
  • ExportWorker settings were removed and should not be applied in Mesh Data Transfer configuration file.

Additionally, the export related queues should be removed from AmqpSender:Queues, as they were used to forward export requests to Mesh AMQP Relay and are not relevant anymore.

Fixes

Version 2.17.3

Breaking changes

Fixes

Version 2.17.2

Fixes

Version 2.16.3

Fixes

Version 2.15.6

Fixes

Version 2.16.2

Fixes

Version 2.15.5

Fixes

Version 2.17.1

Fixes

Version 2.17

Breaking changes

Features

Fixes

Version 2.16.1

Features

Fixes

Version 2.16

Features

Fixes

Version 2.15.4

Features

Fixes

Version 2.15.3

Features

Fixes

Version 2.15.2

Breaking changes

Features

Fixes

Version 2.15.1

Breaking changes

  • We have changed the behaviour of the time series export when different export senders are used. The export results are now grouped per sender. If no sender is defined as the export request parameter, then the time series sender is either the sender host from the export definition or the default sender when the sender host is not defined. If the sender is defined as the export request parameter, the time series export definitions with a defined sender host that doesn't match the request sender are ignored during the export; the sender of all the time series is the request sender.

Fixes

Version 2.15

Breaking changes

  • We have added a new mandatory configuration parameter for TriggerRelay: ParticipantSettings:DefaultSender. It was done as a part of #283 and #316. The DefaultSender parameter is a number that denotes a participant key to be used by default when exporting data from Mesh. Example configuration:
  "ParticipantSettings": {
    "DefaultSender": 13
  }

Features

    <Timeseries QueryId="2ad565bc-412c-4674-b981-b1ad24537799">
      <Points Id="d3163dae-81de-413a-8c55-bc11ad5080c8" Path="XYZ" DeltaT="PT15M" Reference="ABC" UnitOfMeasurement="MW" UnitOfMeasurementName="MW" CurveType="StaircaseStartOfStep">
        <Segments>
        ...
        </Segment>

We plan to place the time series source ID in the Standard Export's Id field unconditionally starting from the release 2.16 (Smart Power 2024.5).

Fixes

Version 2.14.2

Version 2.14.1

Version 2.14

As of time of writing this note (release 2024.3 in progress) data-transfer uses a separate version for every service. Since data-transfer is part of Smart Power, we see value in unifying the data-transfer versioning scheme with the Mesh versioning system.

All releases (originating from new development and from backporting to the past releases) will start to receive a version according to the Mesh versioning system. All new data-transfer executables will be stamped with release indicator and the build number: Major.Minor.Patch.(BuildNumber), where Major and Minor will match with corresponding Mesh version.

Changelog will be divided into release sections. We will leave current changelog entries unchanged as all data-transfer deployed at the customers use the old versioning scheme.

Version 2.13

[TR3.6.3] [MAR4.5.3] [EDS4.1.1] [DBGW2.1.1]

[TR3.6.2] [MAR4.5.2]

[TR3.6.1] [MAR4.5.1]

[TR3.6.0] [MAR4.5.0]

[DBGW2.1.0] [EDS4.1.0] [MAR4.4.0] [TR3.5.0]

[MAR4.3.13]

Version 2.12.1

Version 2.12.0

We are backporting .NET8 upgrade to data-transfer in Smart Power 2024.1. As of time of writing this note (release 2024.3 in progress) data-transfer uses a separate version for every service. Since data-transfer is part of Smart Power, we see value in unifying the data-transfer versioning scheme with the Mesh versioning system.

All releases (originating from new development and from backporting to the past releases) will start to receive a version according to the Mesh versioning system. All new data-transfer executables will be stamped with release indicator and the build number: Major.Minor.Patch.(BuildNumber), where Major and Minor will match with corresponding Mesh version.

Changelog will be divided into release sections. We will leave current changelog entries unchanged as all data-transfer deployed at the customers use the old versioning scheme.

[MAR4.3.12]

[DBGW2.0.2]

[TR3.4.4] [MAR4.3.11]

  • We have added Kerberos authentication support to the gRPC interface. Services talking to Mesh using gRPC will now be able to authenticate to Mesh using Kerberos. We have added a ServerPrincipal configuration item in HttpEndpoints:Mesh node. The user should set its value to the server principal of the Mesh server. We have also removed the TlsCertificate configuration item from HttpEndpoints:Mesh node. Users should enable secure Mesh communication by using https protocol in HttpEndpoints:Mesh:Uri.

[TR3.4.3] [MAR4.3.10]

[TR3.4.2] [DBGW2.0.1] [MAR4.3.9] [EDS4.0.1]

[EDS4.0.0] [DBGW2.0.0]

  • We have changed the way EDS retrieves target queue names. In the previous versions there were 2 ways to specify target queue names to send the exports to.
  • Using the Queues array filled with queue aliases in the config file
  • Using RECADR database table to store the queue names. Broker should be specified in the Broker configuration item. Queue names were associated with an export protocol and a receiver identifier.

Approach #1 turned out to be not flexible enough and approach #2 is too messy (keeping the broker name and the queue name separately). In this version we introduce (protocol, receiver)-to-queue mapping into EDS configuration file:

  "Storage": {
    "StoragePerProtocol": {
      "PVPLAN": {
        "StorageKinds": [ "Queue" ],
        "DestinationQueues": {
          "1": [ "exportReplyQueue" ],
          "13": [ "exportReplyQueue", "someOtherQueue" ]
        },
        "DefaultQueues": [ "exportReplyQueue" ]
      },
      "PVPLAN2023": {
        "StorageKinds": [ "File" ],
        "StorePath": "C:\\files\\"
      },
      "StdExport": {
        "StorageKinds": [ "Queue" ],
        "DestinationQueues": {
          "1": [ "exportReplyQueue" ],
          "13": [ "exportReplyQueue", "someOtherQueue" ]
        },
        "DefaultQueues": [ "exportReplyQueue" ]
      },
      "APORAPOTExport": {
        "StorageKinds": [ "Queue" ],
        "DestinationQueues": {
          "1": [ "exportReplyQueue" ],
          "2": [ "exportReplyQueue", "someOtherQueue" ]
        },
        "DefaultQueues": [ "exportReplyQueue" ]
      },
      "BiddingTool": {
        "StorageKinds": [ "File" ],
        "StorePath": "C:\\files\\"
      }
    }
  },

  "QueuesConfiguration": {
    "exportReplyQueue": {
      "Broker": "B1",
      "QueueName": "exportReplyQueue",
      "Role": "Sender"
    },
    "someOtherQueue": {
      "Broker": "B1",
      "QueueName": "someOtherQueue",
      "Role": "Sender"
    }
  },
  • We introduce DestinationQueues mapping into StoragePerProtocol children nodes. It is a dictionary consisting of keys being export receiver identfiers and values being queue aliases arrays. When the DestinationQueues has a key equal to an export receiver value for given export protocol, the export data will be sent to the queues in the respective array.

  • In the StoragePerProtocol nodes the Queues array is renamed to DefaultQueues. If the DestinationQueues mapping does not provide target queue information, DefaultQueues values are used as target queues.

[MAR4.3.8]

[TR3.4.1]

[TR3.4.0]

[EDS3.3.3]

[MAR4.3.6]

[MAR4.3.5]

[EDS3.3.2]

[MAR4.3.4]

[MAR4.3.3]

[MAR4.3.2]

[MAR4.3.1]

[MAR4.3.0]

[DBGW1.1.1]

[MAR4.2.8]

[MAR4.2.7]

[MAR4.2.6]

[MAR4.2.5]

[EDS3.3.1] [MAR4.2.4]

[MAR4.2.3]

[MAR4.2.2]

[MAR4.2.1]

[MAR4.2.0]

[MAR4.1.1]

[EDS3.3.0] [TR3.3.0] [MAR4.1.0] [DBGW1.1.0]

[TR3.2.1] [EDS3.2.3] [MAR4.0.1] [DBGW1.0.1]

[EDS3.2.2]

[EDS3.2.1]

gRPC Interface Support [MAR4.0]

  • Mesh AMQP Relay is now able to communicate with Mesh using gRPC interface. New parameters are introduced to HttpEndpoints::Mesh node:
    • MeshInterface - allows the user to choose how MAR communicates with Mesh. Possible values: { gRPC, XML }.
    • TslCertificate - allows the user to specify the certificate used to encrypt the communication when using gRPC interface and HTTPS. It can be set to null when using XML interface. Uri should be adjusted to the URI of XML Mesh server or gRPC Mesh server.

```json "HttpEndpoints": { "Mesh": { "Uri": "https://localhost:50051", "MeshInterface": "gRPC", "TslCertificate": "C:\certs\certificate.crt", "RequestTimeout": 60 }, "ExportDataStore": { "Uri": "http://localhost:17000" }, "DatabaseGateway": { "Uri": "http://localhost:7137" } }

```

[EDS 3.2.0]

Single File Builds

[TR 3.1.1]

HttpEndpoints/DatabaseGateway configuration is required for the database connection.

Example:

"HttpEndpoints": {
  "DatabaseGateway": {
    "Uri": "http://localhost:7137"
  }
}

[MAR3.2.0]

There is a new config container introduced: HttpEndpoints.

MeshHttpEndpoint/MeshHttpInterface is now moved to HttpEndpoints/Mesh/Uri. MeshHttpEndpoint/RequestTimeout becomes HttpEndpoints/Mesh/RequestTimeout. ExportWorker/ExportServiceAddress becomes HttpEndpoints/ExportDataStore/Uri.

Support of MeshHttpEndpoint and ExportWorker/ExportServiceAddress nodes is dropped.

HttpEndpoints/DatabaseGateway configuration is required for the database connection.

All the HTTP endpoints accept an optional RequestTimeout parameter (unit: seconds, default value: 60).

Example HttpEndpoints section:

"HttpEndpoints": {
  "Mesh": {
    "Uri": "http://localhost:20000/mesh",
    "RequestTimeout": 60
  },
  "ExportDataStore": {
    "Uri": "http://localhost:17000/",
    "RequestTimeout": 30
  },
  "DatabaseGateway": {
    "Uri": "http://localhost:7137"
  }
}

[DBGW1.0.0]

It is supposed to be a database proxy for other data-transfer services. Currently DatabaseGateway is utilized by MAR and Trigger Relay. EDS still invokes database operations on its own.

There is a README for DatabaseGateway service.

[MAR3.0.9]

[EDS3.0.7]

[EDS3.0.6]

[TR3.0.5] [EDS3.0.5]

[MAR3.0.8]

[MAR3.0.7] [TR3.0.4] [EDS3.0.4]

[MAR3.0.6] [TR3.0.3] [EDS3.0.3]

[MAR3.0.5] [TR3.0.2] [EDS3.0.2]

[MAR3.0.4]

[TR3.0.1] [MAR3.0.3] [EDS3.0.1]

[MAR3.0.2]

New OpenTelemetry can be used in the MAR configuration file. It offers following options:

  "OpenTelemetry": {
    "UseTraces": true, // Enable traces
    "UseMetrics":  true, // Enable metrics
    "MetricsEndpoint": "http://localhost:3303" //Endpoint for metrics reading. 
  }

[MAR3.0.1]

[TR3.0.0] [MAR3.0.0] [EDS3.0.0]

Import Worker settings must contain ICC_TRANSLOG_DIR

[TR2.0.7]

[TR2.0.6] [MAR2.0.8] [EDS2.0.13]

Changed

[MAR2.0.7] [EDS2.0.12]

[EDS2.0.11]

[EDS2.0.10]

[EDS2.0.9]

[TR2.0.5] [MAR2.0.6] [EDS2.0.8]

Fixed

[MAR2.0.5] [EDS2.0.7] - 2022-02-09

Fixed

[EDS2.0.6] - 2022-02-07

Added

[EDS2.0.5] - 2022-02-04

Fixed

[EDS2.0.4] - 2022-02-03

Fixed

[TR2.0.4] [EDS2.0.3] - 2022-02-01

Changed

[MAR2.0.4] [TR2.0.3] [EDS2.0.2] - 2022-02-01

Fixed

[MAR2.0.3] [TR2.0.2] - 2022-21-01

Added

[EDS2.0.1] - 2022-14-01

Fixed