---
# System prepended metadata

title: EdgeHub Official Release Note - v2.2

---

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

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

#### [New]
- New add/edit device UI  
- 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  
  - In My Device and Device Group, add the model name filter for EdgeLink firmware OTA files

#### [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.
  - Adjust the width of device list to reduce the display possibility of horizontal scroll bar  
  - Switch the position of the Operation icon and the Construction icon.

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

- 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

- 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 Device Management setting, user can not enter DPM

- Web Page Update
  - Add text of minimum firmware version requirement when creating EdgeLink device  
  - 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"  
  - Modify the style of Add button and search filter in My Device, Device Group and AppHub Repo  
  - 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.  
  - 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  
  - Improve the device list display when the filter of device online/offline is enable
  - Remove the additional loading icon when entering My Device 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  

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

- 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

- Batch create device  
  - Copy the device description to other languages(Traditional Chinese, Simplified Chinese, Japanese) in addition to English.  
  - Increase the speed of the device creation  

- 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.  
  - Upgrade the SDK version of Azure Iot Hub to fix the enable/disable device feature due to Azure Iot Hub upgrades to GWV2  

#### [Fix]
- Others
  - ADAM/WISE IO Configuration: Fix Spelling error(Change from 'AI Alarm Drived' to 'AI Alarm Driven')  
  - [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  
  - [#37443] [DPM] There is no max length when search the device via device name  
  - [#37444] [DPM] There should be no special characters when search device via device name
  - [#37445] [DPM] There should different error message when search device via mac address  
  - [#37793] [DPM] It will show no data when the user wants to add more PC to do schedule  
  - [#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  

- 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  

### 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  
      - Display SIConsole/Subscribed/Manually created tenant in tenant list

    - 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  
      - Change tenant status (enable/disable)  

    - Activate license key
      - Root tenant's direct child tenants can activate license key in this user interface.  
      - New Activation agreement flow UI  

    - Allocate quota
      - Allocate license quota functionality  
      - Allocate license quota in edit tenant functionality.  

    - Retry deduction  

  - [Worker] Dataworker refactor
    - New architecture to support multi-instance dataworker  

#### [Update]

- **Core**
  - [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  
  - [Microservices] 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
  - [api-portal] when parent group name change, then notify all child group
  - [api-portal] Add bound parameter info in tagAdd/tagUpdate mqtt message
  - [api-portal] role name migration, The only special symbols left are " ", "-", "_", and the rest of the special symbols will be replaced by "_"  
  - [api-portal] Default parameters in GroupObject cannot be deleted  
  - [api-portal] update log format  
  - [api-portal] While not select Object type, give default type automatically.  
  - [api-portal] optimize gateways api performance  
  - [Portal backend] Remove onProxyReq,onProxyRes to improve proxy performance  
  - [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
  - [Subscribe service] Set default expiration date of trial tenant as unlimited  
  - [Subscribe service] Get list price of customer from marketplace
  - [Worker] Save isensing no config tag information into mongo  
  - [Worker] Support WISE-PaaS MQTT config format without type definition (in spec v1.0.17)  
  - [Worker] Support traffic limit notification  
  - [Worker] improve etcd register reliability  
  - [Worker] Send worker issue by email/Line/WeCom  
  - [Worker] update log format  
  - [Worker] Support WISE new config format  
    - modbusserver_config
  - [Evaluator] Optimize the performance of normal formula calculation and TotalObjects function  
  - [Evaluator] Performance enhancement (TotalObjects)  
  - [Evaluator] TimeMatch on time trigger  
  - [Evaluator] Improve thread guard function  
  - [Evaluator] improve performance of `getGroupParamSum`, `getGroupAlarmStatus`, `getObjectAlarmStatus` functions  
  - [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
  - [Archiver] Modification to the calculation method for cumulative parameters.  
  - [Archiver] When processing rawdata, the second-level precision is changed to millisecond-level precision.  
  - [Archiver] Support livenessProbe and readinessProbe  
  - [Archiver] update cumulative next data over recording  
  - [Archiver-restore] Modification to the calculation method for cumulative parameters.  
  - [Archiver-restore] When processing rawdata, the second-level precision is changed to millisecond-level precision.  
  - [Archiver-restore] Support livenessProbe and readinessProbe  
  - [Archiver-restore] update cumulative next data over recording  
  - [Packer] Check memory status before any backup job
  - [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.  
  - [Packer] Improving Blob folder path parsing.  
  - [Packer] Optimize logic of deleting blob data  
  - [DBMaster][RESTFul API] Adjust parameter apis to use parameter id as input (replace objId & objParam).  
  - [Import-export] support import with reload data  
  - [Plugin] Use service name as URL rather than full path URL  
  - [User function] Use service name as URL rather than full path URL
  - [Notification] support send system issue mail by amqp topic & API
  - [Alarm] update log format  

- **Data management**
  - [License management] Print agreement  
  - [License management] skip license key to apply free trial  
  - [License management] Add captcha in apply free trial form  
  - [License management] New free trial home page  
  - [Tenant management] Trial tenant can modify quota  
  - [System notification] Add System notification setting in Advanced setting of Root tenant
  - [System notification] Add WeCom setting page  
  - [Portal] If a calculation formula includes Custom function or Plugins, set a minimum limit for the calculation frequency to 60 seconds.
  - [Portal] Update `Timematch` function description  
  - [Portal] Disable Object type field of GroupObject  
  - [Portal] Check device quota at home page
  - [Parameter] Remove -1 and 0 from calculation frequency's valid value. The new range would be 1~3600

- **User management**
  - [User management] Move “Device management” scope’s position
  - [User management] Freeze scope column

- **Command center**
  - [Dashboard datasource] reportGroupInfo function support daily records  
  - [Dashboard datasource] When querying object/parameter list, you need to select at least one group, otherwise it will return empty
  - [Dashboard datasource] Change monthly alarm count column as option by adding an additional markMonthlyCount switch in alarmlog_record function.  
  - [Datasource backend] Add global error processing to prevent crashing
  - [Datasource backend] Modify partial-function check to improve query time

#### [Fix]

- **Core**
  - [api-portal] [#36808][DM] Error occurred if import same object excel file after exporting.
  - [api-portal] [#37238][DM] default value of parameter of group can't be modified  
  - [api-portal] [#37896][DM] EdgeHub will be crash when import the excel without parameters info in it
  - [Evaluator] [#37056][DM] The value of calc parameter will return to 0 when evaluator restart  
  - [Evaluator] [#37413][DM] The trigger of `Timematch` is not correct by TimeZone  
  - [Evaluator] [#37711][DM] Some TimeMatch formula won't be recorded when recording for a while  
  - [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  
  - [Archiver] Wrong handle of maxChangeRatePerMin for Current type parameter.
  - [Archiver] Didn't sync restored day data to Archiver correctly.  
  - [Archiver] RabbitMQ queue data accumulation
  - [Archiver-restore] Incorrect result in Discrete parameter restore
  - [Archiver-restore] [#35892][DM] archiver restore service restart (OOM)
  - [Archiver-restore] Incorrect MarkFirstValue function causes incorrect day data  
  - [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.  
  - [Packer] redundant fields in redis  
  - [Packer] [#37762][DM] Datapacker OOM  
  - [Cleaner] Delete a parameter will also erase the historical data for other parameters within the same object, including recording rate / hour / day data.
  - [DBMaster] The field order for discrete raw data of API response (/data/CalculatedData/query) is wrong (should be "tagvalue", "quality", "datatime")  
  - [DBMaster] Text parameter's logs will display more than 10 records  
  - [Import-export] Handle recRate as millisecond, but it should be second.
  - [Import-export] Descriptor value = empty braces will cause crash  
  - [import-export] if parameter data type is discrete and the descriptor is not fill in, dc-import-export-service will crash
  - [Notification] [#37169][DM] The parameter name with colon(:) cannot be parsed in notification message.  
  - [All backends] Remove write log to Redis for ELK monitoring

- **Data management**
  - [Parameter] [#36494][DM] It will auto create code list when creating calculation parameter with ";" + space  
  - [Parameter] Cannot scroll to bottom of Custom function help dialog  
  - [Parameter] After parameter created, didn't refresh page well

- **Command Center**
  - [Dashboard datasource] [#36319][CC] Alarm status can't be edited on Alarm panel  
  - [Dashboard datasource] [#37724][CC] Use the Ene dashboard switch, select 3 groups but there are only 2 groups be seen
  - [Datasource backend] [#36873][DM] Cannot export alarm report from dashboard alarm panel.  
  - [Datasource backend] [#36343] api-org-wise-mplus pod will crash If more than 5,000 data(dashboard panel) are accessed.  
  - [Datasource backend] Cannot use Table format to display discrete parameter's descriptor.  
