### Charging station template
 
-| Key                               | Value(s)   | Default Value   | Value type                        | Description                                                                                                                                      |
-| --------------------------------- | ---------- | --------------- | --------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------ |
-| supervisionUrls                   |            | ''              | string \| string[]                | string or array of connection URIs to OCPP-J servers. It has priority over the global configuration parameter                                    |
-| supervisionUser                   |            | ''              | string                            | basic HTTP authentication user to OCPP-J server                                                                                                  |
-| supervisionPassword               |            | ''              | string                            | basic HTTP authentication password to OCPP-J server                                                                                              |
-| supervisionUrlOcppConfiguration   | true/false | false           | boolean                           | allow supervision URL configuration via a vendor OCPP parameter key                                                                              |
-| supervisionUrlOcppKey             |            | 'ConnectionUrl' | string                            | the vendor string that will be used as a vendor OCPP parameter key to set the supervision URL                                                    |
-| ocppVersion                       | 1.6        | 1.6             | string                            | OCPP version                                                                                                                                     |
-| ocppProtocol                      | json       | json            | string                            | OCPP protocol                                                                                                                                    |
-| ocppStrictCompliance              | true/false | false           | boolean                           | strict adherence to the OCPP version and protocol specifications                                                                                 |
-| ocppPersistentConfiguration       | true/false | true            | boolean                           | enable persistent OCPP parameters by charging station autogenerated name. The persistency is ensured by JSON files in dist/assets/configurations |
-| wsOptions                         |            | {}              | ClientOptions & ClientRequestArgs | [ws](https://github.com/websockets/ws) and node.js [http](https://nodejs.org/api/http.html) clients options intersection                         |
-| authorizationFile                 |            | ''              | string                            | RFID tags list file relative to src/assets path                                                                                                  |
-| baseName                          |            | ''              | string                            | base name to build charging stations name                                                                                                        |
-| nameSuffix                        |            | ''              | string                            | name suffix to build charging stations name                                                                                                      |
-| fixedName                         | true/false | false           | boolean                           | use the baseName as the charging stations unique name                                                                                            |
-| chargePointModel                  |            | ''              | string                            | charging stations model                                                                                                                          |
-| chargePointVendor                 |            | ''              | string                            | charging stations vendor                                                                                                                         |
-| chargeBoxSerialNumberPrefix       |            | ''              | string                            | charging stations serial number prefix                                                                                                           |
-| firmwareVersion                   |            | ''              | string                            | charging stations firmware version                                                                                                               |
-| power                             |            |                 | float \| float[]                  | charging stations maximum power value(s)                                                                                                         |
-| powerSharedByConnectors           | true/false | false           | boolean                           | charging stations power shared by its connectors                                                                                                 |
-| powerUnit                         | W/kW       | W               | string                            | charging stations power unit                                                                                                                     |
-| currentOutType                    | AC/DC      | AC              | string                            | charging stations current out type                                                                                                               |
-| voltageOut                        |            | AC:230/DC:400   | integer                           | charging stations voltage out                                                                                                                    |
-| numberOfPhases                    | 0/1/3      | AC:3/DC:0       | integer                           | charging stations number of phase(s)                                                                                                             |
-| numberOfConnectors                |            |                 | integer \| integer[]              | charging stations number of connector(s)                                                                                                         |
-| useConnectorId0                   | true/false | true            | boolean                           | use connector id 0 definition from the template                                                                                                  |
-| randomConnectors                  | true/false | false           | boolean                           | randomize runtime connector id affectation from the connector id definition in template                                                          |
-| resetTime                         |            | 60              | integer                           | seconds to wait before the charging stations come back at reset                                                                                  |
-| autoRegister                      | true/false | false           | boolean                           | set the charging station as registered at boot notification for testing purpose                                                                  |
-| autoReconnectMaxRetries           |            | -1 (unlimited)  | integer                           | connection retries to the OCPP-J server                                                                                                          |
-| reconnectExponentialDelay         | true/false | false           | boolean                           | connection delay retry to the OCPP-J server                                                                                                      |
-| registrationMaxRetries            |            | -1 (unlimited)  | integer                           | charging stations boot notification retries                                                                                                      |
-| enableStatistics                  | true/false | true            | boolean                           | enable charging stations statistics                                                                                                              |
-| mayAuthorizeAtRemoteStart         | true/false | true            | boolean                           | always send authorize at remote start transaction when AuthorizeRemoteTxRequests is enabled                                                      |
-| beginEndMeterValues               | true/false | false           | boolean                           | enable Transaction.{Begin,End} MeterValues                                                                                                       |
-| outOfOrderEndMeterValues          | true/false | false           | boolean                           | send Transaction.End MeterValues out of order. Need to relax OCPP specifications strict compliance ('ocppStrictCompliance' parameter)            |
-| meteringPerTransaction            | true/false | true            | boolean                           | enable metering history on a per transaction basis                                                                                               |
-| transactionDataMeterValues        | true/false | false           | boolean                           | enable transaction data MeterValues at stop transaction                                                                                          |
-| mainVoltageMeterValues            | true/false | true            | boolean                           | include charging station main voltage MeterValues on three phased charging stations                                                              |
-| phaseLineToLineVoltageMeterValues | true/false | true            | boolean                           | include charging station line to line voltage MeterValues on three phased charging stations                                                      |
-| Configuration                     |            |                 | ChargingStationConfiguration      | charging stations OCPP parameters configuration section                                                                                          |
-| AutomaticTransactionGenerator     |            |                 | AutomaticTransactionGenerator     | charging stations ATG configuration section                                                                                                      |
-| Connectors                        |            |                 | Connectors                        | charging stations connectors configuration section                                                                                               |
+| Key                               | Value(s)   | Default Value   | Value type                        | Description                                                                                                                           |
+| --------------------------------- | ---------- | --------------- | --------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------- |
+| supervisionUrls                   |            | ''              | string \| string[]                | string or array of connection URIs to OCPP-J servers. It has priority over the global configuration parameter                         |
+| supervisionUser                   |            | ''              | string                            | basic HTTP authentication user to OCPP-J server                                                                                       |
+| supervisionPassword               |            | ''              | string                            | basic HTTP authentication password to OCPP-J server                                                                                   |
+| supervisionUrlOcppConfiguration   | true/false | false           | boolean                           | allow supervision URL configuration via a vendor OCPP parameter key                                                                   |
+| supervisionUrlOcppKey             |            | 'ConnectionUrl' | string                            | the vendor string that will be used as a vendor OCPP parameter key to set the supervision URL                                         |
+| ocppVersion                       | 1.6        | 1.6             | string                            | OCPP version                                                                                                                          |
+| ocppProtocol                      | json       | json            | string                            | OCPP protocol                                                                                                                         |
+| ocppStrictCompliance              | true/false | false           | boolean                           | strict adherence to the OCPP version and protocol specifications                                                                      |
+| ocppPersistentConfiguration       | true/false | true            | boolean                           | enable persistent OCPP parameters by charging station hashId. The persistency is ensured by JSON files in dist/assets/configurations  |
+| wsOptions                         |            | {}              | ClientOptions & ClientRequestArgs | [ws](https://github.com/websockets/ws) and node.js [http](https://nodejs.org/api/http.html) clients options intersection              |
+| authorizationFile                 |            | ''              | string                            | RFID tags list file relative to src/assets path                                                                                       |
+| baseName                          |            | ''              | string                            | base name to build charging stations name                                                                                             |
+| nameSuffix                        |            | ''              | string                            | name suffix to build charging stations name                                                                                           |
+| fixedName                         | true/false | false           | boolean                           | use the baseName as the charging stations unique name                                                                                 |
+| chargePointModel                  |            | ''              | string                            | charging stations model                                                                                                               |
+| chargePointVendor                 |            | ''              | string                            | charging stations vendor                                                                                                              |
+| chargeBoxSerialNumberPrefix       |            | ''              | string                            | charging stations serial number prefix                                                                                                |
+| firmwareVersion                   |            | ''              | string                            | charging stations firmware version                                                                                                    |
+| power                             |            |                 | float \| float[]                  | charging stations maximum power value(s)                                                                                              |
+| powerSharedByConnectors           | true/false | false           | boolean                           | charging stations power shared by its connectors                                                                                      |
+| powerUnit                         | W/kW       | W               | string                            | charging stations power unit                                                                                                          |
+| currentOutType                    | AC/DC      | AC              | string                            | charging stations current out type                                                                                                    |
+| voltageOut                        |            | AC:230/DC:400   | integer                           | charging stations voltage out                                                                                                         |
+| numberOfPhases                    | 0/1/3      | AC:3/DC:0       | integer                           | charging stations number of phase(s)                                                                                                  |
+| numberOfConnectors                |            |                 | integer \| integer[]              | charging stations number of connector(s)                                                                                              |
+| useConnectorId0                   | true/false | true            | boolean                           | use connector id 0 definition from the template                                                                                       |
+| randomConnectors                  | true/false | false           | boolean                           | randomize runtime connector id affectation from the connector id definition in template                                               |
+| resetTime                         |            | 60              | integer                           | seconds to wait before the charging stations come back at reset                                                                       |
+| autoRegister                      | true/false | false           | boolean                           | set the charging station as registered at boot notification for testing purpose                                                       |
+| autoReconnectMaxRetries           |            | -1 (unlimited)  | integer                           | connection retries to the OCPP-J server                                                                                               |
+| reconnectExponentialDelay         | true/false | false           | boolean                           | connection delay retry to the OCPP-J server                                                                                           |
+| registrationMaxRetries            |            | -1 (unlimited)  | integer                           | charging stations boot notification retries                                                                                           |
+| enableStatistics                  | true/false | true            | boolean                           | enable charging stations statistics                                                                                                   |
+| mayAuthorizeAtRemoteStart         | true/false | true            | boolean                           | always send authorize at remote start transaction when AuthorizeRemoteTxRequests is enabled                                           |
+| beginEndMeterValues               | true/false | false           | boolean                           | enable Transaction.{Begin,End} MeterValues                                                                                            |
+| outOfOrderEndMeterValues          | true/false | false           | boolean                           | send Transaction.End MeterValues out of order. Need to relax OCPP specifications strict compliance ('ocppStrictCompliance' parameter) |
+| meteringPerTransaction            | true/false | true            | boolean                           | enable metering history on a per transaction basis                                                                                    |
+| transactionDataMeterValues        | true/false | false           | boolean                           | enable transaction data MeterValues at stop transaction                                                                               |
+| mainVoltageMeterValues            | true/false | true            | boolean                           | include charging station main voltage MeterValues on three phased charging stations                                                   |
+| phaseLineToLineVoltageMeterValues | true/false | true            | boolean                           | include charging station line to line voltage MeterValues on three phased charging stations                                           |
+| Configuration                     |            |                 | ChargingStationConfiguration      | charging stations OCPP parameters configuration section                                                                               |
+| AutomaticTransactionGenerator     |            |                 | AutomaticTransactionGenerator     | charging stations ATG configuration section                                                                                           |
+| Connectors                        |            |                 | Connectors                        | charging stations connectors configuration section                                                                                    |
 
 #### Configuration section
 
 
 import path from 'path';
 
 export default class ChargingStation {
-  public readonly id: string;
+  public hashId!: string;
   public readonly stationTemplateFile: string;
   public authorizedTags: string[];
   public stationInfo!: ChargingStationInfo;
   private webSocketPingSetInterval!: NodeJS.Timeout;
 
   constructor(index: number, stationTemplateFile: string) {
-    this.id = Utils.generateUUID();
     this.index = index;
     this.stationTemplateFile = stationTemplateFile;
     this.stopped = false;
 
   private initialize(): void {
     this.stationInfo = this.buildStationInfo();
-    this.configurationFile = path.join(
-      path.resolve(__dirname, '../'),
-      'assets/configurations',
-      this.stationInfo.chargingStationId + '.json'
-    );
-    this.configuration = this.getConfiguration();
-    delete this.stationInfo.Configuration;
     this.bootNotificationRequest = {
       chargePointModel: this.stationInfo.chargePointModel,
       chargePointVendor: this.stationInfo.chargePointVendor,
       ...(!Utils.isUndefined(this.stationInfo.firmwareVersion) && {
         firmwareVersion: this.stationInfo.firmwareVersion,
       }),
+      ...(Utils.isUndefined(this.stationInfo.iccid) && { iccid: this.stationInfo.iccid }),
+      ...(Utils.isUndefined(this.stationInfo.imsi) && { imsi: this.stationInfo.imsi }),
+      ...(Utils.isUndefined(this.stationInfo.meterSerialNumber) && {
+        meterSerialNumber: this.stationInfo.meterSerialNumber,
+      }),
+      ...(Utils.isUndefined(this.stationInfo.meterType) && {
+        meterType: this.stationInfo.meterType,
+      }),
     };
+
+    this.hashId = crypto
+      .createHash(Constants.DEFAULT_HASH_ALGORITHM)
+      .update(JSON.stringify(this.bootNotificationRequest) + this.stationInfo.chargingStationId)
+      .digest('hex');
+    logger.info(`${this.logPrefix()} Charging station hashId '${this.hashId}'`);
+    this.configurationFile = path.join(
+      path.resolve(__dirname, '../'),
+      'assets',
+      'configurations',
+      this.hashId + '.json'
+    );
+    this.configuration = this.getConfiguration();
+    delete this.stationInfo.Configuration;
     // Build connectors if needed
     const maxConnectors = this.getMaxNumberOfConnectors();
     if (maxConnectors <= 0) {
       this.stationInfo.randomConnectors = true;
     }
     const connectorsConfigHash = crypto
-      .createHash('sha256')
+      .createHash(Constants.DEFAULT_HASH_ALGORITHM)
       .update(JSON.stringify(this.stationInfo.Connectors) + maxConnectors.toString())
       .digest('hex');
     const connectorsConfigChanged =
     this.wsConfiguredConnectionUrl = new URL(
       this.getConfiguredSupervisionUrl().href + '/' + this.stationInfo.chargingStationId
     );
+    // OCPP parameters
+    this.initOcppParameters();
     switch (this.getOcppVersion()) {
       case OCPPVersion.VERSION_16:
         this.ocppIncomingRequestService =
         this.handleUnsupportedVersion(this.getOcppVersion());
         break;
     }
-    // OCPP parameters
-    this.initOcppParameters();
     if (this.stationInfo.autoRegister) {
       this.bootNotificationResponse = {
         currentTime: new Date().toISOString(),
     this.stationInfo.powerDivider = this.getPowerDivider();
     if (this.getEnableStatistics()) {
       this.performanceStatistics = PerformanceStatistics.getInstance(
-        this.id,
+        this.hashId,
         this.stationInfo.chargingStationId,
         this.wsConnectionUrl
       );