: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.