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