Release notes

These release notes for Cumulocity release 2024 include information on all relevant changes, such as new features, improvements, and fixes, that have been implemented in Cumulocity and its integrated applications since the previous release. Moreover the release notes include announcements for deprecations and API changes that might require action on your side at some time.

The following types of change are included:

  • Feature - New features which are generally available.
  • Preview - Features which are in Public Preview and not yet generally available.
  • Improvement - Small improvements.
  • Fixes - Bug fixes.
  • Announcement - Deprecations, removals or important UI changes.
  • API change - Breaking changes in the APIs.

Displaying all changes since the previous release


2024.13

All children now synchronized in immediate data broker structural change forwarding

When a data broker connection synchronizes a structural change that adds multiple child assets or devices to a group, all assets or devices are now sent immediately. Previously, only one asset or device was sent immediately and others were not synchronized until the periodic consistency check next ran. This behaviour is most commonly seen when assigning multiple assets or devices in a Device Management groups page, when the group is within the scope of a data broker connection filter.

Fixed layout issues with data grid group column dropdown

The data grid component had layout issues with the group column dropdown. These have been resolved by adjusting the dropdown scroll height in relation to the bottom footer and adding a shadow to the dropdown for increased contrast between user interface elements.

Support for deprecated content format enabled again in the LWM2M agent

With version 2024.10, support for the deprecated content format TLV with ID 1542 and JSON with ID 1543 was disabled in the LWM2M agent. This has now been enabled again and LWM2M device data coming with this content formats is recognized by default.

Terminate the firmware update process if an unexpected situation is detected

Previously, if a device reported an unexpected status or result during a firmware update, the process simply waited for a valid state. Now, you can configure LWM2M devices to fail the firmware update process when an unexpected situation is detected. For more details see LWM2M configuration.

Correct icon displayed for root groups

Previously, an incorrect device icon was displayed for root groups, which could lead to confusion for users about their current location within the group hierarchy. With this change, the correct icon is now shown, providing a clear visual indication to users that they are at the root level of the group structure.

2024.12

Always return null values for missing measurements in series

Missing measurements are indicated by a null placeholder in the values array of a series endpoint. Previously, if the missing measurements were in the end of the array these null values were left out as part of the response, which could lead to confusion. Now, null values are always present for missing measurements.

Added new option to avoid unnecessary unavailability alarms for LWM2M devices

A new Automatic setting of required interval option has been added to the configuration of LWM2M devices. This setting is configurable so that unavailability alarms will only be triggered when an LWM2M device is truly unavailable, reducing the number of false alarms. For more details see LWM2M configuration.

Improved LWM2M CSV bulk device registration

In previous versions of the LWM2M service, optional registration fields were treated as required if they appeared in the imported CSV file. This issue has now been resolved, and empty values in these fields are correctly ignored.

Info gauges resize properly when the window size changes

Info gauges in dashboards were not resizing correctly when changing the browser window size, leading to a poor user experience. This issue has been fixed and info gauges now properly resize to fit the available space when the browser window is resized. This change improves the usability and appearance of dashboards containing info gauges for all users.

2024.11

Improved information on time filtering in Audit logs page

In the Audit logs page, time information is provided in the “Times” column on the left (server time) and inside the audit log card (device time). The information popup has been improved, to make users aware that audit logs cards are filtered by device time which can be different from the server time.

Fixed special characters encoding in OPC UA device types

Previously, when creating an OPC UA device type with special characters in any of the fields, the gateway was not reading it correctly which caused an error while creating mappings. This issue is now fixed, the gateway encodes and decodes special characters as expected.

Improved reliability of real-time operation notifications for LWM2M service

In certain cases, real-time connections for the operation notifications could be disrupted due to error-handling issues within the LWM2M service. This issue has now been resolved.

Updated LWM2M bulk registration templates

The wizard for bulk registering LWM2M devices to Cumulocity provides default bulk registration templates. These templates have been updated to reflect new properties including the X.509 security mode.

2024.10

Data broker operations delivery improvements

Data broker operations created on the destination tenant were not reliably forwarded to the source tenant during network interruptions. With this change, a robust retry mechanism has been introduced that ensures operations are delivered reliably, regardless of network stability. Users can now expect consistent data synchronization and improved reliability in data broker operations.

lastUpdated fragment of a group is updated correctly when a device is added upon registration

Each device registration request includes information on the group that the device will be assigned to once the registration is successful. Previously, the group’s “lastUpdated” fragment was not updated correctly. With this change, the “lastUpdated” fragment is updated to show the current date when the new device has been added successfully.

Tenant API security improvement

The security for the credential options in the Tenant API has been improved.

Allowing LWM2M device to send empty payload without content-type data

The LWM2M specification allows devices to send an empty payload when there is no data to report. In case of an empty payload, no content-type is required. Previously, LWM2M agents would reject messages with an empty payload and no content-type. Now, these messages will be accepted and processed as intended.

LWM2M agent skips null entries in supported content format reported by LWM2M devices

The LwM2M agent previously didn’t process requests when a faulty device sent a supported content format list containing null values. This issue has now been resolved - the agent skips the null values and continues with the device communication.

LWM2M location data handling has been improved

In earlier LWM2M agent versions, device location updates occurred only when the device provided complete location object data. Now, updates happen whenever both latitude and longitude resources are reported together.

Resolved issue with double LWM2M bulk registration execution

When uploading the LWM2M bulk registration file, there was a potential issue where the registration could be processed twice, causing the second attempt to fail and revert to PENDING, leading to repeated retries. This issue has now been resolved, ensuring that each operation is executed only once. In the event of a failure, the operation will no longer be retried.

Info gauge widget now supports device type dashboards

Previously, the info gauge widget did not support device type dashboards, limiting its usability for users who rely on these dashboards. With this change, the info gauge widget has been updated to fully support device type dashboards. This enhancement allows users to effectively utilize the info gauge widget within their device type dashboard setups, providing them with a more comprehensive and flexible monitoring experience.

Public option translations now have higher priority than translations from plugin PO files

Previously, translations from plugin PO files (file format used for UI translations) took precedence over translations added via public options, which could lead to inconsistencies. With this change, translations added via public options will now have a higher priority than translations from plugin PO files. Existing translations in plugin PO files that conflict with public option translations will be overridden. This ensures a consistent and predictable translation behavior.

Replaced group creation dialog in widgets with redirect to Groups page

The AngularJS-based dialog for creating a new group from a widget has been replaced. Instead of this dialog, when users want to add a new group from a widget, they will now be redirected to the Groups page where the Add group dialog is shown.

Service-level agreement for Platforms

The Service-level agreement for Platforms now provides a more precise definition on how Cumulocity manages the Cumulocity platform service for your tenants and what might be possible limitations and responsibilities that you should be aware of.

2024.9

Number of tokens generated in the JSON body is now limited

To enhance the OAI-Secure token management, the number of tokens generated in the JSON body will be limited to the maximum configured in the session configuration.

Added documentation for REST-based LWM2M device registration

In the user documentation, information has been added on how to register and delete LWM2M devices using the REST API, see Registering LWM2M devices.

Composite Write transmits data to the device in the specified order

The Composite Write (cwrite) operation transmits resource-values data to the device in the exact order specified in the operation. For details, see Handling LWM2M shell commands.

Disabling automatic setting of required interval of LWM2M agent

The LWM2M agent automatically manages the required interval of a LWM2M device based on the LWM2M registration lifetime. It is now possible to disable this behavior globally or for specific devices which results in a standard Cumulocity connection monitoring as described in Monitoring and controlling devices.

Improved LWM2M decoder event execution

The synchronization mechanism has been improved to prevent the LWM2M agent from processing duplicate external decoder events.

LWM2M agent uses preferred content type requested by the device during a LWM2M bootstrap session

The LWM2M agent used to ignore the preferred content type requested by the device during a LWM2M bootstrap session. This issue has been fixed and the LWM2M agent now uses the requested content type if it is provided by the device.

OPC UA gateway no longer fails to start on ARM64 Docker images

The OPC UA gateway incorporated certain dependency libraries that encountered linkage issues with the native operating system libraries within ARM64 Docker images. Consequently, executing the OPC UA gateway in ARM64-based Docker containers was problematic. This issue has been successfully resolved, facilitating the smooth build and execution of the OPC UA gateway on ARM64 Docker images.

OPC UA gateway no longer fails when attempting to call a missing 64-bit system function

In certain ARM64-based environments, the OPC UA gateway may have failed when attempting to call a specific 64-bit system function that might be missing in some base Docker images. This issue has now been resolved. If this function is missing, the service will attempt to call a default system function instead.

Optimization of storage management for OPC UA gateway

The OPC UA gateway creates a local database cumulocity-opcua-gateway.db to store essential data, including a list of executed operation IDs. As this list expands, the database file consumes more disk space. This issue has been resolved by introducing an in-memory cache to store executed operation IDs with each entry set to auto-expire after 24 hours. The fix also includes a one-time cleanup process during the gateway startup to reduce the size of the existing file.

Replaced deprecated library to improve LWM2M agent security

To improve security, the deprecated Swagger/OpenAPI library used by the LWM2M agent has been replaced by a new supported library.

Changing the unit in a data point template is now correctly reflected in related "Info gauge" widgets

In the past, when changing the unit of a data point template, the change was not reflected in the “Info gauge” widgets which were using this data point. This inconsistent behavior has now been fixed. Now, whenever the unit is updated in a data point template, this change will also be immediately visible in the respective “Info gauge” widgets.

Dashboards can only be deleted by users with appropriate permissions

Previously, users could delete dashboards without having the required permissions. This issue has been fixed. Now the Delete button is only enabled for users with the appropriate permissions, accurately reflecting the access rights.

2024.8

Fixed performance regression for count queries and inventory roles

The Cumulocity platform faced performance regression which could only be observed on a higher number of concurrent requests using inventory role-based access control or on performing counts via query parameters like withTotalPages or withTotalElements. This issue has been fixed and the performance has returned to normal.

Configuration repository now correctly saves the configuration type

In the configuration repository, the configuration type was not saved correctly when adding a new configuration snapshot, leading to unexpected behavior. With this change, the configuration type is now properly persisted when saving the configuration snapshot.

Block device search when creating or editing private smart rules

In the past, it was possible to search for devices when creating or editing private smart rules, which could potentially lead to incorrect device assignments. With this change, searching for devices is now blocked when creating or editing private smart rules. This ensures that only explicitly selected devices are assigned to the smart rule, preventing unintended device assignments and improving the accuracy and reliability of private smart rules in the platform.

New widgets render properly when scroll is enabled

In some cases, new widgets were not properly rendering when scrolling was enabled on a page. This issue has been resolved and widgets now consistently render as expected when scroll is turned on.

2024.7

LWM2M firmware update via PULL HTTP(s) method works in a clustered agent environment

The issue with LWM2M firmware updates via the PULL HTTP(s) method in a clustered agent environment has been resolved. Previous version used to have a data serialization problem that prevented HTTP(s) endpoint to start and blocked the update process.

Restricted paste action when user attempts to paste device dashboards into groups or group dashboards into devices

Previously users were able to copy a device dashboard and paste it into a group (or copy a group dashboard and paste it into a device), which resulted in an error. To prevent this, pasting between device and group dashboards is now restricted and users will see an info message when attempting that.

2024.6

LWM2M agent memory improvement for external decoder events processing

The memory usage for processing external decoder events in the LWM2M agent has been improved.

LWM2M agent security improvement to ignore packets from certain source ports

To improve security, the LWM2M agent can now ignore packets from predefined source ports.

LWM2M firmware images are hosted via HTTP by All LWM2M agents in the cluster

In earlier versions of the LWM2M agent, only a single agent within the cluster was responsible for hosting the firmware image via an HTTP endpoint. This setup could occasionally lead to 401 responses when devices attempted to download the firmware. With the latest update, all agents in the cluster are synchronized and now host the same set of firmware images, ensuring seamless and reliable firmware downloads.

Avoid colliding Leaflet versions by adding noConflict

In some scenarios, different versions of the Leaflet library used by Cumulocity and custom widgets could collide and lead to unexpected behavior or errors. To address this, the noConflict mode has been added to Cumulocity’s Leaflet integration. With this change, custom widgets can now use their own Leaflet version without interfering with Cumulocity’s Leaflet version. This improves the reliability and compatibility when using Leaflet in custom widgets alongside Cumulocity’s built-in geospatial features.

Branding editor works reliably again

In some cases, the Branding editor in the Cumulocity platform was not working as expected and users experienced problems when trying to edit the branding. This issue has now been resolved and users can reliably use the Branding editor again to customize the look and feel of their Cumulocity experience.

Hide navigator option now works in the Cockpit application

The Cockpit application did not properly support the hideNavigator configuration option which allows hiding the navigator menu on the left side. This issue has been fixed so that setting hideNavigator to true in the app descriptor now properly hides the navigator menu in the Cockpit application as expected. This change improves the consistency of the hideNavigator option across different applications.

2024.5

Audit logs for repeating alarms are created with the date of the last alarm update

Audit logs for repeating alarms used the alarm creation date which resulted in audit logs having past dates. This issue has been fixed and now audit logs for repeating alarms are created with the date of the last alarm update.

SmartREST template collection parsing no longer fails with response template

Device simulators configured to use a SmartREST template collection containing response templates had an internal issue that prevented data creation. This issue has been addressed by correctly parsing response templates so that processing is no longer interrupted.

2024.4
2024.3

Confirmation message on logging out all users now translated correctly

In the Administration application, a confirmation modal appears when an administrator attempts to log out all users. Previously, the body text in this modal was not properly translated and always appeared in English, regardless of the user’s language settings. With this change, the body text in the confirmation modal is now correctly translated based on the user’s selected language.

Fixed critical security issue

This fix addresses a critical security issue that whilst has the ability to impact the integrity of Cumulocity, is random in nature and is therefore not targetable.

Standard application descriptions now properly translated

In the context of localizing the Cumulocity platform for different languages, it was discovered that the standard application descriptions were not being translated as expected. This change ensures that the standard application descriptions are now properly translated based on the selected platform language.

Added missing German translation in success message for bulk device upload

The success message displayed after uploading devices in bulk was not properly translated to German. This issue has been resolved and the success message now correctly appears in German for users with that language selected.

LWM2M agent bulk registration no longer fails when using an Excel-generated CSV file

When an Excel-generated CSV file was submitted to the LWM2M bulk device registration, the process failed due to the inability to parse the UTF-8 with a BOM marker present at the beginning of the file. This issue has been addressed, and the LWM2M bulk device registration system now successfully accepts CSV files encoded in UTF-8 with BOM format.

LWM2M agent now always stores data from multi-instance resources correctly

When device sends values from multi-instance resources (via read, composite read, observe or composite observe), the agent has to decide whether it should overwrite the previous data set or update it (e.g. by adding new values to an existing array). In the previous versions there were some edge cases where the decision taken by the agent was not correct. This problem is now fixed.

Software list in Device data widget now paginated to show all entries properly

In the “Device data” widget, the software list was not displayed correctly if it contained a large number of entries. This issue has now been resolved by paginating the software list, that is, limiting the initial list to 10 items and an option to load more if needed.

Canceling the dialog on reaching the maximum number of archives no longer displays an error message

In the past, when a user reached the maximum number of archives and the corresponding dialog was shown, canceling the dialog would incorrectly display an error message. This has been fixed. Now, when a user cancels the maximum number of archives dialog, no error message is shown any longer and the application behaves as expected.

Smart rules list now always shows the children column properly if child assets are assigned to a managed object

In the smart rules list of a group or a device, the children column, which shows for which child assets the smart rule is active, did not always show up properly. This issue has been fixed and the children column is now always displayed if the smart rule is activated for a child asset.

2024.2

Fixed typo in Single sign-on page

In the Single sign-on page, a typo has been fixed (AIM -> IAM). IAM stands for Identity and Access Management.

Provided translations for default roles labels

The labels for the following default roles are now translated. Global roles: “admins”, “business”, “devices”. Inventory roles: “Manager”.

Building microservice container images with Docker 25

Cumulocity allows you to extend the platform API with customer-specific functionality by deploying microservices. Technically, microservices are Docker containers hosted by Cumulocity and they follow specific conventions. When building the microservice container image with Docker version 25 it could happen that the microservice upload failed with the following error: config file does not .json extension. This issue is now fixed.

Data points graph realtime is kept enabled when the browser tab is in background

The realtime functionality for the data points graph was automatically disabled when the browser tab was in the background. With this fix, realtime is kept enabled and can be disabled only by direct user interaction.

2024.1

2024 release of Cumulocity Edge Appliance VM identical to 10.18 release

The Cumulocity Edge Appliance VM version of the 2024 release is identical to the version of the 10.18 release. For details on the release see the 10.18 release notes. You can find the documentation for Cumulocity Edge Appliance VM at https://cumulocity.com/docs/2024/edge/edge-introduction/.

2024 release of Cumulocity Edge on Kubernetes identical to 10.18 release

The Cumulocity Edge on Kubernetes version of the 2024 release is identical to the version of the 10.18 release. For details on the release see the 10.18 release notes. You can find the documentation for Cumulocity Edge on Kubernetes at https://cumulocity.com/docs/2024/edge-kubernetes/k8-edge-introduction/.

Device count details for usage statistics documented

Details about the algorithms counting root devices, all devices, and leaf devices have been added to the user documentation, see Usage statistics and billing.

Direct sub-users count indicator added in Users page

In the Users page, the direct sub-users count indicator for a user was missing. This indicator has now been added to provide visibility of the number of direct sub-users for each user.

New plugin versions are no longer automatically marked as latest

In the past, when a new version of a plugin was uploaded, it was automatically marked as the latest version. This could lead to confusion if an older version of the plugin was intended to be used as the latest one. With this change, new plugin versions are no longer automatically marked as latest when they are uploaded. This gives users more control to explicitly decide which version of a plugin should be marked as the latest one. Existing plugins and their latest version marking are not impacted by this change.

Permissions for SSO users no longer lost when upgrading the platform from version 10.17

After a platform upgrade from version 10.17 to a later version an issue occurred that the permissions for some SSO users got lost. This issue has been fixed and updating the platform version does no longer affect user permissions.

Calendar in dropdown is no longer being cut off

Previously, the calendar dropdown in forms could sometimes be partially hidden or cut off, making it difficult for users to select dates. This issue has been resolved by appending the calendar dropdown to the document body instead of the form. Users will now see the full calendar dropdown when selecting dates in forms, allowing them to easily choose the desired date without any visual obstructions.

Installed software packages are no longer emptied after restart of the Advanced software management microservice

An old data model migration mechanism was erroneously removing installed software information from devices when the Advanced software management microservice was resubscribed or restarted. We have removed this mechanism entirely so that existing data is no longer modified.

Object mapping actions no longer executed multiple times on LWM2M 1.1 send request

When a LWM2M 1.1 send request that includes multiple timestamps has been received, the object resource mapping actions have in some cases been processed multiple times by the LWM2M agent. This issue has been resolved to ensure that mapping actions get only triggered once.

Software items are now properly shown in the Device data widget

The properties library schema definition for the c8y_SoftwareList fragment did not match the actual managed object properties. Hence, when the “Software” property was selected in the “Device data” widget no data was shown. The property is now called “Software list” and displays all software items contained in the c8y_SoftwareList fragment.

Dashboard availability selection is hidden for users who do not have the required permission

Previously, the dashboard availability selection was always visible for users, even if they did not have the permission to see it. With this change, the dashboard availability selection is hidden for users who do not have the required permission. Users must have User Management READ permission to see and modify the availability property of a dashboard.

Group navigation tree in navigator now refreshes correctly after removing groups via subassets view

In the Cumulocity user interface, the navigator did not always update correctly after removing a group or device via the subassets view. This caused the navigator to still show the removed groups or devices and made the UI inconsistent. With this fix, the navigator now correctly refreshes after a group or device has been removed through the subassets view, ensuring the user interface stays in sync and provides an accurate view of the current inventory.

Label display in the "Info gauge" widget has been improved

Labels in the “Info gauge” widget have been improved. Previously, labels with lengthy names encountered display issues. Now, adjustments have been made to ensure clearer and more accurate label representation.

List group dropdown accessibility has been improved

The list group actions dropdown was missing proper focus handling, which could cause accessibility and usability issues for keyboard and screen reader users. With this change, a traped-focus is now applied to the dropdown, ensuring that the focus is properly trapped within the dropdown while it is open. This improves the user experience for keyboard and screen reader users by making it easier to navigate and interact with the dropdown without accidentally leaving it.

Package version upload limit via UI increased to match the default

The number of package versions that could be uploaded via the UI was incorrectly limited to 6. This has been fixed to match the default limit of 20 package versions.

Improved runtime performance of Analytics Builder

The runtime performance of Analytics Builder has been improved when large objects are ingested.

More efficient implementation of the /prometheus endpoint in the Streaming Analytics microservices

The implementation of the /prometheus endpoint has been optimized by removing redundant calls to other internal endpoints.

LWM2M device operations directly go to Pending state

Previously, the execution of LWM2M device operations was limited to a specific timeframe following the device’s registration with the platform. However, this timeframe remained static even after the device underwent registration updates, despite the previous operational window not yet expiring. This limitation has now been addressed, ensuring that each LWM2M device registration update extends the device operations timeframe.

2024.0

Fixed counter of total files

In the files repository, an issue has been fixed where the counter of the total files number displayed an incorrect value or was not displayed at all.

Filtered out redundant activity log entries

Redundant activity log entries in the application details are now filtered out.

Fixed redundant audit log entries creation

Updating a custom alarm property no longer creates a redundant audit log entry with misleading information about alarm clearance.

Fixed issue with names of downloaded files

Fixed an issue with the names of the files downloaded from the platform (for example, from the file repository or from event attachments). UTF-8 characters, for example, in the Japanese localization are no longer missing if the file name includes special characters like “+”.

Users with inventory roles can add new groups

Fixed an issue where users which only have inventory roles could not add new groups.

Fixed issues with the Ericsson DCP SMS provider

Issues with the Ericsson DCP SMS provider when attempting to send an SMS have been resolved and outgoing requests are sent as expected to the Ericsson DCP API.

Fixed undelegate action button

The undelegate action button in the user details was not working. This has been fixed by re-enabling its functionality.

Pagination on the Inventory roles tab

Implemented pagination on the Inventory roles tab in the user details to fix an issue with larger numbers of groups and subgroups.

Missing translations added

In the Administration application, missing translations have been added in the SIM provider settings tab in the Connectivity page.

Progress bar for uploading files

When uploading files to the files repository, a separate progress bar is now displayed for each file.

Fixed issue in address space scan operation

In OPC UA device gateway nodes, expected but missing information prevented the completion of the address space scan operation. This is now fixed by skipping these nodes and adding an error message in the opcua-device-gateway log files. Additionally, the overall scanning speed has been improved for the full and partial address space scan operations.

Reliable processing of OPC UA device protocols exceeding 1000 items

The application of OPC UA device protocols was unreliable when there were more than 1000 protocols. This is now fixed.

Fixed default global rules issue

Fixed an issue with cloning some of the default global roles (for example, “devices”).

User administrator can no longer set password for other users

As announced earlier, see the release notes for release 10.17, to improve security, from a future version, user administrators will no longer be able to explicitly set passwords or email addresses for other users in the tenant. This change prevents that an attacker could have access to all users, in case the administrator account was compromised. Note that the administrator will still have the option to force the user to reset the password on the next login or disable the user.

LWM2M proper convertion of timestamps

The LWM2M agent can now properly convert the timestamps from the SenML data reported by the LWM2M client to a platform compatible date-time format for performing respective resource actions.

LWM2M post-operations executed after new registration

Multi-line LWM2M post-operations were not executed right after the LWM2M device’s new registration when realtime was disabled for the tenant who owns the device. As a result the device might not receive these operations until the next LWM2M device’s registration update. This issue is now resolved and LWM2M post-operations are executed right after the LWM2M device’s new registration, no matter whether realtime is enabled or not for this kind of devices.

Update of 3-party protobuf-java

In order to address security vulnerabilities (CVE-2022-3509, CVE-2022-3510, CVE-2022-3171), the third-party software “protobuf-java” has been updated from version 3.19.2 to version 3.19.6.

Improved performance of the Inventory API

The performance of the Inventory API GET /managedObjects has been improved.

LWM2M agent ignores trailing commas

The LWM2M agent now ignores trailing commas at the end of object links in the registration request of a LWM2M client.

Improved performance of GET requests on /user/users

The performance of GET requests on the /user/users endpoint has been improved.

Search for fields with null values now possible

The query language used by the managed objects API has been improved. You can now search for fields with null values. MTM-52677

Fixed issues with LWM2M Send request and LWM2M registration association

In certain cases, the registration couldn’t be associated with a LWM2M 1.1 SEND request, leading to a 4.04 CoAP response. This is now fixed.

Alarm status and severity now case-insensitive

The alarm status and severity are now case-insensitive. When searching by alarm status active the API also returns alarms with status ACTIVE. The same applies for the alarm severity, that is, searching for critical alarms also returns CRITICAL alarms. Alarms with status active and acknowledged are now subject of alarm deduplication.

Apama correlator version

This version of Cumulocity Streaming Analytics includes the Apama version 10.15.4 correlator. EPL apps developers should also refer to What’s New In Apama 10.15.4 in the Apama documentation.

Extended ExplainQuery result

The ExplainQuery result info has been extended by the algorithm used when performing queries for a user with inventory roles:

GET {{url}}/inventory/hierarchy/info/management

Example: {“algorithm”: “Legacy” }

Possible results: Legacy, LimitedSourcesAcl, PostFilteringBySourceAcl, SingleSourceAcl, HierarchyAcl, SingleAgentAcl, SingleDeviceAcl, SingleAgentAndDeviceAcl.

Log files of devices can now be downloaded

In some cases log files of devices stored in the platform could not be downloaded from the Logs tab. This has been addressed by requesting with the correct user credentials.

Fixed status of LWM2M bulk device registrations

Bulk device registrations and other operations being executed on the LWM2M connector device now show the status FAILED if a problem occurs. Prior to this change, partial failures were reported as SUCCESSFUL.

Basic diagnostics information

The EPL memory profiler snapshots, which were previously only included in the enhanced diagnostics information, are now also included in the basic diagnostics information. This is helpful in case a high memory usage alarm is raised when the Apama-ctrl microservice consumes 90% of the maximum memory permitted for the microservice container and you only have basic diagnostics information available. See also Downloading diagnostics and logs in the user documentation.

Modified pagination check of the user list

The pagination check of the user list has been modified to prevent duplicate requests.

Renamed commands for downloading analytic models and EPL apps

The commands for downloading analytic models and EPL apps have been renamed from Export to Download. See also Downloading a model and Developing apps with the Streaming Analytics application.

New EPL sample

A new EPL sample named “Receive update notifications” can now be accessed from the EPL editor of the Streaming Analytics application. It shows how to write an EPL app that can distinguish between notifications for creating and updating managed objects, measurements, alarms, events, and operations. See also Developing apps with the Streaming Analytics application in the user documentation.

For more detailed information, see Receiving update notifications in the Apama documentation for the Cumulocity transport connectivity plug-in.

Improved the performance of the user hierarchy management

Improved the performance of the user hierarchy management by reducing the number of server requests executed when expanding the sub-user list.

Latest measurement values can be stored as part of a device managed object

Feature preview
This feature is in Public Preview, that is, it is not enabled by default and maybe subject to change in the future.

Support of automated persistence of measurement values under the c8y_LatestMeasurements fragment has been introduced. If a measurement is created with a series that matches the configuration the device managed object is updated with the last series sent to the platform.

For details on how this feature is enabled and how it works, refer to the openapi.

Receive input from all input sources

The Analytics Builder input blocks can now be configured to receive inputs from all input sources. You can simplify global tasks by creating a single Analytics Builder model that works with inputs from all input sources, for example, send an email for every critical alarm of type C8Y_TemperatureAlarm that is generated, regardless of the device that generated the alarm. A new All Inputs option is available for this purpose. When you add a new block to your model or when you edit the parameters of a new template instance, the All Inputs option is now set by default. See also Editing the parameters of a block in the user documentation.

You can also use the new All Inputs option in the replace dialog box when replacing input sources. Keep in mind that the replace dialog box is used for both input blocks and output blocks. So when you replace a device with the new All Inputs option, all matching output devices are automatically changed to trigger devices. See also Replacing sources or destinations in the user documentation.

A new Analytics Builder sample named “Aggregate measurements per input source” is now available, which creates new measurements that average the measurement values for each input source that has a specified fragment and series. This is a simple sample that creates a model without template parameters, so you can activate the model directly in the model manager. See also The Samples tab in the user documentation.

Planned change in full text search feature of Inventory API

As of a future version, the full text search functionality will only include the following properties:

  • _id
  • name
  • type
  • owner
  • external id

A text search functionality corresponds to a text parameter of GET {url}/inventory/managedObjects.

Example: When executing the following query: GET {url}/inventory/managedObjects?text=c8y_MajorDevice only the properties idnametypeowner and external id will be examined.

This change improves the user experience of the text search functionality by returning more relevant managed objects. At the same time it improves the Inventory API performance.

This change will be implemented after a 3-month period at the earliest.

Improved handling of LWM2M device content format

For operation execution the LWM2M agent now selects the content format based on the set of content formats supported by the device.

Additional value types for the Constant Value block

The Constant Value block in Analytics Builder now supports float and boolean value types and can produce output of these types. This enables the block’s output to be consumed by other blocks that take input of type float or boolean like the blocks in the Logic and Aggregate categories. The Type parameter is also now optional. If a type is not selected, the type of the output value is inferred from the Value parameter.

Fixed issue with unpacking versioned applications

Resolved the issue that versioned applications might not be unpacked upon core startup, which resulted in a 404 error for some requests.

Removing template parameters

In Analytics Builder, an icon is now provided for removing a template parameter from the Template Parameter dialog box. The actions menu (the three vertical dots at the end of a row) has therefore been removed. See also Managing template parameters in the user documentation.

LWM2M agent persists all registration update parameters

The LWM2M agent now correctly persists all registration update parameters. Previously, the LWM2M agent did not store changes of registration parameters, for example, updated registration lifetimes. This is now fixed.

New text index

A new text index has been introduced for the GET /inventory/managedObjects endpoint. By default it only includes the following fields:

_idtypenameownerexternalIds

Selection lists for template parameters

You can now create a selection list for an Analytics Builder template parameter. This allows the model author to provide a predefined list of values for the user to select from, ensuring that the user only enters the values you allow. You can define selection lists for types such as string, float, source or destination, or geofence and you can also select a specific value to be the default value. The values that you define for a selection list are then available for selection when you create instances of the model. See also Adding a selection list for a template parameter in the user documentation.

Missing subassets in a device group or asset hierarchy

Previously, when reactivating an Analytics Builder model, an error was thrown if a subasset of a device group or asset hierarchy from which the model receives events no longer existed in the inventory, for example, because a device was deleted. As of this version, missing subassets in a device group or asset hierarchy are ignored and an error is no longer thrown. However, if the deletion of a subasset results in an empty device group or asset hierarchy, an error is still thrown.

Removal of Machine Learning

As announced with release 10.16, the Machine Learning block in Analytics Builder has been removed. This is in line with the deprecation of Machine Learning Engine announced in release 10.16.

New sorting of Inventory API queries

If users do a search from the UI or via the Inventory API, the text parameters are now sorted by relevance making it easier to see the more appropriate data returned.

Cumulocity transport in Apama 10.15.4

The Alarm and Operation events have new constants which define the valid values for their respective status and severity members. This allows more robust coding and eliminates runtime errors caused by typographical errors with literal strings.

External token validation in single sign-on configuration

In the single sign-on configuration page, users can now enable and configure the external token validation process.

Fixed issue with Save button in access mapping section

If data has been changed in the access mapping section, such as default global roles or default applications, the Save button is now activated.

Enhanced Cumulocity transport in Apama 10.15.4 to reflect changes in REST API

Due to a change in Cumulocity announced with release 10.17, Apama 10.15.4 now explicitly sets withTotalPages to true for applicable requests.

Range-based queries (such as FindManagedObject) attempt to retrieve all resources matching the query parameters by default. Explicitly setting a value for currentPage or setting withTotalPages to false can improve the query performance by disabling paging. See the information on REST usage and query result paging in the openapi for more information.

HTTP client in Apama 10.15.4 supports truncating responses

The HTTP client comes with two new configurable options, maxResponseKB and maxResponsePolicy, that enable the user to restrict the size of the server response. These options can be set for the entire transport, or on individual requests. Support has also been added to the predefined event definitions (see Using predefined generic event definitions to invoke HTTP services with JSON and string payloads in the Apama documentation). This enables you to prevent large server responses from causing out-of-memory issues.

Fixed issue with LWM2M queueMode property

The queueMode property of LWM2M registrations is now persisted correctly for the LWM2M registration updates.

Enhanced OpenSSL command

The OpenSSL command for generating a “signed verification code” for Proof of Possession has been enhanced to include additional encoding functionality.

Copy of web applications with versions

It is now possible to copy web applications with versions (packages) and web applications with SHARED availability. For applications with versions, by default the application with the “latest” tag is copied. The new application has a single version and no tags. If you want to copy different versions of an application, you can specify the query parameters “tag” or “version” (only a single version). For details, refer to the openapi.

LWM2M agent processes and stores object instances correctly

When reading an entire LWM2M object which contains multiple object instances in a simple read, observer or send operation, the LWM2M agent processed and stored only one of the resources of these object instances. This is now resolved and the LWM2M agent processes and stores all resource data from multiple object instances correctly.

Version matrix for packages

The repository-connect microservice now offers to sync packages that include a versioning matrix which allows to filter exactly the versions to be synced. Versions which are not included in the matrix but uploaded to the platform will be removed by the microservice.

Improved password validation for subtenants

When setting the password for the admin user on creating a subtenant, the password validation is based on the selected tenant policy. An exception to this case is if strong password usage is enforced on system level. When setting a password for the admin user on an existing subtenant, the password validation is based on the security settings for the current tenant.

LWM2M agent to serve large parallel connections

During a large number of parallel LWM2M DTLS device connection requests, used for devices using PSK secured mode, the LWM2M agent was not able to handle all connections at the same time. This caused platform connection failures for the devices. In the LWM2M agent, the default settings for this part have been adjusted and made configurable to serve large parallel connections.

New filter option

Searching for items has been improved by filtering on applications, features, microservices and extensions lists.

EPL enhancements in Apama 10.15.4

String concatenation operator + supports non-string operands

If only one operand expression is of type string, then string conversion is now performed on the other operand to produce a string at runtime. For more details, see Additive operators in the Apama documentation.

New built-in convenience methods on string, sequence and dictionary

The EPL language has been enhanced with some convenience methods for common operations such as checking if a string or sequence contains a specified substring or item, and determining if a string, sequence or dictionary is empty.

There is a method to get a sequence value with a fallback default if there is no value at the specified index:

mySequence.getOr(100, "default value");

There is also a powerful regular expression group search for strings that finds the first match and returns the text captured by each “(…)” group of the regular expression:

// Prints ["Bob", "Eve"]
 print "Today Bob met Eve".groupSearch("([a-zA-Z]) met ([a-zA-Z])").toString();

The following table lists all new methods:

New method Description
string.contains(), sequence.contains() Determines whether the string or sequence contains the specified substring or item. This is a convenient alternative to checking the find() or indexOf() integer value.
string.groupSearch() Finds the first regular expression match in this string, and returns a list of the matched “(…)” groups.
string.startsWith(), string.endsWith() Determines whether the string has the specified prefix or suffix.
string.rfind() Locates a string within this string, starting from the right (that is, from the end) of the string.
string.substringFrom() Extracts part of this string, starting at a specified character and ending at the end of the string.
string.quote() Adds quotation marks and escaping according to the standard EPL event representation. This method may be useful for logging strings that may contain spaces and newline characters. This is the reverse of the existing string.parse() method.
string.isEmpty() Determines whether the string has a length of zero characters.
dictionary.isEmpty(), sequence.isEmpty() Determines whether the size is 0.
any.isEmpty(), optional.isEmpty(), listener.isEmpty(), Channel.isEmpty(), chunk.isEmpty() Aliases for the existing empty() methods on these types. It is recommended to use the new isEmpty() methods, but the use of empty() is not deprecated.
sequence.getOr() Gets the value at the specified index, or a specified fallback value if the index is not valid.

For more information, see the API Reference for EPL (ApamaDoc).

Support for negative indexes for sequence[…] access

Instead of throwing an out of bounds exception, it is now possible to refer to items near the end of a sequence by specifying a negative index. For example, seq[-1] gives the last item in the sequence and seq[-2] gives the item before that. Negative sequence indexes can also be used in the sequence.remove() and sequence.insert() methods.

Note that negative values cannot be specified when accessing a sequence item using the any.getEntry() method.

Mixed-type sequence and dictionary literals are now treated as <any> by default

It is no longer necessary to add an <any> cast around the first item in a sequence or dictionary literal that contains a mixture of different types. For example, the following sequence literal which produces a sequence<any>:

[<any> 12345, "a string"]

can now be written more simply as

[12345, "a string"]

This simplifies the functional example given in EPL enhancements in 10.15.3 in the Apama documentation: the <any> is no longer needed in the setFields call.

Discarding of unused return values

In EPL, it is now possible to discard the return value of a function or expression and not assign it to a variable. This is useful if you only want the side effects of the function and do not need the return value. Be careful not to discard a return value that indicates important conditions that your program may need to use.

Previously, you had to write:

any _ := Functional(newAlarms).map(Fn.getEntry("alarm")).map(allAlarms.append);

But now you can write:

Functional(newAlarms).map(Fn.getEntry("alarm")).map(allAlarms.append);

See also Using an expression as a statement in the Apama documentation.

Functional operators

The com.apama.functional.Fn and com.apama.functional.Functional events now have a new method mapKeys which can return a dictionary container with modified keys. For more details, see Functional operators in the Apama documentation and the API Reference for EPL (ApamaDoc).

Functional listeners

The functional onTimeout action now returns the wait listener it creates so that it can be quit if needed. For more details, see Functional listeners in the Apama documentation.

Handling uncaught exceptions

EPL monitors are no longer terminated by default when an uncaught exception is thrown in some cases.

Programming errors and unexpected data in incoming events can cause an uncaught exception in EPL. This causes the monitor instance to be terminated, rendering the application unusable. To provide a better experience, exceptions thrown from listeners and stream listeners which are not caught no longer terminate the monitor instance. Instead, they just stop the handling of the current event.

Developers are still encouraged to correctly catch and handle the exceptions in their EPL. If an exception is thrown and not caught, it is still possible for the events to be lost and not correctly handled.

This is a change in behavior. Some users may be relying on this previous behavior, in combination with an ondie() action. EPL with an ondie() action retains the previous behavior of always terminating the monitor and calling ondie(). If you must retain the previous behavior, you can add an empty ondie() action to your monitor.

Info
If you have an action that is called from within a stream query (for example, as part of a where or group by clause, or a window definition) which throws an exception, this still terminates the monitor instance.
Updated events in com.apama.cumulocity

To avoid confusion as to whether events were being sent towards Cumulocity or being received back as updates from Cumulocity, the Cumulocity event definitions API was changed in a previous release (10.5.2.0) so that the existing CHANNEL constant was deprecated and replaced by either SEND_CHANNEL or SUBSCRIBE_CHANNEL constants as appropriate. Some events were omitted from these changes and this has now been rectified. Therefore, the CHANNEL constant is deprecated on the following events:

  • SubscribeMeasurements
  • UnsubscribeMeasurements
  • FindManagedObjectResponseAck
  • FindMeasurementResponseAck
  • GenericResponseComplete
  • Subscribe
  • Unsubscribe

In addition, a new SUBSCRIBE_CHANNEL or SEND_CHANNEL has been added to the following events instead:

  • SubscribeMeasurements
  • UnsubscribeMeasurements
  • Subscribe
  • Unsubscribe

The constants on the following events are instead replaced with SUBSCRIBE_CHANNEL constants on their corresponding Response types:

  • FindManagedObjectResponseAck
  • FindMeasurementResponseAck
  • GenericResponseComplete

The API Reference for EPL (ApamaDoc) has been amended to make it clear that acknowledgement events are always received on the same channel as the corresponding response events, and to avoid confusion the CHANNEL constant has been deprecated on those acknowledgement events where it had been defined.

Package availability

To improve usability, the package availability (SHARED or PRIVATE) can now be set in the package upload wizard.

Fixed an issue with email template for scheduled exports

Fixed an issue with the email template for scheduled exports not being propagated from an Enterprise tenant’s setting to its subtenants.

Get pending LWM2M device connector operations

A fail-safe mechanism to regularly get pending LWM2M device connector operations from the platform has been added in addition to the real-time mechanism in the LWM2M agent. This mechanism is beneficial when real-time connections between the LWM2M agent and the platform are unstable.

Fixed issue with password strength indicator

The password strength indicator gets updated correctly now, and the Save button is available when the password meets the strength conditions.

Fixed issue with LWM2M bulk device registration on Firefox

Fixed an issue with the LWM2M bulk device registration not accepting CSV-typed files when using the Firefox browser on Windows environments.

Tooltip change in the Usage statistics page

In the Usage statistics page, in the tooltip for the CPU column “milliseconds” has been changed to “millicores”.

Improved microservice subscriptions

Microservices which have been created via API without providing a binary for it can again be subscribed without getting an error message.

Proper update for blueprint applications

Blueprint applications shared from a parent tenant can now be updated properly.

New wizard for device replacement

In the Device management application, a wizard has been implemented which guides users through replacing a physical device with another one. The replacing device must be registered in the platform in advance and is removed after the replacement procedure has been completed.

Customizable dashboard in the device details

Users can now customize the dashboard on the Info tab in the device details. Widgets can be moved and resized, and new widgets can be added from a list of available widgets. The dashboard can be reset anytime to the default dashboard settings. By default, the “Asset notes” widget has been removed.

Removal of software item

If the last version of a software is deleted, the software is entirely removed from the repository.

Improved device registration process

If a pending device in the registration list has been accepted, the device is now removed from the list instead of the list showing the “accepted” status for the device.

Improved smart group filter layout

In subasset views, smart group filters are now represented by a filter chips dropdown instead of displaying the raw text filter.

Improved filter by software type

In the Software tab in the device details, currently the Filter by software type dropdown in the Installed software list and the Install software modal shows types based on existing types in the software repository. This has been changed to show only the supported software types announced by the device in its c8y_SupportedSoftwareTypes fragment. If a device has not announced supported software types, then again all available existing software types are listed.

Disabling OPC UA Server endpoint validation

The endpoint validation happening during the connection to an OPC UA server can now optionally be disabled. This can be done in the gateway configuration by changing the gateway.connectivity.validateDiscoveredEndpoints setting to “false”. Alternatively, it can be controlled via the OPC UA server managed object by setting the fragment validateDiscoveredEndpoints to “false”. For details, refer to OPC UA.

New configuration flag in LWM2M device registration settings for firmware reset

The configuration flag fwResetStateMachineOnStart has been added to control if the LWM2M agent resets the firmware update state machine on the client at the beginning of a firmware update. The default of this flag is true which matches the existing behaviour of the LWM2M agent. It is available in the device registration settings.

New static template 201

Added the SmartREST static template 201 for creating measurements with multiple fragments and series.

New static template 125

Added the SmartREST static template 125 for sending heartbeat from a device.

New static template 507

Added the SmartREST static template 507 for changing the device operations status from EXECUTING to FAILED. The operations can be filtered by type. The template is intended for facilitating an operations cleanup after a crash.

New shell commands

Two new LWM2M shell commands have been added.

  • The new executelegacy command allows LWM2M execute requests with non-standard LWM2M parameters. The behavior of this operation resembles the semantics of the existing execute operation until version 10.15.
  • The new coap shell command enables making raw CoAP requests to devices to facilitate non-standard communication in exceptional cases.

For details, refer to Handling LWM2M shell commands.

Improved performance of migration operation

The performance of the migrateLwm2mDevices operation has been improved. New command line arguments have been introduced with the operation. A list of legacy LWM2M devices can be specified directly from the shell command. Moreover, the migration of the LWM2M client registration objects can be skipped by using an argument.

For details, refer to Migration of the LWM2M devices. [DM-1866]

New LWM2M configuration tab

The details of a LWM2M device now show a LWM2M configuration tab which replaces the LWM2M bootstrap parameters tab. The new tab is better structured and allows detailed configuration. It contains all configuration options of the former LWM2M bootstrap parameters tab as well as additional setting options:

  • LWM2M device settings such as awake time registration parameter, request timeout, serialization format, binary delivery encoding, use timestamp resources, keeping old values
  • Device security modes selection including the new X.509 certificate mode and selection for LWM2M bootstrap and server individually
  • Firmware update configurations
  • A set of LWM2M Server configurations that can be written to the device during bootstrap

For details, refer to the LWM2M user documentation.

If the new LWM2M configuration tab is not displayed and the LWM2M bootstrap parameters tab is displayed instead, the LWM2M agent is installed in an older version that does not yet support the new tab.

Customizable home dashboard

The Device management home page now also provides a customizable dashboard which lets users add customized widgets.

OPC UA Server devices connectivity state issue resolved

In case of bad connectivity or network delay server devices could go to a state where they were disconnected. This resulted in operation execution being suspended. This issue is now resolved.

Improved MQTT connections performance

The performance of MQTT connections has been improved. MQTT devices can now connect or reconnect faster, especially if the platform already has a large number of MQTT devices connected.

Introduced required parameters in the Alarms, Events, Measurements APIs

As announced earlier, see also release 10.17, at least one query parameter limiting the affected data will now be required to prevent accidental deletion of too many objects during a bulk delete operation. This change affects the following APIs:

  • DELETE /alarm/alarms requires at least one of the following parameters: source, dateFrom, dateTo, createdFrom, createdTo
  • DELETE /event/events requires at least one of the following parameters: source, dateFrom, dateTo, createdFrom, createdTo
  • DELETE /measurements/measurement requires at least one of the following parameters: source, dateFrom, dateTo

SmartREST Inventory GET templates issue fixed

SmartREST Inventory GET templates created in the UI did not generate responses when there was no external ID type declared in the template. This issue has been addressed for both existing and newly created templates.

Fixed device availability connection status flashing

Issues with flashing the device availability connection status have been fixed.

Issues with Ericsson DCP SMS provider fixed

Issues with the Ericsson DCP SMS provider when attempting to send an SMS have been resolved and outgoing requests are sent as expected to the Ericsson DCP API.

Filter issues in device grid fixed

In the device grid, issues with applying filters have been fixed.

Issues with SmartREST template editor fixed

In the SmartREST template editor, issues with the presentation of the External ID type field for Inventory POST messages have been fixed. Under CSV preview the generated “Template creation CSV” has been adjusted to include the “ID”, “externalId” and “externalIdType” values.

Improved query behavior

REST APIs no longer return the totalPages value if no query criteria are provided.

Appropriate application key header added to device simulator microservice

The Device simulator microservice sent some internal requests without application key header which resulted in these requests being counted as device requests. The appropriate application key header has been added so that all requests are now counted correctly.

Group filter issues in device grids fixed

Issues with the group filter in device grids resulting in empty result lists have been fixed. The first matching asset is now correctly shown as the filter value.

Device list shows complex columns correctly

The device list now shows complex columns like c8y_SoftwareList correctly after converting them to strings.

Fixed incorrect loading of certificates

Fixed an issue with incorrect loading of certificates to the trust store during core startup/restart, which caused errors in authenticating MQTT devices using certificates.

Alarms column removed from top-level groups

The alarms column has been removed from top-level groups because groups do not contain alarms themselves and the column only shows direct alarms.

X.509 security mode support

LWM2M device connections with X.509 certificates are now supported. The X.509 security mode can be selected separately for the Bootstrap server and the LWM2M server either during device registration or, for existing devices, by using the new LWM2M configuration tab. The Certificate Authority that issued device certificates must be added and enabled in trusted certificates in the tenant.

Together with this change also the following changes are introduced:

Separate security mode for Bootstrap and LWM2M server

Now all LWM2M device security modes can be selected separately for Bootstrap server and LWM2M server connections. This can be defined either during the device registration or using the LWM2M configuration tab of the device.

Disable authentication for Bootstrap or LWM2M server

Under Connectivity in the LWM2M configuration tab, the Bootstrap or LWM2M server connection can be disabled for a device.

PSK-generated option for LWM2M server security mode

During device registration, the “PSK generated” option can be selected for LWM2M Server connection to make LWM2M agent to generate the PSK ID and PSK key credentials for the device. These will be set to the device during the bootstrap process. For details, refer to the LWM2M user documentation.

MongoDB Java driver version upgrade

The MongoDB Java driver has been upgraded to the latest version 4.10.2.

Device profiles repository items now correctly shown

In the Device profiles page, when adding a repository item (software, firmware, configuration) if the device profile has a device type defined, the items shown either correspond to this device type or they don’t have a device type specified. In some cases, repository items without a filter were not visualized in the window for adding an item. These items are now correctly shown.

Device grid displays alert

The device grid now displays an alert if an issue occurs while retrieving the device data. This includes among others errors caused by custom columns configured with an invalid fragment path.

Introduced restrictions on the creationRamp property

In bulk operations, restrictions on the creationRamp property have been introduced. This allows better control over bulk operation creation and ensures adherence to specified limits. They are determined and can be modified by the system options device-control.bulkoperation.maxcreationramp and device-control.bulkoperation.mincreationramp.

Loriot microservice memory limit increased

The memory limit for the Loriot microservice has been increased to 2Gi.

Fixed wrongly formatted values in grid components

Fixed an issue in the data grid and device grid components where specific string, Boolean, and numeric cell values were wrongly formatted as dates.

Confirmation pop-up after editing device protocol details

After editing a device protocol details page and leaving the page, a confirmation pop-up is now always properly shown.

Availability calculations for time intervals corrected

The availability calculations in the “Availability” overview and for individual devices were not correct. Percentages were calculated for the respective time (24 hours, last 7 days and last 30 days) plus an additional 24 hours. The time interval has now been corrected.

Improved loading of measurements series

Previously, when loading measurement charts data, there was a performance issue if the measurement series had no units defined, depending on the total number of measurement records. This issue has been addressed and measurements series now load efficiently regardless of units being defined or not.

Creation of measurement fragments with not allowed characters prevented

In device protocols, users can no longer create measurement fragments (Measurement type and Measurement series fields) which contain characters that are not allowed by the Measurements API.

Erroneous audit log entries fixed

Previously, when ID collisions occurred, unrelated audit log entries could appear incorrectly in the “History of changes” view for bulk operations. This has now been resolved. In c8y/ngx-components the c8y-audit-log component now accepts a type input.

Numeric fields can now be defined using textual representations

Previously, the CAN bus protocol limited the representation of numeric values in the maximum value field, which posed limitations when dealing with exceptionally large numbers. To address this limitation, we have implemented a transformation mechanism that allows numeric fields to be defined using textual representations.

Fields added to inventory POST/PUT templates for simulators

Simulators did not use inventory POST/PUT templates properly as they did not specify any ID fields for the object they created/updated. This has now been resolved by adding the corresponding fields ID, External ID and External ID type depending on the SmartREST template used as instruction.

Data broker microservice resumes message forwarding after re-connecting to the Messaging Service

An issue has been resolved where the microservice-based data broker might fail to forward messages to the destination tenant after recovering from a temporary loss of connection to the Messaging Service. This connection loss could be caused by, for example, a transient network interruption or by maintenance on the Messaging Service.

Improved file upload behavior

In the files repository, it is now possible to select a file, discard it and then reselect it for upload. Previously, the file, once discarded, could not be selected.

Platform configuration form migrated to Angular

The platform configuration form has been migrated to Angular with Schema-form removed.

New wizard layout

The “Connect Smartphone” wizard illustrations have been updated.

Fixed issue with Copy dashboard button

The Copy dashboard button is now disabled when the user does not have the respective permissions.

Addressed the redirection issues for support user

On logging into the platform as a support user, the redirection to the Management tenant has been removed. The platform, despite authentication in the context of the Management tenant, sets a cookie for the domain of the logged-in tenant.

App logo height set properly when creating new branding

Fixed an issue where the app logo height was not set correctly when creating a new branding. The app logo height will now be set properly when generating a new branding.

Breadcrumb for the Smart rules tab correctly set in the device details view

In the Groups view, the breadcrumb for the Smart rules tab was missing. If the Application options are configured in a way to show breadcrumbs, the breadcrumb will now be shown properly.

Clear button in Usage statistics page removes applied filters properly

Fixed an issue where the Clear button on the Usage statistics page failed to remove applied filters.

Consistent asset names in various places of the UI

Fixed an issue with group/device names being translated when displayed in the navigator menu, while not being translated in other places such as the subassets grid or device group selector. From now on, asset names in the navigator are not translated.

Consistent support of Enter and Escape keys

Improved the consistency of support of Enter and Escape keys (for save and cancel actions, respectively) on the following views: tenant details, user details, global role details, retention rule settings, branding configuration.

Consistent time format for device availability and measurements

The time format (12/24 hours) used for device availability and measurements in the UI is now consistent.

CRL support in device certificate authentication

Administrators can now configure the Certificate Revocation List (CRL) settings. When a certificate is compromised, the platform is now capable of performing the revocation check during the device authentication process. Administrators can choose an offline mode in which revoked certificate details can be added manually or choose an online mode if their issuing certificate authentication maintains the revoked list of certificates.

Date picker now closes on any click outside the picker

Any click outside of the date picker will now close its calendar dropdown.

DELETE notifications for specific managed objects with Notifications 2.0

DELETE notifications for Notifications 2.0 subscriptions to specific managed objects - that is, subscriptions to the managedObjects API in the mo context - are now always sent. Previously, these notifications were not reliably sent in all cases.

Fixed Alarm API issue

Fixed an issue where the Alarm API was not correctly searching for alarm types with spaces inside the type.

Fixed alarm source name issue

Fixed an issue where the alarm source name was not returned after alarm de-duplication.

Fixed duplicate identity mappings

Fixed a possible race condition with duplicate identity mappings for devices by introducing a unique database index.

Fixed HTTP status 500 response

Fixed the rare occurrence of an HTTP status 500 response from /tenant/statistics/allTenantsSummary, if one of the tenants was deleted during the request.

Fixed information disclosure issues with unsecured login option endpoint

The unsecured login option endpoint no longer reveals information about session configuration and authentication restrictions.

Fixed issue with invalid parameters

Fixed an issue where the Cumulocity Rest API returned a 500 HTTP error code in case of an invalid pageSize or currentPage parameter. The API now returns a 422 HTTP error code in such cases.

Fixed issue with Notifications 2.0 subscriptions with a type filter

Fixed an issue where Notifications 2.0 subscriptions with a type filter could fail when updating or deleting an object with an empty type. This issue would cause an error to be returned to the client even though the update or delete request was successful.

Fixed issue with unequal distribution of notifications

Users of Notifications 2.0 will no longer encounter unequal distribution of notifications from tenant-context subscriptions amongst a set of shared consumers.

Fixed issues with Messaging Service request time outs

Fixed an issue where requests from the core platform into the Messaging Service could take a long time to complete, slowing down the response to HTTP requests and potentially preventing the platform from handling new incoming requests. For example, a request from the core platform to publish a message using Notifications 2.0 could block if the tenant had reached its quota for unconsumed notifications, only timing out after a long delay. This issue has been resolved by ensuring that Messaging Service requests that would have blocked now time out quickly.

Fixed issues with Proof of Possession process

In the Trusted certificates page, refreshing and downloading the verification code for the Proof of Possession process now works properly if a new certificate was uploaded or the verification code was refreshed by the user.

Fixed issues with redirection to the SSO server

Issues with the redirection from the login page to the SSO server have been fixed.

Fixed issues with refreshing session tokens

Issues on refreshing the session tokens when the OAI-Secure login mode is configured with two-factor authentication have been fixed.

Fixed notifications issue for microservice subscriptions

Notifications are now sent correctly for subscriptions to managed objects that represent microservices. Previously, notification subscriptions to these managed objects could cause microservice subscription and un-subscription to fail.

Fixed support user issue

Fixed an issue with changing the password for another user as a support user.

Fixed translation issue in unsubscribe confirmation

Fixed issue with missing translation in the confirmation popup which is displayed while unsubscribing a microservice.

HTTP error issue fixed

When the DELETE /inventory/managedObject/{id} endpoint did not finish immediately but continued in the background, the platform returned a 202 HTTP code instead of 204. This has been fixed.

Improved authorization performance

The authorization performance has been improved when multiple users or devices are connecting concurrently for the first time to the restarted or upgraded platform.

Improved changing application language by query parameter

The locale of the web app can be set via the URL parameter lang, for example, /apps/administration/index.html?lang=zh-cn. The locale code is case-insensitive and must have 2 letters or 4 letters, separated with a hyphen - or an underscore or _. If the provided locale code is not supported, the web app will be displayed in English.

Improved deletion of managed objects

Improved the reliability of deleting a user together with a managed object. When deleting a managed object with the flag “withUser=true”, the device user is now deleted if it does not own any other item.

Improved display of details of audit log items

Fixed an issue with displaying old and new object values in the audit log details. Changes done to related objects are now visible in audit logs.

Improved documentation for support URL configuration

The documentation for configuring the support URL has been updated, see Customizing your platform. This update improves the clarity and completeness of the instructions for setting the support URL, which is displayed to end users in certain situations. The improved documentation should make it easier for administrators to customize the support URL as needed.

Improved fragmentType query parameter

Fixed an issue where deleting enhanced time series measurements did not work with the fragmentType query parameter.

Improved Japanese localization of various window titles

Improved Japanese localization of the dialog window titles for adding and editing dashboards and reports.

Improved performance of activating or deactivating smart rules for multiple devices

The performance of activating or deactivating a smart rule for multiple child assets has been improved by executing only a single request instead of multiple requests.

Improved SSO configuration readability

The default value of the response_type request parameter for the authorization request in the single sign-on configuration has been set to code.

Improved SSO configurations

The SSO configuration page has been updated to support additional signature verification methods for the Azure AD integration template. Users can now optionally specify a public key discovery URL within the signature verification settings when setting up connectivity to Azure Active Directory for single sign-on.

Improved tooltip usability in Proof of possession

Clicking on the popup for the signed verification code no longer closes the tooltip, so that users can now copy the SSL command. The tooltip can be closed by clicking outside of it.

Increased default value for MQTT SSL handshake timeout

The default value for the MQTT SSL handshake timeout has been increased from 10 seconds to 50 seconds to increase the time for the handshake to be successful. The value of this property can be configured by a platform administrator.

Localization strings are correctly compiled to JSON on Windows using c8ycli command

Fixed an issue with c8ycli locale-compile on Windows where the compiled JSON file was not created if the path to the PO file included folders.

Login using user alias and TFA SMS with basic authentication works reliably again

Fixed a random issue (“invalid TFA token due to user inactivity”) when logging in using the user alias and TFA SMS with basic authentication.

Measurement API accepts leading zeros

The Measurement API now accepts leading zeros provided for measurement values.

Missing sender name and address issue fixed

The sender name and address were missing when sending a request to the SMS gateway with the TFA code. This issue has been resolved. The sender name and address are now retrieved from the tenant option configuration.

Password reset on OAI-Secure login

When a user logs in using OAI-Secure and a password change is required, a PasswordResetToken is returned in the response header, enabling the password reset.

Placeholders in input fields no longer include extra suffix

Fixed an issue with some strings having an extra suffix in backticks (like “LOCALIZE”) in a few places in the standard applications.

Removed data field from realtime API handshake responses

The data field has been removed from realtime API handshake responses where it was not required and always had a “null” value.

Resolved OAI-Secure access token issue

The issue of an inaccessible endpoint for obtaining an OAI-Secure access token through cross-origin requests has been resolved.

Separate roles granting access to managed objects and binary files

Two new permissions have been added to control access to managed objects and binaries files separately. This feature enables tenant administrators to control the access to objects in a more granular way.

Separate translation for the term "Availability" for Japanese

The term “Availability” in the UI now offers different translations for Japanese depending on the context. This improvement better tailors the localization for the Japanese market.

Simple type name accepted as type filter for Notifications 2.0 subscriptions

Fixed a regression where a simple type name was not accepted as a type filter when creating a Notifications 2.0 subscription. For backwards compatibility with older releases, if the type filter value cannot be parsed as an OData expression, it is now assumed to be a simple type name.

SSO access mappings login configuration

When removing an application that is used in SSO access mappings, the login configuration will be updated accordingly.

Status can be changed from FAILED for operations with "failureReason"

Previously, the status for operations with a “failureReason” fragment could not be changed from FAILED, since the “failureReason” fragment was not allowed for other statuses. Now “failureReason” is automatically removed when moving an operation from the FAILED status.

Strings are correctly extracted from source code on Windows using c8ycli command

Fixed an issue with c8ycli locale-extract on Windows where the strings where not correctly extracted from the source code. Now the extracted locales.pot file correctly contains all entries.

SVG animation in SCADA widget displayed correctly in dashboards

Fixed an issue with SVG files in the SCADA widget, where animate or animateTransform tags worked properly in the configuration preview, but did not work in a dashboard.

Updated 3rd-party library Avro

To address the CVE-2023-39410 vulnerability, the 3rd-party library Avro has been updated to version 1.11.3.

Valid examples of Japanese phone number used in translations

The example phone numbers used in the Japanese translations were previously invalid and did not match the expected format for Japanese phone numbers. With this change, the example phone numbers have been updated to use a valid format that is appropriate for Japan. This improves the user experience for Japanese-speaking users by providing them with more realistic and relatable examples in the application’s text and labels.

Verification code supports end-of-line characters

The verification code which is signed in the Proof of Possession process now supports end-of-line characters from various operating systems.

Added information about certificate management

Information about certificate management along with a link to the documentation has been added on the Settings tab of the Trusted certificates page.

Added information on restrictions to auto-registration