---
# System prepended metadata

title: EdgeHub Release Note v2.2
tags: [Documentation]

---

---
title: 'EdgeHub Release Note'
disqus: hackmd
---

:memo:EdgeHub Release Note v2.2
===
## Version Release

## Version: 2.2.17 (2024/09/13)

### Device Management

#### [New]

* Web page
  * In the Device Group, add group description in the device group list

#### [Update]

* Web page
  * When the user deletes a device which is bind with data object, web page will dispaly an error message which includes the related group and object name

* Center API
  * Add error codes in the device create API:
    * Device Quota is reached
  * Add error codes in the device delete API:
    * The device is bind with data object
    * The device is still in the Device Group

#### [Fix]

* Device Group
  * [#38713] [DPM] Suggest to remove the Refresh button in Device Group
  * [#38939] [DPM] The user who doesn't have the premission of device shouldn't do schedule function on this device
  * [#38364] [DPM] Schedule list should be removed when related device is remoced from device group

* Others
  * [#38721] [DPM] Suggest to remove the Add member button
  * [#38683] [DPM] The offline Edgelink device shouldn't do File management function
  * [#38803] [DPM] The list of config file of WISE module is not correct
  * [#38777] [DPM] [DM/DPM] The web page will be in loading status if deleting a device with binded parameter.

### Data Management
#### [Update]
- #### Core
  - [Cleaner] Update the versions of the Jettison, RabbitMQ, and MongoDB drivers to fix the vulnerabilities detected on Harbor. 
  - [Worker] update handle tag add/update reload data
  - [api-portal] replace 'tagValChange' with 'reloadData' property in mqtt
  - [api-portal] add DEVICE_BOUND err code
  - [Packer] Reduce the frequency of checking whether hour/day blob data needs to be deleted.
  - [Archiver] When writing rawdata, check the index before each bulk-write.
  - [Archiver-restore] When writing rawdata, check the index before each bulk-write.

- #### Data management
  - [Agreement] Update Trial Agreement Version to 5.0 
  - [Agreement] Update Subscribe Agreement Version to 4.0

#### [Fix]
- #### Core
  - [#37948][Evaluator][DM] There are 2 record log when update the setting of cal parameter
  - [Cleaner] A lot of unnecessary debug messages contain: `state should be: writes is not an empty list`.
  - [Worker] Value of #MSYS_EdgeStatus wrongly updated by tag value change
  - [#38801][Worker] Wrongly handle array tag data that cause alarmCode alarm cannot be triggered.
  - [Worker] reload data true should not save raw data if tag type is calculation
  - [#38968][Worker][DM] String type of constant parameter not be shown value after creating
  - [#38985][api-portal][DM] Some users can't chage the tenant role
  - [#38984][api-portal][DM] User can't be disable
  - [DBCreator] Extend the length of ForwardingAuthInfo.AuthUri & PluginAuthInfo.AuthUri from 1024 to 2048 
  - [Subscribe] EdgeHub will send an unnecessary `D-5 days trial expiration notice` email to subscribed tenant users.
  - [Subscribe] Subscribed tenant becomes disabled on the due day and recovers after the deduction.
  
- #### Data management
  - [#38753][DM] The length of token string should larger than 1024
  - [Parameter] the custom function help is not visible at low resolution window.
  - [Parameter] the `default value change` is not submitted if the user only edits the alarm.
  - [Tenant management] Prevent text overflow in switch status dialog
  - [Tenant management] Disable confirm button of switch status dialog when status is not changed
  - [Alarm group] Add/Edit AlarmGroup page cannot scroll at low resolution window.

- #### Command center
  - [#38673][DM] There is a "timeserie" item on the panelType droupbox when create a dashboard
  - [#37889][CC] Command center can't show the same parameters of group via reportGroupInfo function

## Version: 2.2.16 (2024/08/30)

### Device Management

#### [Update]

* Web page
  * For Configuration file OTA in My Device and Device Group, only list the corresponding model's configuration files.
  * In Device Group, add a timer to refresh the progress/result of firmware OTA and configuration OTA
  * In My Device list and Device Group, the refresh timer will not be triggered until the previous refresh operation is finished

* Backend services
  * For following services, use internal host(ex: Database services) first if internal host exists in the environment varialbe:
    * DPM Cleaner, DPM Cert Notify,BS Worker, BS Write Worker

* Center API
  * Add the device delete API
  * Add error codes for duplicate MAC address and duplicate device name for the device create API

#### [Fix]

* Device IO Configuration
  * [#38491] [DPM] The WISE-4012 Universal Input can't be set
  * [#38543] [DPM] The AI field title of WISE-4012E is not the same with WISE utility
  * [#38599] [DPM] The AI field title of WISE-4010LAN is not the same with WISE utility
  * [#38598] [DPM] WISE-4012E Min. High/Low Signal Width could't be edited on Counter mode
  * [#38601] [DPM] Alarm Value can't be set when set high/Low Alarm Value to point

* Multi-Languages
  * [#38627] [DPM] The translation of config OTA should be the same
  * [#38626] [DPM] Some items of config OTA aren't translate to Mandarin
  * [#38646] [DPM] The result of OTA should bo translate to Mandarin
  * [#38475] [DPM] Some items aren't translate to Mandarin when add Computer device

* Others
  * [#38370] [DPM] The process of OTA won't be auto refresh when doing OTA on device group
  * [#38676] [DPM] The behavior are not the same at page number input feature
  * [#38677] [DPM] The error message to SCADA/Edgelink devices be set to "Construction" mode in Device groups

### Data Management
#### [New]
- #### Core
  - [Login] Support login by MyAdvantech account

#### [Update]
- #### Core
  - [Subscribe] If an expired `Custom` tenant’s expiration date is manually extended, its status will be changed to enable.
  - [Subscribe][API] For free trial RESTFul API, verify if the tenant owner is existed or not.
  - [api-portal][API] Add error status code for create device APIs
  - [Evaluator] When writing rawdata, check the index before each write.
  - [Evaluator] Parameters that fail to compile the formula will still record RAWData with quality=bad.
  - [Evaluator] Update the parameter description text for `ValidateParam` function.
- #### User management
  - [Group User] Hide user list when access authentication is missing; add "Join Group" button and "Cannot access group" description
    
#### [Fix]
- #### Core
  - [Forwarding] The total count displayed from the search is incorrect.
  - [Plugin] The total count displayed from the search is incorrect.
  - [Import-export] remove `<br>` from import error message
  - [Packer]  Disable the remove function but still remove the backed-up data from MongoDB.
  - [DataWorker] Error handling for WISE-PaaS MQTT config uploaded in multiple messages.
  - [#38538][DataWorker] Some WISE devices lost tags of Ipaddr, macid, name, and status
  - [config-loader] Error handling for WISE-PaaS MQTT config uploaded in multiple messages.

- #### Data management
  - [Parameter] The `!=` in the formula is not correctly validated.  
  - [Parameter] In the parameter alarm, after adding an alarm and switching the tab to ‘basic,’ then switching back to ‘alarm,’ the alarm disappears.
  - [Tenant management] When the parent tenant's available quota is negative, an error occurs where the current level tenant cannot return the quota.
  - [Tenant management] the width of "Tenant name" is not initialization when the page is visited for the first time.

## Version: 2.2.15 (2024/08/16)

### Device Management

#### [New]

* Web pages
  * In My Device/Device Group/File Mangement, add page number input feature for the pagination.

#### [Update]

* Mass Device Deployment
  * Modify the max CSV file length from 20 to 32 characters

* Playbook(Scheduling)
  * Remove unused queues in the RabbitMQ

* Bootstrap Worker(Mass Device Deployment)
  * Remove unused queues in the RabbitMQ

#### [Fix]

* Multi-Languages
  * [#38366] [DPM] Some device group function translation can be modified
  * [#38476] [DPM] Some items of config OTA of WISE device aren't translate to Mandarin
  * [#38475] [DPM] Some items aren't translate to Mandarin when add Computer device
  * [#38375] [DPM] Some COTA function of WISE isn't translated to Madarin
  * [#38401] [DPM] The language of device patch task warning msg is not correct

* Others
  * [#38419] [DPM] User can't get the device list when add device on new device group
  * [#38402] [DPM] UI suggestion of group OTA
  * [#38314] [DPM] The SCADA/Edgelink devices can be set to "Construction" mode in Device groups

### Data Management
#### [Update]
- #### Core
  - [Dataworker] update log for efk monitoring
  - [Dataworker] support LoRaWAN server/child device data
  - [Dataworker] support restore device tag info from postgres
  - [Evaluator] performance enhancement for the formula of plugin
  - [api-portal] device APIs (GraphQL, RESTFul) add parentId
  - [api-portal] when update root group name or set tenant ,sync sc org
  - [api-portal] dashboard/sc org name = tenant name, no more sequence number behind org name
  - [Packer] Add daily blob backup report
  - [Packer] Add statistics api for diagnostic

- #### Data management
  - [Portal] Invalidate the old freeTrial route
  - [Portal] Allow scroll on first column of table:
    - tenant table of Tenant management
    - role table of Role management
    - permissions table of the Edit Role
- #### Command Center
  - [Datasource] Rename dashboard datasource to `EdgeHub-SimpleJson`


#### [Fix]
- #### Core
  - [Evaluator] Create `rawdata` collection without adding index
  - [Archiver] create `min` collection without adding index
  - [Archiver-restore] Create `min` collection without adding index
  - [Archiver-restore] RAWData data time incorrect may cause the restore process to excessively restore data.
  - [Dataworker] redis disconnect will lost data if message process not finish
  - [Dataworker] re-upload config, the sub-device id will not be updated
  - [Profile] Import profile with empty statetxt may cause error

- #### Data management
  - [#38498][Channel setting][DM] The event setting of email can't be set to disable

## Version: 2.2.14 (2024/08/02)

### Device Management

#### [Update]

* Batch Create Device
  * Add Update time field in detail log page

* Center API
  * Device List API: Add ip address for ADAM modules
  * Add APIs for ADAM/WISE modules to perform Firmware/Configuration file OTA

#### [Fix]

* Multi-Languages
  * [#38240] [DPM] Some iBMC function are't translated to Madarin
  * [#38369] [DPM] Some File management function are't translate to Madarin
  * [#38379] [DPM] The result of file magement should be translated to Madarin
  * [#38365] [DPM] Some device group function are't translate to Madarin
  * [#38380] [DPM] Some device batch task function of WISE isn't translated to Madarin
  * [#38381] [DPM] The language of mass deploy is not the same
  * [#38372] [DPM] Some CFG OTA function translation can be modified

* Others
  * [#38307] [DPM] The drop down UI can be adjusted when select "Shared with me" on device group
  * [#38315] [DPM] The parent group can access the info of sub-group in "Event" page.
  * [#38278] [DPM] The create date of device batch task aren't changed

### Data Management
#### [Update]
- #### Core
  - [Worker] Set minimum notification interval to 1 min
  - [Worker] Reconnet Azure IoTHub when err occurs
  - [api-portal] update signin error msg; distinguish invalid username or password
  - [api-portal] root tenant admin = dashboard main org Admin, otherwise, give viewer
  - [api-portal] update health check route `livez`
  - [Evaluator] Send system issue notification while liveness prove failed
  - [Evaluator] If source tag `#EdgeStatus` without any value, use `0` as default value for calculation.
  - [api-subscribe] Check tenant name with spectial special characters: ` `, `-`, `_`
  - 
#### [Fix]
- #### Core
  - [#38266][api-portal][DM] The quota of sub tenant can be used again when delete the object
  - [Worker] Change the value #MSYS_EdgeStatus tag incorrectly
  - [Worker] Missing isNumber attribute of #MSYS_EdgeStatus tag while adding device
  - [Worker] Missing default value of #MSYS_EdgeStatus tag while adding device
- #### Data management
  - [Parameter] duplicated error message in DataType field
  - [Forwarding] After adding `Bearer Auth`, didn't display the result immediately
  - [Forwarding] Switch token type may cause save Auth failed
  - [api-subscribe] Subscribed tenant will get trial expiration email
  - [api-subscribe] Quota sync incurrectly while version migration 

## Version: 2.2.13 (2024/07/19)

### Device Management

#### [New]

* Center API
  * Add APIs which could be called by user's applications(ex: ADAM Utility, EdgeLink Studio).
  * Center API provides following features:
    * Create new tenant and user account for EdgeHub (integrate with subscribe API)
    * User login and tenant selection
    * Get all device list, credential and info in the tenant
    * Create device
    * EdgeLink project file
      * Upload/download EdgeLink project file
      * Perform OTA and log query
    * EdgeLink firmware OTA and log query

#### [Update]

* DPM API
  * Add edition field in the system capability API

#### [Fix]

* Others
  * [#38188] [DPM] The computer device can go online via "LOGIN EDGEHUB" method even if the X.509 cert has been revoked.

### Data Management
#### [Update]
- #### Core
  - [Worker] worker will process all config without validating message data time
  - [Worker] worker will process hbt, conn, desc and other non data message if these messages is after the last data time 
  - [Evaluator] Support K8S liveness / readiness probe
  - [Archiver] Support K8S liveness / readiness probe
  - [Archiver] system issue notification to PM list
  - [Archiver-restore] Support K8S liveness / readiness probe
  - [Archiver-restore] system issue notification to PM list
  - [api-portal] system issue notification to PM list
  - [Subscribe] Update error message code form 404 to 400  
  - [Subscribe] Update free trial email template

- #### Data management
  - [Object] While create object from device, load discrete tag's descriptor to new parameter automatically.

#### [Fix]
- #### Core
  - [Worker] system tag not have online offline state in the device tag info
  - [Worker] device sentry should use last active time to check if device is not sending message and over hbt
  - [Config-loader job] DO tag should not be read only
  - [Alarm] Alarm log API may deadlock that will cause API timeout
  - [Evaluator] TotalObjects may not find some parameters to calculate
  - [Evaluator] timestamp with negative time zone may cause parsing error

## Version: 2.2.12 (2024/07/05)

### Device Management

#### [Update]

* Mass Device Deployment
  * Add heartbeat monitoring for the connection between the BS worker and RabbitMQ

* DPM API
  * Upgrade the SDK version of Azure Iot Hub to fix the enable/disable device feature due to Azure Iot Hub upgrades to GWV2

* Web page
  * Use API to check if the used license exceeds quota in parent and current tenant
  * In the File Management page, add auto refresh of file dispatch result and adjust the width of the side page.
  * In the Device Group page, remove the description filed for the EdgeLink firmware OTA
  * Remove pprocAcls filed in the user info GraphQL query

#### [Fix]

* Others
  * [#38123] [DPM] Error occurred if GeneralPC revoke X.509 cert
  * [#38138] [DPM] The process of OTA won't be auto refresh
  * [#37915] [DPM] device group can't be deleted when other user with admin permission create a sub group under the same device group
  * [#37906] [DPM] The permission and alert message are not correct if parent tenant has insufficient quota.

### Data Management
#### [Update]
- #### Core
  - [Worker] Send worker issue by email/Line/WeCom
  - [Worker] update log format
  - [Alarm] update log format
  - [api-portal] update log format
  - [api-portal] While not select Object type, give default type automatically.
  - [archiver] Support livenessProbe and readinessProbe
  - [archiver-restore] Support livenessProbe and readinessProbe
  - [archiver] update cumulative next data over recording
  - [archiver-restore] update cumulative next data over recording
  - [api-subscribe] Get list prise of customer from marketplace
   
- #### Data management
  - [Tenant management] Trial tenant can modify quota
  - [System notification] Add WeCom setting page
  - [Portal] New trial home page
  - [Portal] Check device quota at home page

- #### Command Center
  - [datasource backend] Modify partial-function check to improve query time
  
#### [Fix]
- #### Core
  - [archiver] cumulative min incorrect
  - [archiver-restore] cumulative min incorrect
  - [#38089][Packer][DM] The raw data of constant parameter is miss from 6/12~6/27
  - [#38088][Worker][DM] The constant parameter is not be record from 6/27
  - [#37948][Evaluator][DM] There are 2 record log when update the setting of cal parameter
  - [#37394][Archiver][DM] Negative value will be ignore even use the enable negative mode
  - [#37947][Evaluator][DM] The value of cal parameter with primitive parameter won't be changed when primitive parameter is deleted
  - [#37943][Evaluator][DM] Change the source of primitive parameter, the value of calc parameter with primitive parameter won't be changed
  - [#37890][Evaluator][DM] The memory used by evaluator will not be released even if the calc parameters are deleted.
  - [Notification] notify message Org {Address} with address1 + address2
  
- #### Data management
  - [#37907][DPM] The permission and alert message are not correct if parent tenant has insufficient quota.
  - [#38046][Parameter][DM] User can't create a parameters on profile when the quota of Tenant is not enough

- #### Command center
  - [#38082][Worker][CC] Controller/Control Panel cannot control/set the EdgeLink DO/AO/UserTag value.
  - [#37888][Worker][CC] Controller/Control Panel cannot control/set the WISE-4012E/ADAM-6024 DO/AO value
    
## Version: 2.2.11 (2024/06/21)

### Device Management

#### [Update]

* Mass Device Deployment
  * Improve the reconnect mechanism between the BS worker and RabbitMQ
  * Bootstrap device API: Use environment variable to control the maximun api call amount within one minute

* Web page
  * Improve the device list display when the filter of device online/offline is enable
  * Remove the additional loading icon when entering My Device page

* API
  * If the query of the device online status is failed, add default value in API response to prevent the page loading fail in My Device list.

#### [Fix]

* Others
  * [#37793] [DPM] It will show no data when the user wants to add more PC to do schedule
  * [#37941] [DPM] Devices occasionally fail to create and go online through mass deployment.

### Data Management
#### [Update]
- #### Core
  - [Worker] Support traffic limit notification
  - [Worker] improve etcd register reliability
  - [api-portal] Default parameters in GroupObject cannot be deleted
  - [Notification] support send system issue mail by amqp topic
  - [Subscribe] Set default expiration date of trial tenant as unlimited
  - [Datapacker] Optimize logic of deleting blob data

- #### Data management
  - [Portal] Disable `Object type` field of GroupObject
  

- #### Command Center
  - [Dashboard datasource] Change monthly alarm count column as option by adding an additional `markMonthlyCount` switch in `alarmlog_record` function. 

#### [Fix]
- #### Core
  - [Worker] Fix azure iot hub next incoming id nill issue
  - [Worker] Cannot see historical data of Text parameter
  - [Evaluator] Add group with calculation parameters but didn't calculate these parameters
  - [Evaluator] Some calculation calculation parameters suddenly stop calculating
  - [Evaluator] Refresh RTData tag list buffer may add redundant data
  - [Evaluator] TotalObject calculation may fail
  - [#37976][Worker][DM] The device connection status is abnormal.
  - [#37924][api-portal][DM] It takes time to delete a group
  - [#37896][api-portal][DM] EdgeHub will be crash when import the excel without parameters info in it
  - [#37783][api-portal][DM] It takes time to delete a object
  - [#37394][Archiver][DM] Negative value will be ignore even use the enable negative mode

- #### Data management
  - [Portal] After parameter created, didn't refresh page well

- #### Command Center
  - [#37888][Dashboard datasource] Cannot set value by Control Panel


## Version: 2.2.10 (2024/06/07)

### Device Management

#### [New]

* Add model name for EdgeLink firmware OTA files
  * In My Device and Device Group, add the model name filter for EdgeLink firmware OTA files
  * In Device Management Portal, the user could add model name for EdgeLink firmware OTA files.
    * If the user adds the EdgeLink firmware file, the model name is required.
    * If the user edits the EdgeLink firmware file, the model name is optional.

#### [Update]

* Mass Device Deployment
  * For ADAM/WISE models, simplify the payload in the RESTful API and MQTT message due to the firmware limitation
  * Bootstrap worker: improve the RabbitMQ reconnection mechanism
  * Modify the tranditional Chinese name of Mass Device Deployment

* Web page
  * Display the warning message when the used qty exceeds the license quota
  * In My Device, add auto refresh of Tags
  * Improve the iApp menu loading

#### [Fix]

* Mass Device Deployment
  * [#37658] [DPM] The first letter of English letters should be capitalized
  * [#37660] [DPM] Device result text in mass deployment page should be translated to mandarin

* Device Group
  * [#37786] [DPM] It only lists 50 devices when add existing device on second times
  * [#37787] [DPM] The layout is changed when add 100 devices on device group
  * [#37784] [DPM] The device group can't be deleted
  * Fix: Can not create a new group in certain situation

* Others
  * [#37761] [DPM] The add button won't be grayed out untile check the license quota is overused

### Data Management
#### [Update]
- #### Core
  - [Evaluator] Improve thread guard function
  - [Archiver] When processing rawdata, the second-level precision is changed to millisecond-level precision.
  - [Archiver-restore] When processing rawdata, the second-level precision is changed to millisecond-level precision.
  - [Packer] Imporving Blob folder path parsing.
  - [Plugin] Use service name as URL rather than full path URL
  - [User function] Use service name as URL rather than full path URL
- #### Data management
  - [Parameter] Remove -1 and 0 from calculation frequency's valid value. The new range would be 1~3600
   
- #### Command center
  - [Datasource] When querying object/parameter list, you need to select at least one group, otherwise it will return empty
  - [Datasource] Add global error processing to prevent crashing
#### [Fix]
- #### Core
  - [Subscribe service] One tenant deduction fail will call all tenant retry (waste performance by won't cause duplicated deduction)
  - [Archiver-restore] Incorrect MarkFirstValue function causes incorrect day data 
  - [#37763][Import-export][DM] Error occurred if import object with 50k calc parameter.
  - [#37762][Data packer][DM] datapacker OOM
  - [#37646][api-org][DM] ifactory pod terminated causes EdgeHub login failed.
  - [#37772][Dataworker][DM] String type of constant parameter not be shown value after creating
  - [#37711][Evaluator][DM] Some TimeMatch formula won't be recorded when recording for a while
  - [#37583][api-portal][DPM] Use the mass device devlop, but it met the error of device name is repeated
  - [#37553][Evaluator][DM] The total count of math cal parameter is not 86400
  - [#37543][Evaluator][DM] The calc parameters of math function will miss the rawdata on 00:00:00
  - [#36869][Evaluator][DM] Calc parameter raw data is delayed by 2 mins

- #### Command center
  - [#37724][Data source][CC] Use the Ene dashboard switch, select 3 groups but there are only 2 groups be seen

## Version: 2.2.9 (2024/05/24)

### Device Management

#### [Update]

* Mass Device Deployment
  * Web: Change the status name from 'Succeed' to 'Success'
  * Web: Remove Edit action when the status is 'Failed'
  * ADAM/WISE modules: Due to the firmware limitation of the ADAM/WISE modules, remove the CA certificate value in the response of the device register RESTful request.

* UI modification for License quota
  * When the used qty exceeds the license quota, the web UI is modified:
    * If the user has the Admin role in the user group, the user can only perform view and delete device operations.
    * If the user has the Viewer role in the user group, the user can only perform the view operation.

#### [Fix]

* Mass Device Deployment
  * [#37659] [DPM] Device result text change in mass deployment page
  * [#37582] [DPM] The quota is enough but it will popup a error message when doing mass device deploy

### Data Management
#### [Update]
- #### Core
  - [Worker] Save isensing no config tag informations into mongo
  - [Worker] Support WISE-PaaS MQTT config format without type definition (in spec v1.0.17)
  - [Evaluator] improve performance of `getGroupParamSum`, `getGroupAlarmStatus`, `getObjectAlarmStatus` functions
  - [Evaluator] TimeMatch on time trigger

- #### Data management
  - [License management] Add captcha in apply free trial form

- #### Command Center
  - [Dashboard function] reportGroupInfo function support daily records
  
#### [Fix]
- #### Core 
  - [Worker] Redis down and without pvc may cause device info / tag list lost
  - [Worker] Remove duplicated index in mingodb
  - [All backends] Remove write log to Redis for ELK monitoring
  - [Evaluator] Calc parameter not showing value after created
  - [Archiver] RabbimtMQ queue data accumulation
  - [import-export] if parameter data type is descrete and the descriptor is not fill in, dc-import-export-service will crash
  - [Packer] redundant fields in redis
  
- #### Data management
  - [Tenant management] LicensedSubtenant's quota cannot be allocated
  - [Parameter] Cannot scroll to bottom of Custom function help dialog 


## Version: 2.2.8 (2024/05/10)

### Device Management

#### [New]

* Mass Device Deployment
  * The user adds the device's MAC address in DPM.
  * The device connects to the Bootstrap server to obtain device credentials and then connects to DPM automatically.

#### [Update]

* Batch Create Pod
  * Increase the speed of the device creation

* My Device
  * Switch the position of the Operation icon and the Construction icon.

#### [Fix]

* Device search
  * [#37443] [DPM] There is no max length when serach the device via device name
  * [#37444] [DPM] There should be no special chatacters when serach device via device name
  * [#37445] [DPM] There should different error message when search device via mac address

### Data Management
#### [Update]
- #### Core
  - [Packer] Prevent to delete blob data while `savefreq` change to 0 or change primitive parameter's binding tag
  - [Packer] Save cold data backup history list to blob to prevent Redis data lost.
  - [Import-export] support import with reload data
   
- #### Data management
  - [License management] skip license key to apply free trial
  - [Portal] Update `Timematch` function desciption  

#### [Fix]
- #### Core
  - [Import-export] Handle recRate as millisecond, but it should be second.
  - [Import-export] Descriptor value = empty braces will cause crash
  - [#37452][Worker][DM] The data type will be changed when adding parameters by device 
  - [#37288][Worker][DM] The tag type of EdgeLink device is abnormal.
  - [#37283][Worker][DM] The value will be changed to 10000000000000000 when setting the default value of const parameter to 9999999999999999
  - [Worker] Data may not save while match save criteria (data queue full or longer than 60s)
  - [#37413][Evaluator][DM] The trigger of Timematch is not correct by TimeZone 
  - [Archiver] Wrong handle of maxChangeRatePerMin for `Current` type parameter.
  - [Archiver] Didn't sync restored day data to Archiver correctly.
  - [Archiver-restore] Didn't restore day data correctly. 
  - [DBMaster] Text parameter's logs will display more than 10 records
- #### Data management
  - [#37403][DM] The value of max change /min will be change from 999999999 to 100 when submit
 
- #### Command center
  - [Datasource] Cannot use `Table` format to display discrete parameter's descriptor.


## Version: 2.2.7 (2024/04/26)

### Device Management

#### [New]

* Add a search filter in My Device and Device Group
  * Add search of the device's MAC address
  * This feature does not include the search of EdgeLink Gateway ID or SCADA Node ID

#### [Update]

* UI Update
  * Modify the style of Add button and search filter in My Device, Device Group and AppHub Repo

* Batch create device
  * Copy the device description to other languages(Traditional Chinese, Simplified Chinesel, Japanese) in addition to English.

#### [Fix]

* Others
  * [#37168] [DPM] Some text typo in 'Device Batch Task' page.

### Data Management
#### [Update]
- #### Core
  - [Portal] Add `System notification` setting in Advanced setting of Root tenant
  - [Portal] If a calculation formula includes `Custom function` or `Plugins`, set a minimum limit for the `calculation frequency` to 60 seconds. 

#### [Fix]
- #### Core
  - [archiver-restore] Fix wrong restore of day data
  - [#37388][Worker][DM] If the record type of the corresponding parameter is set to cumulative, the device's tag data type will be changed to unknown.
  - [#37331][Worker][DM] dc-dataworker-device-sentry pod OOM after importing 50K parameter object.
  - [#37291][Worker][DM] Some coil/reg tags of WISE-4051 are not generated on Edgehub.
  - [#37287][Worker][DM] Future data from edge devices causes workers to enter traffic limits.
  - [#37253][Worker][DM] The last connected and last updated time is abnormal.
  - [#37207][Worker][DM] The SCADA device online/offline status is abnormal under 400,000 parameters loading test.
  - [#37238][api-portal][DM] default vaule of parameter of group can't be modified
  - [#37389][Evaluator][DM] TotalObject won't be trigger when set to check the value of parameter
  - [#37290][Evaluator][DM] calc parameter of plugin won't record by every minute
  - [#37284][Evaluator][DM] The vaule of TimeObject(-1) won't be changed when the amoumt of object is changed
  - [#37201][Evaluator][DM] It won't calculate when import calc parameters
  - [#37056][Evaluator][DM] The value of calc parameter will return to 0 when evaluator restart
  - [#36879][Evaluator][DM] TimeMatch formula will be trigger twice
  - [#36869][Evaluator][DM] Calc parameter raw data iis delayed by 2 mins
  - [#36863][Evaluator][DM] Calc parameter won't be recorded by every minute
  - [#36815][Evaluator][DM] The vaule of TotalObject formula won't be changed when add a new object
  - [#36814][Evaluator][DM] Timematch formula won't be triggered
  - [#36813][Evaluator][DM] The value of calc parameter within device tag is always 18
  - [#36812][Evaluator][DM] Calc parameter doesn't get data value on each minutes
  - [#36781][Evaluator][DM] Timematch formula of everyyear won't be triggered on the date of 0229

- #### Data management
  - [#37220][DM] The negative quota subtenant can be created if the quota of parent tenant is full.
  - [#36892][DM] The object import button is enable even if the parent tenant has insufficient quota.
  - [#37328][Import-export][DM] The error message of import is hard to understand
  - [#37205][DM] child tenant can add parameters via import when parent's quota is over used
  
## Version: 2.2.6 (2024/04/12)

### Device Management

#### [Update]

* Auto refresh of the device firmware OTA status
  * Include the OTA status of EdgeLink, ADAM, WISE modules

* Add the EdgeLink OTA stage display
  * When the EdgeLink OTA is in progress, display 'Downloading' or 'Upgrading' in progress bar
  * This feature includes firmware OTA and project file OTA

#### [Fix]

* Others
  * [DPM] Fix multi-language does not work in the table header of Batch Create Device
  * [#37098] [DPM] Webpage won't be refresh after enable the cert revoke
  * [#37168] [DPM] Some text typo in 'Device Batch Task' page.

### Data Management

#### [Update]
- #### Core
  - [Archiver] Modification to the calculation method for cumulative parameters.
  - [Archiver-restore] Modification to the calculation method for cumulative parameters.
  - [Evaluator] Performance enhancement (TotalObjects)  
  - [Packer] Check memory status before any backup job

- #### Data Management
  - [License] Print agreement
- #### User management
  - [User management] Move “Device management” scope’s position
  - [User management] Freeze scope column

#### [Fix]
- #### Core
  - [#37208][DM] The api-portal and api-subscrbe services work abnormally, causing the EdgeHub homepage to be inaccessible.
  - [#37169][Notification][DM] The parameter name with colon(:) cannot be parsed in notification message.
  - [#37148][Worker][DM] The ai_stAVG tag name of WISE device is missing.
  - [#37103][Worker][DM] The constant parameter of number type won't be recorded
  - [#37056][Evaluator][DM] The value of calc parameter will return to 0 when evaluator restart
  - [#36504][Evaluator][DM] Calc parameter doesn't calculate by every minute
  - [#36425][Evaluator][DM] The calc parameter formula "TImematch" won't be triggered
  - [#36327][Evaluator][DM] The Math of calc parameter isn't be recorded
  - [#36326][Evaluator][DM] The formula of calc parameter isn't be recorded
  - [#35892][Archiver-restore][DM] archiver restore service restart (OOM)
  - [#37222][api-portal][DM] The expired date will be null when creating a new sub tenant on subscribe

- #### Data Management
  - [#37237][Plugin][DM] Calc parameter of Basic Auth method can't get the value
  - [#37206][DM] The error message is hard to understand when adding parameters via import and the quota of tenant is full
  - [#37017][DM] The error message is not clearly if adding parameters (over subscribed quota) via importing object excel.
  - [#36882][DM] The page loading display doesn’t make sense in 2000 parameter object.
  - [#36922][DM] The error message is hard to understand when enter a wrong user to do retry deduction
  - [#36921][DM] There is no any message when retry deduction is success or fail
  - [#36904][DM] 'Print' button doesn't in Activate license key page.
  - [#36685][DM] Wish it has a scroll bar when setting group permission

## Version: 2.2.5 (2024/03/29)

### Device Management

#### [Update]

* Web UI modification according to UI design
  * Add System Setting in page header:
    * Advanced setting, Tenant management, Switch language, Release note
  * Modify Account Setting in page header:
    * Account setting, Switch tenant, Logout
  * Add Notification icon in page header:
    * This icon is always disabled currently.
  * Device Batch Task list: Remove "Result" field and change "Status" field to "Task result" field
  * Modify all text: Change from "Created time" to "Date created"

#### [In Development]

* Batch Create Device
  * Add a feature to accept requests from the Bootstrap server. This feature is disabled in this version.

#### [Fix]

* Others
  * [#36953] [DPM] Some text typo in Alarm/Event page
  * [#36958] [DPM] Suggest to add 'Reload' radio button in editing constant parameter page

### Data Management

#### [Update]
- #### Core
  - [api-portal] role name migration, The only special symbols left are " ", "-", "\_", and the rest of the special symbols will be replaced by "\_"
- #### Data management
  - [Tenant management] partial function disabled of child tenants.
  - [Tenant management] handle child tenant’s expired date modification.
  - [Tenant management] alert on UI: insufficient quota: quota insufficient.
  - [Tenant management] add tenant labels.

#### [Fix]
- #### Core
  - [#37101][Archiver][DM] The wise-mplus-archiver service pod restarts many times during the performance test of 400,000 parameters loading.
  - [#37100][Worker][DM] The ai_AVG and ai_stAVG tag will be generated even if the ADAM device don't publish the config.
  - [#37023][Alarm][DM] The alarm of new created object (bound same device as old object) will be triggered even if the device is offline.
  - [#37001][Worker] The COM1/Modbus/RTU tags name of WISE-4051 are not correct.
  - [#36881][Alarm][DM] Part of parameter alarms are triggered after object excel import.
  - [#37102][Worker][DM] There is no realtime value when create a new constant parameter
  - [#36981][Worker][DM] Edgelink is continue online offline
  - [#37091][Worker][DM] The tags of Edgelink is upload but there is no data and Edgelink is still offline

- #### Data management
  - [#37018][DM] The object import button is disable if the quota of parameter is full used.
  - [#36809][DM] user role permission of Group, object, and parameter can't set to user
  - [#36773][DM] Menu item will disappear when use browser to open 2 pages to login to different tenant
  - [#36686][DM] Set the admin permission of Dashboard & menu list, but there is no UI to show


## Version: 2.2.4 (2024/03/15)

### Device Management

#### [Update]

* Security Fix
  * Update MongoDB library and Node version to fix CVE vulnerability
  * Affected Pods: api-dpm, batch-device

#### [In Development]

* Device Management Portal
  * Add settings for communication with Bootstrap server. This setting is disabled in this version.

* X.509 Certificate API
  * Add feature: the X.509 intermediate certificate of the device could be chosen by the device serial number instead of the device orgId. This feature is disabled in this version.

#### [Fix]

* Others
  * [#36889] [DPM] There is a text typo in add EdgeLink device page.

### Data Management

#### [Update]
- #### Core
  - [DBMaster][RESTFul API] Adjust parameter apis to use parameter id as input (replace objId & objParam).
  - [#36148][Worker] Support WISE new config format 
    - modbusserver_config

#### [Fix]
- #### Core
  - [#36929][Worker][DM] Default value is not shown on UI
  - [#36881][alarm][DM] Part of parameter alarms are triggered after object excel import.
  - [#36871][alarm][DM] Actually 2079 alarm are triggered even if only 2000 parameter meet the alarm rule.
  - [#36868][Worker] The worker enter in "Trafic limit" status unexpectedly.
  - [#36862][Worker] The last value/quality/time of devices will be cleared after the version is updated.
  - [#36816][import-export][DM] Event rule setting will not be exported in "isEnable" field in object excel.
  - [#36808][api-portal][DM] Error occurred if import same object excel file after exporting.
  - 
- #### Data management
  - [#36936][DM] It can be added parameters (over subscribed quota) via importing object excel.
  - [#36922][DM] The error message is hard to understand when enter a wrong user to do retry deduction
  - [#36908][DM] The tenant management edit page may have security issues.
  - [#36891][DM] It can add negative number of devices and parameters in tenant management.
  - [#36873][DM] Cannot export alarm report from dashboard alarm panel.
  - [#36320][DM] The Parameter name in Variable library of Notification message is not sorted
  - [#36944][DM] Expired tenant shouldn't be on the list when active the license key
  - [#36683][DM] The admin permission of Profile management, it will show Not Found at first time to login
  - [#36494][DM] It will auto create code list when creating cal parameter woth ";" + space
  - [#36265][DM] It will take time (almost 6 seconds) to show the device list at first time when creating a primivite parameter
  - [#36921][DM] There is no any message when retry deduction is success or fail
  - [#36317][DM] Webpage error occurred if entering any character in First or Last name field in add from new alarm user page.
  - [#35564][DM] Dialog boxes in DM and DPM behave differently if an invalid license key is entered.

## Version: 2.2.3 (2024/03/01)

### Device Management

#### [Update]

* Web Page Update
  * Add text of minimum firmware version requirement when creating  EdgeLink device

#### [Fix]

* Others
  * [#36566] [DPM] The AI unit of ADAM device is incorrect in monitor page
  * [#36688] [DPM] Add Group icon should be gray when use viewer permission to access
### Data Management
#### [New]
- #### Core
  - [Portal] New tenant management UI
    - Retry deduction

#### [Update]
- #### Core
  - [Apps] Mongoose update to fix security issue
    - [api-portal] Update Mongoose to v8.2.0
    - [subscribe service] Update Mongoose to v8.2.0
    - [api-devtool] Update Mongoose to v8.2.0
    - [datasource backend] Remove Mongoose
    - [api-plugin]Remove Mongoose
  - [Subscribe service] due day, due day+30days logic change
    -  due day: disable tenant + email notification
    -  due day + 30 days: disable tenant / Reclaim allocated quota / email notification
  - [Evaluator] Optimize the performance of normal formula calculation and `TotalObjects` function
#### [Fix]
- #### Core
  - [#36730][Dataworker][DM] Edgelink devices are offline because the worker connection is break
  - [#36704][Dataworker][DM] The worker enter in "Traffic limit" status if 5,760,000 message upload to EdgeHub simultaneously.
  - [#36703][api-portal][DM] Part of alarm rule will not be enable (backend) if import object from excel.
  - [#36676][api-portal][DM] Alarm rule will not be disable if import object from excel.
  - [#36635][Dataworker][DM] The raw data will not be recorded if WISE device reconnect to edgehub.
  - [#36634][Dataworker][DM] The breakpoint resume function work not correctly.
  - [#36504][Evaluator][DM] Calc parameter doesn't calculate by every minute
  - [Restore] Incorrect result in Discrete parameter restore
- #### Data management
  - [#36692][DM] Use subscribe license and click the Getting support, AE account isn't be added automatically
  - [#36687][DM] Set the viewer permission of Role list, it will show Insufficient permissions to view when access to user management of Root tenant
  - [#36680][DM] Can't set the user permission of Group, object, and parameter
  - [#36631][DM] Tenant owner shouldn't be selected to changed
  - [#36527][DM] It will show "No parameter, yet" when switch 2 object with over 50 parameters

## Version: 2.2.2 (2024/02/07)

### Device Management

#### [Update]

* Align user role with User Management
  * If user has 'Manage' permission in In-Outbound setting, user could perform all actions in DPM
  * If user has 'Viewer' permission in In-Outbound setting, user could only perform view actions in device, device group, AppHub repository and file management
  * If user has 'None' permission in In-Outbound setting, user can not enter DPM

* Add 'Back' button in Activate License Key dialog

#### [Fix]

* Others
  * [#34888] [DPM] Viewer role can CRUD in DPM
  * [#36423] [DPM] There is a weird page if switch page from 'Repository' to 'Progress' in Applications.
  * [#36395] [DPM] The RS-485 tag value of WISE-4051 in Monitor page is NaN.

### Data Management
#### [New]
- #### Core
  - [Portal] New tenant management UI
    - New Activation agreement flow UI
#### [Update]
- #### Core
  - [Portal] Remove onProxyReq,onProxyRes to improve proxy performance
  - [Microservices] upgrade Node.js base image to 20.11.0-slim to prevent OOM issue in K8S 1.25.x
  - [Microservices] upgrade Java base image to openjdk:18.0.2 to prevent OOM issue in K8S 1.25.x
  - [api-portal] optimize gateways api performance
  - [api-portal] when parent group name change, then notify all child group
  - [api-portal] Add bound parameter info in tagAdd/tagUpdate mqtt message

#### [Fix]
- #### Core
  - [Archiver] Incorrect first value for hour data will cause wrong HIS_AVG of hour data
  - [Archiver] Archiver no response in dev site
  - [#35892][Archiver][DM] archiver restore service restart (OOM)
  - [ArchiverRestore] The waiting time between two restore tasks is too long
  - [ArchiverRestore] Incorrect first value for hour data will cause wrong HIS_AVG of hour data 
  - [api-portal] wrong parameter's kept days for the parameters that is created before version 2.0.22
  - [api-portal] PG connection timeout
  - [api-portal] User with multiple tenant roles and roles with lower privileges come first (ex. assign `Viewer` first, then add `Admin`) will cause permission denied.
  - [dbmaster] The field order for discrete raw data of API response (/data/CalculatedData/query) is wrong (should be "tagvalue", "quality", "datatime")
  - [#36325][Alarm service][DM] Actually only 1431 alarm are triggered even if 2000 parameter meet the alarm rule. 
  - [#36482][Subscribe service] [DM] EdgeHub Login site address on email can't be accessed
- #### Data management
  - [#35831][DM] Set 2 calc parameters to get the plugin value, there are 2 different data source but the value are the same
- #### User management
  - [#34917][UM] Use the Command Center permission, but can't enable the anonymous login
  - [#34683][UM] Create a command center permission,but can't access the command center
- #### Command center
  - [#36343][dashboard backend] api-org-wise-mplus pod will crash If more than 5,000 data(dashboard panel) are accessed.   


## Version: 2.2.1 (2024/01/26)

### Device Management


#### [Update]

* My Device List
  * Adjust the width of device list to reduce the display possibility of horizontal scroll bar

* ADAM/WISE IO Configuration
  * For Digital Input(DI) and Digital Output(DO) channel settings, add field name and valid value range in error message

* Java related Microservices
  * Upgrade to JRE version which supports Cgroups v2

#### [Fix]

* Others
  * [#36197] [DPM] The location of button will be shifted if select all in 'Select existing device' dialog in device group
  * [#36146] [DPM] Cannot auto select WISE-4000/LAN series when pasting the device info
  * ADAM/WISE IO Configuration: Fix Spelling error(Change from 'AI Alarm Drived' to 'AI Alarm Driven')
  * [#36394] [DPM] The device 'quality' in tag page is missing in certain situation

### Data Management
#### [New]
- #### Core
  - [Portal] New tenant management UI
    -  Allocate license quota functionality
    -  Allocate license quota in edit tenant functionality.
    -  Change tenant status (enable/disable)
    -  Display SIConsole/Subscribed/Manually created tenant in tenant list

#### [Update]
- #### Core
  - [Archiver] Handle the special case of HIS_AVG computation for the parameter with `cumulative` recording type:
    - data glitch to 0
    - data glitch to 0 right after device online

#### [Fix]
- #### Core
  - [Packer] Didn't send the delete parameter notification to Cleaner, which will result in the parameter's recording rate/hour/day data not being deleted.
  - [Cleaner] Delete a parameter will also erase the historical data for other parameters within the same object, including recording rate / hour / day data.
  - [#35915][Data restore] The text format data aren't not be recorded actually after stop and restart worker on 1225
  - [#35892][Data restore] archiver restore service restart (OOM)
  - [#36233][Worker] Edgelink device can't be connected on board
  - 
- #### Data management
  - [#36234][DM] Parent tenant tree shouldn't be showed if parent tenant can't be changed
  - [#36255][DM] Expired date can't earlier than today
  - [#36260][DM] The total sum of quota is not correct
  - [#36259][DM] Can't set the parent tenant when create a new tenant
  - [#35862][DM] The calculation parameter code data source list is not correct if select the descendant-group.
- #### Command Center
  - [#36319][CC] Alarm status can't be edited on Alarm panel


## Version: 2.2.0 (2024/01/12)

### Device Management

#### [New]

* New add/edit device UI
  * New UI design for add and edit devices(ADAM, WISE, EdgeLink, SCADA, Computer)

#### [Update]

* My Device
  * Display device creator's icon in the user column of device list
  * Highlight device row when mouse over device list
  * When device's certificate is revoked, disable certificate download and copy credential in Connect tab.

* X.509 Device Filter
  * In My Device and Device Group, add filter to search if devices use X.509

#### [Fix]

* Multi-Languages
  * Add translation in the dialog when delete device failed

### Data Management
#### [New]
- #### Core
  - [Portal] New tenant management UI
    - Tenant list
      - Under root-tenant: Can view and manipulate complete tenant tree started from root-tenant.
      - Under sub-tenant: Can view and manipulate itself and child tenants
    - Add Tenant
      - Under root-tenant: Can add sub-tenant under any node of tenant tree.
      - Under sub-tenant: Can add sub-tenant under itself.
    - Update Tenant
      - Under root-tenant: Can update any tenant of tenant tree.
      - Under sub-tenant: Can update itself and child tenants
    - Activate license key
      - Root tenant's direct child tenants can activate license key in this user interface.
  - [Dataworker] Dataworker refactor
    - New architecture to support multi-instance dataworker

## Version: 2.1.18 (2024/07/05)
### Device Management

#### [Update]

* None

#### [Fix]

* None

### Data Management
#### [Update]
- #### Core
  - [Alarm] update log format
  - [api-portal] While not select Object type, give default type automatically.
  - [api-portal] For non iiot operated environment, set default expired date to null.
  - [archiver] Support livenessProbe and readinessProbe
  - [archiver-restore] Support livenessProbe and readinessProbe
  - [archiver] update cumulative next data over recording
  - [archiver-restore] update cumulative next data over recording
  - [Notification] notify message Org {Address} with address1 + address2 
  
#### [Fix]
- #### Core
  - [worker] Send C2D message failed may cause unAcked queue full and block data consume. 
  - [archiver] cumulative min incorrect
  - [archiver-restore] cumulative min incorrect
  - [#38089][Packer][DM] The raw data of constant parameter is miss from 6/12~6/27
  - [#37948][Evaluator][DM] There are 2 record log when update the setting of cal parameter
  - [#37394][Archiver][DM] Negative value will be ignore even use the enable negative mode
  - [#37947][Evaluator][DM] The value of cal parameter with primitive parameter won't be changed when primitive parameter is deleted
  - [#37943][Evaluator][DM] Change the source of primitive parameter, the value of calc parameter with primitive parameter won't be changed
  - [#37890][Evaluator][DM] The memory used by evaluator will not be released even if the calc parameters are deleted.

## Version: 2.1.17 (2024/06/21)
### Device Management

#### [Update]

* None

#### [Fix]

* None

### Data Management
#### [Update]
- #### Core
  - [api-portal] Default parameters in GroupObject cannot be deleted
  - [Subscribe] Set default expiration date of trial tenant as  unlimited

- #### Data management
  - [Portal] Disable `Object type` field of GroupObject
  
- #### Command Center
  - [Dashboard datasource] Change monthly alarm count column as option by adding an additional markMonthlyCount switch in alarmlog_record function. 

#### [Fix]
- #### Core
  - [#37896][api-portal][DM] EfgeHub will be crash when import the excel without parameters info in it
  - [#37394][Archiver][DM] Negative value will be ignore even use the enable negative mode

- #### Data management
  - [Portal] After parameter created, didn't refresh page well


## Version: 2.1.16 (2024/06/07)

### Device Management

#### [Update]

* None

#### [Fix]

* Device Group
  * Fix: Can not create a new group in certain situation

### Data Management
#### [Update]
- #### Core
  - [Evaluator] Improve thread guard function
  - [Archiver] When processing rawdata, the second-level precision is changed to millisecond-level precision.
  - [Archiver-restore] When processing rawdata, the second-level precision is changed to millisecond-level precision.
  - [Packer] Imporving Blob folder path parsing.
  - [Plugin] Use service name as URL rather than full path URL
  - [User function] Use service name as URL rather than full path URL

- #### Data management
  - [Parameter] Remove -1 and 0 from calculation frequency's valid value. The new range would be 1~3600
   
- #### Command center
  - [Datasource] When querying object/parameter list, you need to select at least one group, otherwise it will return empty
  - [Datasource] Add global error processing to prevent crashing

#### [Fix]
- #### Core
  - [Subscribe service] One tenant deduction fail will call all tenant retry (waste performance by won't cause duplicated deduction)
  - [Archiver-restore] Incorrect MarkFirstValue function causes incorrect day data 
  - [#37763][Import-export][DM] Error occurred if import object with 50k calc parameter.
  - [#37762][Data packer][DM] datapacker OOM
  - [#37646][api-org][DM] ifactory pod terminated causes EdgeHub login failed.
  - [#37711][Evaluator][DM] Some TimeMatch formula won't be recorded when recording for a while
  - [#37583][api-portal][DPM] Use the mass device devlop, but it met the error of device name is repeated
  - [#37553][Evaluator][DM] The total count of math cal parameter is not 86400
  - [#37543][Evaluator][DM] The calc parameters of math function will miss the rawdata on 00:00:00
  - [#36869][Evaluator][DM] Calc parameter raw data is delayed by 2 mins

- #### Command center
  - [#37724][Data source][CC] Use the Ene dashboard switch, select 3 groups but there are only 2 groups be seen

## Version: 2.1.15 (2024/05/24)

### Device Management

#### [Update]

* None

#### [Fix]

* None

### Data Management
#### [Update]
- #### Core
  - [Evaluator] improve performance of `getGroupParamSum`, `getGroupAlarmStatus`, `getObjectAlarmStatus` functions
  - [Evaluator] TimeMatch on time trigger

- #### Command Center
  - [Dashboard function] reportGroupInfo function support daily records
  
#### [Fix]
- #### Core 
  - [Evaluator] Calc parameter not showing value after created
  - [Archiver] RabbimtMQ queue data accumulation
  - [import-export] if parameter data type is descrete and the descriptor is not fill in, dc-import-export-service will crash
  
- #### Data management
  - [Parameter] Cannot scroll to bottom of Custom function help dialog 

## Version: 2.1.14 (2024/05/10)

### Device Management

#### [Update]

* Disable the device creation UI of LoRaWAN and WISE-4600 in the HPC evnironments.

#### [Fix]

* [#37463] [DPM] User can't create a new device on QA environment

### Data Management
#### [Update]   
- #### Core
  - [Import-export] support import with reload data
- #### Data management
  - [Portal] Update `Timematch` function desciption  

#### [Fix]
- #### Core
  - [Import-export] Handle recRate as millisecond, but it should be second.
  - [Import-export] Descriptor value = empty braces will cause crash
  - [#37413][Evaluator][DM] The trigger of Timematch is not correct by TimeZone 
  - [Archiver] Wrong handle of maxChangeRatePerMin for `Current` type parameter.
  - [Archiver] Didn't sync restored day data to Archiver correctly.
  - [Archiver-restore] Wrong handle of maxChangeRatePerMin for `Current` type parameter.
  - [Archiver-restore] Didn't restore day data correctly. 

- #### Data management
  - [#37403][DM] The value of max change /min will be change from 999999999 to 100 when submit

- #### Command center
  - [Datasource] Cannot use `Table` format to display discrete parameter's descriptor.

## Version: 2.1.13 (2024/04/26)

### Device Management

#### [Update]

* Batch create device
  * Copy the device description to other languages(Traditional Chinese, Simplified Chinesel, Japanese) in addition to English.

#### [Fix]

* None

### Data Management
#### [Update]
- N/A
#### [Fix]
- #### Core
  - [#37389][Evaluator][DM] TotalObject won't be trigger when set to check the value of parameter
  - [#37290][Evaluator][DM] calc parameter of plugin won't record by every minute
  - [#37284][Evaluator][DM] The vaule of TimeObject(-1) won't be changed when the amoumt of object is changed
  - [#37201][Evaluator][DM] It won't calculate when import calc parameters
  - [#37056][Evaluator][DM] The value of calc parameter will return to 0 when evaluator restart
  - [#36879][Evaluator][DM] TimeMatch formula will be trigger twice
  - [#36869][Evaluator][DM] Calc parameter raw data iis delayed by 2 mins
  - [#36863][Evaluator][DM] Calc parameter won't be recorded by every minute
  - [#36815][Evaluator][DM] The vaule of TotalObject formula won't be changed when add a new object
  - [#36814][Evaluator][DM] Timematch formula won't be triggered
  - [#36813][Evaluator][DM] The value of calc parameter within device tag is always 18
  - [#36812][Evaluator][DM] Calc parameter doesn't get data value on each minutes
  - [#36781][Evaluator][DM] Timematch formula of everyyear won't be triggered on the date of 0229

- #### Data management
  - [#37328][Import-export][DM] The error message of import is hard to understand


## Version: 2.1.12 (2024/04/12)

### Device Management

#### [Update]

* Auto refresh of the device firmware OTA status
  * Include the OTA status of EdgeLink, ADAM, WISE modules

* Add the EdgeLink OTA stage display
  * When the EdgeLink OTA is in progress, display 'Downloading' or 'Upgrading' in progress bar
  * This feature includes firmware OTA and project file OTA

#### [Fix]

* Others
  * [DPM] Fix multi-language does not work in the table header of Batch Create Device
  * [#37168] [DPM] Some text typo in 'Device Batch Task' page.

### Data Management
#### [Update]
- #### Core
  - [Archiver] Modification to the calculation method for cumulative parameters.
  - [Archiver-restore] Modification to the calculation method for cumulative parameters.
  - [Evaluator] Performance enhancement (TotalObjects)  
- #### User management
  - [User management] Move “Device management” scope’s position
  - [User management] Freeze scope column

#### [Fix]
- #### Core
  - [Worker] worker restart may cause some object's savefreq = 0
  - [#37208][DM] The api-portal and api-subscrbe services work abnormally, causing the EdgeHub homepage to be inaccessible.
  - [#37169][Notification][DM] The parameter name with colon(:) cannot be parsed in notification message.
  - [#37056][Evaluator][DM] The value of calc parameter will return to 0 when evaluator restart
  - [#36504][Evaluator][DM] Calc parameter doesn't calculate by every minute
  - [#36425][Evaluator][DM] The calc parameter formula "TImematch" won't be triggered
  - [#36327][Evaluator][DM] The Math of calc parameter isn't be recorded
  - [#36326][Evaluator][DM] The formula of calc parameter isn't be recorded
  - [#35892][Archiver-restore][DM] archiver restore service restart (OOM)
  - [#37222][api-portal][DM] The expired date will be null when creating a new sub tenant on subscribe

- #### Data Management
  - [#37237][Plugin][DM] Calc parameter of Basic Auth method can't get the value
  - [#37206][DM] The error message is hard to understand when adding parameters via import and the quota of tenant is full
  - [#37017][DM] The error message is not clearly if adding parameters (over subscribed quota) via importing object excel.
  - [#36882][DM] The page loading display doesn’t make sense in 2000 parameter object.
  - [#36922][DM] The error message is hard to understand when enter a wrong user to do retry deduction
  - [#36921][DM] There is no any message when retry deduction is success or fail
  - [#36685][DM] Wish it has a scroll bar when setting group permission


## Version: 2.1.11 (2024/03/29)

### Device Management

#### [Update]

* Web UI modification according to UI design
  * Device Batch Task list: Remove "Result" field and change "Status" field to "Task result" field
  * Modify all text: Change from "Created time" to "Date created"

#### [Fix]

* Others
  * [#36953] [DPM] Some text typo in Alarm/Event page
  * [#36958] [DPM] Suggest to add 'Reload' radio button in editing constant parameter page

### Data Management

#### [Update]
- #### Core
  - [api-portal] role name migration, The only special symbols left are " ", "-", "\_", and the rest of the special symbols will be replaced by "\_"

#### [Fix]
- #### Core
  - [#37101][Archiver][DM] The wise-mplus-archiver service pod restarts many times during the performance test of 400,000 parameters loading.
  - [#37023][Alarm][DM] The alarm of new created object (bound same device as old object) will be triggered even if the device is offline.
  - [#36881][Alarm][DM] Part of parameter alarms are triggered after object excel import.

- #### Data management
  - [#37018][DM] The object import button is disable if the quota of parameter is full used.
  - [#36809][DM] user role permission of Group, object, and parameter can't set to user
  - [#36773][DM] Menu item will disappear when use browser to open 2 pages to login to different tenant
  - [#36686][DM] Set the admin permission of Dashboard & menu list, but there is no UI to show

## Version: 2.1.10 (2024/03/15)

### Device Management

#### [Update]

* Security patch
  * Update MongoDB library and Node version to fix CVE vulnerability
  * Affected Pods: api-dpm, batch-device

#### [Fix]

* None

### Data Management

#### [Update]
- #### Core
  - [DBMaster][RESTFul API] Adjust parameter apis to use parameter id as input (replace objId & objParam).
  - [Packer] Check memory status before any backup job

#### [Fix]
- #### Core
  - [#36881][alarm][DM] Part of parameter alarms are triggered after object excel import.
  - [#36871][alarm][DM] Actually 2079 alarm are triggered even if only 2000 parameter meet the alarm rule.
  - [#36816][import-export][DM] Event rule setting will not be exported in "isEnable" field in object excel.
  - [#36808][api-portal][DM] Error occurred if import same object excel file after exporting.
  - 
- #### Data management
  - [#36936][DM] It can be added parameters (over subscribed quota) via importing object excel.
  - [#36873][DM] Cannot export alarm report from dashboard alarm panel.
  - [#36320][DM] The Parameter name in Variable library of Notification message is not sorted
  - [#36683][DM] The admin permission of Profile management, it will show Not Found at first time to login
  - [#36494][DM] It will auto create code list when creating cal parameter woth ";" + space
  - [#36265][DM] It will take time (almost 6 seconds) to show the device list at first time when creating a primivite parameter


## Version: 2.1.9 (2024/03/01)

### Device Management

#### [Update]

* Web Page Update
  * Add text of minimum firmware version requirement when creating  EdgeLink device

#### [Fix]

* Others
  * [#36566] [DPM] The AI unit of ADAM device is incorrect in monitor page

### Data Management
#### [Update]
- #### Core
  - [Apps] Mongoose update to fix security issue
    - [api-portal] Update Mongoose to v8.2.0
    - [subscribe service] Update Mongoose to v8.2.0
    - [api-devtool] Update Mongoose to v8.2.0
    - [datasource backend] Remove Mongoose
    - [api-plugin]Remove Mongoose
  - [Subscribe service] due day, due day+30days logic change
    -  due day: disable tenant + email notification
    -  due day + 30 days: disable tenant / Reclaim allocated quota / email notification
  - [Evaluator] Optimize the performance of normal formula calculation and `TotalObjects` function
#### [Fix]
- #### Core
  - [#36504][Evaluator][DM] Calc parameter doesn't calculate by every minute
  - [Restore] Incorrect result in Discrete parameter restore
- #### Data management
  - [#36687][DM] Set the viewer permission of Role list, it will show Insufficient permissions to view when access to user management of Root tenant
  - [#36680][DM] Can't set the user permission of Group, object, and parameter
  - [#36527][DM] It will show "No parameter, yet" when switch 2 object with over 50 parameters

  
## Version: 2.1.8 (2024/02/07)

### Device Management

#### [Update]

* Add 'Back' button in Activate License Key dialog

#### [Fix]

* Others
  * [#36423] [DPM] There is a weird page if switch page from 'Repository' to 'Progress' in Applications.
  * [#36395] [DPM] The RS-485 tag value of WISE-4051 in Monitor page is NaN.

### Data Management
#### [Update]
- #### Core
  - [Portal] Remove onProxyReq,onProxyRes to improve proxy performance
  - [Microservices] upgrade Node.js base image to 20.11.0-slim to prevent OOM issue in K8S 1.25.x
  - [Microservices] upgrade Java base image to openjdk:18.0.2 to prevent OOM issue in K8S 1.25.x
  - [api-portal] optimize gateways api performance
  - [api-portal] when parent group name change, then notify all child group
  - [api-portal] Add binded parameter info in tagAdd/tagUpdate mqtt message

#### [Fix]
- #### Core
  - [Archiver] Incorrect first value for hour data will cause wrong HIS_AVG of hour data
  - [Archiver] Archiver no response in dev site
  - [#35892][Archiver][DM] archiver restore service restart (OOM)
  - [ArchiverRestore] The waiting time between two restore tasks is too long
  - [ArchiverRestore] Incorrect first value for hour data will cause wrong HIS_AVG of hour data 
  - [api-portal] wrong parameter's kept days for the parameters that is created before version 2.0.22
  - [api-portal] PG connection timeout
  - [api-portal] User with multiple tenant roles and roles with lower privileges come first (ex. assign `Viewer` first, then add `Admin`) will cause permission denied.
  - [dbmaster] The field order for discrete raw data of API response (/data/CalculatedData/query) is wrong (should be "tagvalue", "quality", "datatime")
  - [Packer] Env set disable remove hot data but not working (since version 2.1.2)
  - [Alarm service][DM] Actually only 1431 alarm are triggered even if 2000 parameter meet the alarm rule. 
  - [#36482][Subscribe service] [DM] EdgeHub Login site address on email can't be accessed
- #### Data management
  - [#35831][DM] Set 2 calc parameters to get the plugin value, there are 2 different data source but the value are the same
- #### User management
  - [#34917][UM] Use the Command Center permission, but can't enable the anonymous login
  - [#34683][UM] Create a command center permission,but can't access the command center
- #### Command center
  - [#36343][dashboard backend] api-org-wise-mplus pod will crash If more than 5,000 data(dashboard panel) are accessed.   
  - [#36319][CC] Alarm status can't be edited on Alarm panel
 
## Version: 2.1.7 (2024/01/26)

### Device Management

#### [Update]

* My Device List
  * Adjust the width of device list to reduce the display possibility of horizontal scroll bar

* ADAM/WISE IO Configuration
  * For Digital Input(DI) and Digital Output(DO) channel settings, add field name and valid value range in error message

* Java related Microservices
  * Upgrade to JRE version which supports Cgroups v2

#### [Fix]

* Others
  * [#36197] [DPM] The location of button will be shifted if select all in 'Select existing device' dialog in device group
  * [#36146] [DPM] Cannot auto select WISE-4000/LAN series when pasting the device info
  * ADAM/WISE IO Configuration: Fix Spelling error(Change from 'AI Alarm Drived' to 'AI Alarm Driven')
  * [#36394] [DPM] The device 'quality' in tag page is missing in certain situation

### Data Management
#### [Update]
- #### Core
  - [Archiver] Handle the special case of HIS_AVG comutation for the parameter with `cumulative` recording type:
    - data glitch to 0
    - data glitch to 0 right after device online

#### [Fix]
- #### Core
  - [Worker] When attempting to stop the app voluntarily, the stop operation fails
  - [#36230][Worker] After upgrading AKS version, the device tags info are abnormal.
  - [Packer] Didn't send the delete parameter notification to Cleaner, which will result in the parameter's recording rate/hour/day data not being deleted.
  - [Cleaner] Delete a parameter will also erase the historical data for other parameters within the same object, including recording rate / hour / day data.
  - [#35915][Data restore] The text format data aren't not be recordered actually after stop and restart worker on 1225

- #### Data management
  - [#35862][DM] The calculation parameter code data source list is not correct if select the descendant-group.
  
## Version: 2.1.6 (2024/01/12)

### Device Management

#### [Update]

* My Device
  * Display device creator's icon in the user column of device list
  * Highlight device row when mouse over device list
  * When device's certificate is revoked, disable certificate download and copy credential in Connect tab.

#### [Fix]

* Multi-Languages
  * Add translation in the dialog when delete device failed

### Data Management

#### [Update]
- #### Core
  - [backend] Update DC_PORTAL_URL env to service name to improve API performance.

#### [Fix]
- #### Core
  - [Archiver] The starting value and ending value within the calculation interval are not correctly judged, resulting in errors in the calculation of the cumulative parameter.
  - [Cleaner] Cannot do the correct reading of total system memory, may cause OOM.
  
- #### Data management
  - [#35894][DPM] The number of parameters should be the same with settings
- #### Command center
  - [#35893][CC] Alarm of calculate parameter won't be triggered at first time.
  - [#35890][CC] Data on the graph panel isn't correct
 

## Version: 2.1.5 (2023/12/29)

### Device Management

#### [Update]

* Batch Create Device
  * Auto refresh batch task result every 10 seconds

#### [Fix]

* Management Portal
  * Fix that user's role can not be updated

* Others
  * [#35859] [DPM] The license quota percentage should be dobule format
  * [#35830] [DPM] Confirm button of SSD Recovery shouldn't be enable when user doesn't enter any command

### Data Management

#### [Update]
- #### Core
  - [DB] Remove dummy collection (d_min)
  - [api-portal] support `upsertParameters` and `upsertMachines` to improve the performance of import-export.
  - [alarm-service] Optimize the retrieval of the 'monthOccur' field in the rt/his API
  - [import-export] support upsert object and parameter
  - [import-export] continue import even import device failed
     
- #### Data management
  - [Portal] UI adjustment for parameters with discrete data type
  - [Portal] Limit the imported file size to 5MB

#### [Fix]
- #### Data management
  - [Plugin] The successful return status was not displayed when changing the plugin's input back to the correct one.
- #### User management
  - [Group user] While creating a new sub-group, it didn't automatically add users and inherit their permissions from ancestor groups.

## Version: 2.1.4 (2023/12/14)

### Device Management

#### [New]

* Add Device License Quota
  * Add device license quota display in left menu
  * Add input of license key activation in left menu

#### [Update]

* Batch Create Device
  * Add retry feature: user could retry to create failed devices in the batch task UI.
  * New API: support JSON format of batch device information

* Create Device API
  * When calling create device API, API will auto append account id if account id is not present.
  * When calling create device API to create SCADA, API will auto create device credential(ex: SAS token in Azure environment) and Node Id if these fields are not present.

* Copy Device Credential
  * Add a checksum field to the clipboard JSON when the user clicks copy device credential.

* Management Portal
  * Add system log query

#### [Fix]

* iBMC
  * [#35294] [DPM] The OK button of iBMC function doesn't have the same name
  * [#35317] [DPM] Some iBMC function are't translate to Mandarin
  * [#35301] [DPM] The iBMC list name are not on the same format
  * [#35399] [DPM] iBMC Functions buttons will be not clickable for a while in certain situation
  * [#35243] [DPM] The boot order is not the same with the BIOS list

* Others
  * [#35229] [DPM] The last event log is missing when device is offline
  * [#34644] [DPM] Hope device batch task can have a retry function
  * [#35362] [DPM] Search device condition will show again when click the next button on the below

### Data Management
#### [New]
- #### Core
  - [APIs] Integrate iFactory services to provide following data APIs
    - lastValue
    - lastBadValue
    - valuesInRange
    - limitToNthValues
    - downSampledInRange
    - badValuesInRange
    - calculatedValue
  - [Parameter] Calculation parameter supports `String` data type
  - [Parameter] Calculation parameter supports using parameter with `String` data type as code data source while configuring `Plugins` as calculation formula.
  
- #### Data management
  - [Portal] Activate license key functionality
  - [Portal] Redeem additional license keys functionality
  - [Data connector][Pivot environment only] Support `iFactoryWorks` connector type
  - [Data connector][Pivot environment only] Remove the following connector types in new environment. (Current environments still have backward compatible with these types)
    - `Edgelink-WebAccessMQTT`
    - `SCADA-WebAccessMQTT`
    - `iFactory Connector`
- 
#### [Update]
- #### Core
  - [DB] drop useless min collections (being modified in v2.1.3)
  - [api-portal] login add 4 error status (Disabled, Inactive, SSO_Login_DISABLED, Password_expired)

- #### Data management
  - [Parameter] Calculation parameter supports setting parameters in descendant groups as code data source.
  - [Alarm group] Support to select parameters in descendant groups 
  - [Forwarding] Support to select parameters in descendant groups as datasource
  - [Parameter] SpanHi / SpanLo limitation
    - Max length = 17
    - Max value of SpanHi / SpanLo = 9,000,000,000,000,000
    - Min value of SpanHi / SpanLo = -9,000,000,000,000,000
    - SpanHi > SpanLo

- #### User management
  - [Group user] While creating a new sub-group, it will automatically add users and inherit their permissions from ancestor groups.
  
- #### Command Center
  - [Alarm panel] add alarm's `duration` field
  
#### [Fix]
- #### Core
  - [#35372][Data archiver] Calculation error while parameter changing its source tag binding.
  - [Data archiver] Unnecessary restore notify in the case of data in offline status back to online status.
  - [#35328][api-portal] Can't get the tag item of general PC when create a new object
  - [#35293][Worker] Data worker doesn't work unexpectedly.
  - [#35230][Evaluator] It will pop up error message when create a calc parameter with math function
  - [#35213][Notification] The notification function doesn't work if triggering 2000 alarm again.
  - [#35167][Notification] Some typos in notification message.
  - [#35159][Evaluator] TimeMatch formula of "everyyear" won't be recorded on some month of end
  - [#34126][Worker] The list of tags are't correct when adding object from device
  - [#34054][General] The name and icon of Data management in version page is not correct.

- #### Data management
  - [#35561][DM] User location requests don't seem to work in the Activation Information page.
  - [#35392][DM] Plugin list can be sorted by name
  - [#35391][DM] calc formula can be sorted by name
  - [#35173][DM] It should pop up warning message when remove alarm user group
  - [#35172][DM] Parameter that create from profile couldn't be selected
  - [#35171][DM] Send test message ambiguous.
  - [#35170][DM] It will show warning when disable the channel setting of email
  - [#35169][DM] The screen will become white when create object with import from device
  - [#35168][DM] The search result is not correct in Event&actions Channel settings page. 
  - [#34481][DM] The recording rate of constant string should be 60 or 0 but not 1   
  - [#33603][DM/DPM] Operability test for the dialog component 

- #### User management
  - [#33806][UM] Some behavior in DM is incorrect if the tenant user is Viewer and sub group is Viewer.
  
- #### Command Center
  - [Datasource] Transformation function error while source value is negative
  - [#34326][UM] Tenant/Group role is Viewer but can operate dashboard panel (Ack/Report alarm)
  
## Version: 2.1.3 (2023/11/10)

### Device Management

#### [Update]

* General-PC module name changes to Computer
  * Module name of General-PC changes to Computer. This naming change doest not affect any device feature.

* iBMC
  * If user changes device boot sequence, system will append selected boot item automatically in the comment

* Device OTA syncs with online status
  * In My Device, the button of Firmware OTA(FOTA) and Configuration OTA(COTA) will be disabled when the device is offline

#### [Fix]

* Device Group
  * If there are multiple pages, list all child groups in the same parent group

* Others
  * [#35047] [DPM] The device group name could be longer for user to key-in

### Data Management
#### [New]
- #### Core
  - [DB] MongoDB collection name modificaiton of recording-rate related collections
    - Create a new collection every day to store new recording-rate data
    - delete old recording-rate data by drop collection to improve DB performance
    - remove unnecessary index
- #### Data management
  - [UI] Display parameter's quota and usage 
- #### User management    
  - [UI][Pivot environment only] Display user's quota and usage while integrating quota information with SI Console
   
#### [Update]
- #### Core
  - [api-portal] thresholdRules id will not be changed after updating the parameter alarm rules
  - [api-portal] support Redis publish of ifp-rule-engine.Event.[id] and ifp-rule-engine.Rule.[id] message
- #### Data management
  - [Portal] Update pop-up message box of successful actions for the following pages:
    - Profile management
    - Command center - Dashboard
    - Command center - Menu
  - [Portal] Update pop-up error message with detail information
    - Group
    - Object
    - Parameter
    - Plugin
- #### Command center
  - [Dashboard] Only the user with `WISE-IoTSuite/Dashboard - Value and alarm` permission of this Tenant can operate ACK action on Ene alarm panel
  - [Dashboard] Support filter of HIS alarm data on Ene alarm panel
  - [Dashboard] Remove `alarm occurrence` as the filter on Ene alarm panel
  
#### [Fix]
- #### Core
  - [Data worker] Memory leak issue of Redis data buffer


## Version: 2.1.2 (2023/10/27)

### Device Management

#### [New]

* Add new iBMC features
  * New features:
    * Get/Set device boot sequence
    * BIOS(Port 80) status
    * Apacer SSD recovery
  * Cool down time between iBMC commands:
    * New features: 2 minutes
    * Original features(Turn on, Turn off, Force Shutdown, Reset): 1 minute
  * These new features are supported from iBMC firmware: A1.01 B18 beta version

#### [Update]

* ADAM module name
  * Change from ADAM-6018 to ADAM-6018P
  * Change from ADAM-6024 to ADAM-6024-D

#### [Fix]

* Others
  * [#34942] [DPM] The formula page of calculation parameter doesn't translate to mandarin

### Data Management
#### [New]
- #### Data management
  - [Portal] New UI design for `Alarm & event` setting in each group

#### [Update]
- #### Core
  - [api-portal] Support checking the Quota of SI Console in the EdgeHub environment.
    - Manually added tenants: Expiration in 3 months.
    - Tenants added via SI Console: Expiration based on SI Console subscription. 
  - [api-portal] After disabling a user and then re-enabling the user, the user's permissions within groups remain unchanged.
  - [api-portal] Add new edition env: `azure-aks-customer` with new data retention policy for customer
  - [Alarm] Only needs to subscribe redis for the tags from ifp-data-hub
- #### Data management
  - [Portal] Update pop-up message box of successful actions for the following pages:
    - Group
    - Object/Parameter
    - Event & actions
    - Data archiving
    - Plugin
    - Forwarding
    - Alarm settings
    - External blob
    - Tenant user
    - Group user
  
#### [Fix]
- #### Core
  - [#33577][Data worker] The EdgeLink device MQTT heartbeat time isn't work
  - [#34126][Data worker] The list of tags are't correct when adding object from device
  - [Data worker] Bad format of array tag data
  - [Alarm] check alarm code alarm with array tag failed
  - [Alarm] RT alarm pagination and sort incorrectly
  - [#35013][DPM] The event log of device isn't sorted by event time
  - [#35034][Evaluator] The calculation parameter value is incorrect with 1s calc frequency
  - [Data packer] process hang when deleting blob data failed
  - [Data packer] GET api with wrong route may cause pivot-api-hub slow down
  - 
   
- #### Data management
  - [#34919][DM] There is no Mail/Wechat notification if alarm is triggered.
  - [#34613][DM] The alarm notification message received is 233 not the upper limit of SMTP and LINE.
  - [#35003][DM] It will pop up a error msg when try to send a test email
  - [#34139][DM] The setting of secrect key should shown as "******"
  
- #### User management
  - [#34930][UM] "UserManagementOnly" role cannot access and manage the group permission page in User Management.
  - [#34918][UM] Dashboard list can't be shown when use command center permission
  - [#34912][UM] Use the permission of command cemter, the group list doesn't be listed
  - [#ww][UM] In-Outbound can be set on Role setting

- #### Command center
  - [#34939][CC] The language of switch graph/ alarm panel will not change immediately untill click the edit setting on below

## Version: 2.1.1 (2023/10/12)

### Device Management

#### [Update]

* Web Page Update
  * Modify header style according to UI design

* Device Management Portal
  * To improve network security, use cookie in JWT format to store user information

* X.509
  * Add the capability to run certification program in WISE-PaaS platform

#### [Fix]

* Web Page
  * [#34906] [DPM] The style of header menu are not the same on DM and DPM
  * [#32333] [UM] DPM should not show User Management item in header dropdown menu
  * [#34928] [DPM] Use csv template to import device will show fail

* X.509
  * [#34916] [DPM] Edgelink device can't connect to EdgeHub due to Cert Revoke API error
  * [#34882] [DPM] Revoke cert regeneration task will not be executed if expired cert regeneration task is executed

* Others
  * [#34940] [DPM] Platform agent login error due to GraphQL API is missing
  * [#31212] [DPM] When IO Configurations in ADAM/WISE are changed, cloud sends only modified MQTT to device
  * [#34941] [DPM] Formula of calcation parameter will be clear when editing
### Data Management

#### [Update]
- #### Core
  - [api-portal] Limit single client login for a user account (This feature is disabled by default).
  - [api-portal] API update
    - (Add) ApiInfo.anyUsernameAuthEnable
  - [Data Packer] Federate APIs to federation server after all DB connections are ready.


#### [Fix]
- #### Core
  - [Data Packer] Startup incompletly while DBMaster not ready
  - [Data Archiver] Wrong calculation for the recording rate data of cumulative parameter while the data upload frequency greater than recording rate.
- #### Data Management
  - [Portal] The search for the object parameter list did not yield the correct page numbers.
  - [#34196][DM] Plug in will continue to send even the related calculation parameter is deleted
- #### Command Center
  - [#34905][CC] Alarm panel doesn't show anything

---
###### tags: `Documentation`

