Release notes

These release notes for Cumulocity IoT release 2024 include information on all relevant changes, such as new features, improvements, and fixes, that have been implemented in Cumulocity IoT 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


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.

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

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

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.

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.

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.

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.

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.

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.

Changing the endpoint name in the LWM2M configuration view automatically adjusts external ID

The modification of the LWM2M endpoint name via the device’s LWM2M configuration view now triggers the automatic adjustment of the corresponding external identifier, designated with the type c8y_Id, ensuring seamless synchronization between the endpoint name and its associated external ID.

Grid filter text not cleared on filter reset

When using the simple FilteringFormRendererComponent in data grid columns to display filter inputs, the input values were not cleared when the filter was reset. This issue has been fixed - now when the filter is reset, the input values are properly cleared.

Improved robustness of LWM2M client registration process

A race condition encountered during simultaneous LWM2M client de-registration and new registration requests has been resolved, improving overall robustness in the registration process.

LWM2M agent changes external microservice properly

In the custom action configuration of LWM2M device protocol resources, the exchange to another external decoder microservice was not effective. This issue is now resolved.

LWM2M agent correctly rounds values from location object 6

An issue prevented position information from the location object 6 to be populated into the device managed object if parts of the coordinates were reported with too high precision. This issue has been fixed. The LWM2M component now rounds the values correctly to the supported level of precision.

Supported security modes retrieved dynamically from LWM2M agent

The supported security modes which are available for selection on the configuration page are now retrieved dynamically from the LWM2M agent rather than being hardcoded in the UI.

Adjust device Info dashboard default settings to fit new grid

Resetting the “Info” dashboard in the device details resulted in widgets taking only half of the available dashboard space. Default dashboard settings have now been adjusted to fit the new dashboard grid and resetting the dashboard works properly again.

Asset selector search results now consistent with normal search

Previously, the asset selector search returned different results than the normal search, which could lead to confusion and inconsistency when selecting assets. With this change, the asset selector search now returns the same results as the normal search. This improvement ensures a consistent search experience across the application, making it easier for users to find and select the desired assets.

Custom units overrule datapoint units

In some cases, users want to override the units of a datapoint with a custom unit. Previously, the datapoint unit had a higher priority than the manually specified unit, which was not the desired behavior. With this change, manually provided units now have a higher priority compared to the actual datapoint units. This ensures that the custom unit specified by the user is always used instead of the default datapoint unit.

Map widget correctly assigns smartphone as device

The “Map” widget displayed in the dashboard did not have a device assigned to it when connecting a smartphone. This issue has been fixed so that the “Map” widget correctly assigns the connected smartphone as the device to display location data from.

Rotation widget shows the actual model

A bug has been fixed that prevented the “Rotation” widget from displaying the actual model.

Switching tabs with multiple widgets using the dashboard date context works smoothly

Fixed an issue where users were unable to switch between dashboard tabs if the dashboard contained two or more widgets using the dashboard date context filter. Users can now smoothly transition between tabs regardless of the number of dashboard date context widgets present.

Markers correctly displayed in the Map widget

When assets with location were imported in bulk, markers in the “Map” widget were not shown due to an incompatible data type of latitude and longitude values. Aligning the data type to number now correctly displays the markers on the map.

2024 release of Cumulocity IoT DataHub identical to 10.18 release

The Cumulocity IoT DataHub 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 and the 10.18 documentation.

LWM2M agent processes large LWM2M bulk registration reliably

LWM2M bulk registrations and removals processed by the LWM2M agent were unreliable due to a race condition. This issue has been fixed and bulk registrations are now processed reliably.

LWM2M agent processes all multiple resource instance IDs correctly

When a LWM2M device sends a composite request with multiple resource instance IDs from the same resource ID and this resource ID has an additional action defined, only one of these resource instance values was sent to this additional action for processing. The same behavior was observed when you try to do a composite read (cread) device operation with a row of resource instance IDs. These issues are resolved and all requested resource instance IDs are now processed.

Asynchronous alarm inputs no longer cause internal errors in model chains

Asynchronous alarm inputs declared by the Alarm Output blocks were considered for connectivity chains between models, leading to “Internal error : inconsistent chain ID” errors in some scenarios. This is now fixed and asynchronous inputs declared by a block are now no longer considered for model chains.

Fixed issue with Center map button in the Map widget

The Center map button in the “Map” widget is now only enabled if the specified center point of the map is shifted from the current view center.

Fixed translation issue in unsubscribe confirmation

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

Fixed alarm color issue in the Map widget

The color used for alarms in the “Map” widget now again correctly represents the color of the alarm with the highest severity raised by a device.

Fixed file download behavior

If a user navigated to an asset which had a file attached, the file was immediately downloaded. Now the file is only downloaded on clicking the download button.

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.

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 issues with German translation

Fixed an issue with the German translation of the Get snapshot from device operation description and several other similar cases.

Improved context help in Subassets page

In the Subassets page, context help now provides more specific information if the displayed group is a smart group.

Improved information on "Use source timestamp" configuration

The user documentation and the tooltip for the “Use source timestamp” configuration have been improved to explain how the LWM2M agent makes use of timestamp information if reported by a device.

Prevention of HTML injection attacks through SmartREST template names

A security vulnerability in the simulator has been patched to prevent HTML injection attacks through SmartREST template names. Previously, the template name entered in simulator instructions was rendered as raw HTML, enabling scripts to be injected. The issue is now mitigated by displaying the template name as plain text rather than functional HTML.

Enhanced XSS protection in Asset notes widget

XSS protection has been enhanced in the “Asset notes” widget.

Improved sorting of properties in the complex custom property

In the Subassets page, the properties in the complex custom property were sorted alphabetically. Now, the sorting reflects the order specified by the user in the Digital Twin Manager.

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.

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.

Fixed an issue in the realtime API

Fixed an issue in the realtime API where a subscription marked as “non-retriable” could still be re-subscribed after re-establishing the underlying connection to the server, for example, after a Cumulocity core restart or network outage.

Fixed connection issues of LWM2M devices

Under certain rare conditions LWM2M devices were not able to connect due to an internal 409 conflict. The LWM2M agent is now more robust for such scenarios.

Fixed issue with large integer values

When a LWM2M device sends data for an unsigned integer equal to or greater than 9223372036854775808, the LWM2M agent processes this number but cannot write it to the platform because the platform does not support such large integer values, but it can support scientific numeric values. This issue is now resolved as the LWM2M agent now converts the large unsigned integer values to scientific notation and then sends them to the platform. This may result in a loss of accuracy.

LWM2M Time-to-Live duration for device operation realtime subscription

The LWM2M agent realtime subscription for device operations now has a limited Time-To-Live (TTL) duration. The default TTL duration is 3 minutes. This setting may be configured on platform level.

Added information on restrictions to auto-registration

The auto-registration option in trusted certification does not support devices communicating via the LWM2M protocol. This information has been included in the tooltip on the Trusted certificates page and in the user documentation.

New "Replace device" options

In the Subassets view, a “Replace device” option is now available in the context menu of every supported device. Previously, the “Replace device” option was only available in the All devices page. Moreover, a Replace device button has been added to the “Device status” widget on the Info tab in the device details. This functionality does not support LWM2M devices.

New toggle for switching off empty data

For LWM2M devices, it is now possible to switch off the sending of empty measurement/event/alarm/custom actions data for individual resources. Moreover, you can toggle on/off or optionally skip empty values for all resources using the LWM2M device protocol at once.

Fixed issue with c8ycli locale-compile

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.

UI component c8y-stepper function corrected

The onStepChange function in the c8y-stepper UI component is intended to emit the selected step value whenever it changes through user interaction. However, this output event was not being triggered properly. This issue has now been corrected - onStepChange will once again reliably publish the current step value after any update.

Added range validation for Location property fields

Users can now only enter values that are within the valid range for latitude (-90 to +90) and longitude (-180 to +180) fields in the Location property.

Assign a location to an asset

A new default property “Location” has been introduced. Add the Location property to the desired asset model to assign co-ordinates or select the location on a map while creating an asset.

Bulk import of assets supported for multiple users

DTM now supports concurrent bulk asset imports by multiple users.

Corrected placement of marker if coordinate value is set to "0"

The marker is now shown at the center of the map when one or both of the values for latitude and longitude is “0” for the Location property. Previously, the marker was not centrally displayed, requiring users to manually zoom in to locate it.

Default asset icon shown for entries in child asset selection dropdown

For an asset without a designated icon, the default asset icon is now displayed in the dropdown menu for adding child asset models instead of the default group icon.

Default properties are omitted from asset property export list

The default asset property (Location) is not incuded during the export of asset properties.

Default values of asset properties available in assets bulk import template

The bulk import template now shows any default values that are set for asset properties.

Display maps for multiple asset instances during asset creation

Fixed an issue where the map did not show up correctly when adding multiple asset instances associated with Location.

Displaying null for empty number values in Asset property page

The preview of the data model in the complex property now displays a null value if an empty value is given for the Number type property.

DTM version moved under platform info section

Users can now find the label “DTM” along with the version in the user profile under the platform info section.

DTM version moved under Platform info section

The DTM version is now displayed in the right drawer under the Platform info section.

Error handling for cancelled delete operations in Asset models and Asset properties page

Users can now cancel the delete operation on the Asset models and Asset properties page without encountering any error message.

Error notification with details on asset property creation failure

Users are now notified of errors with detailed information on the cause of failures when creating asset properties.

Exporting asset models with multiple properties

Users can now export asset models which have multiple asset properties.

Fixed empty grid message in newly created assets

Previously, upon creating a new asset, a message stating “No items to display” was displayed. This issue has been addressed, and the message will no longer be shown.

Fixed the error when value for latitude or longitude is "0"

Fixed the error seen when the latitude or longitude value of the Location property is set to “0”.

Handled access denied error on updating file property type

The “Access denied” error message is no longer displayed on attempting to update the file property type in the Subassets page.

Handled display issues for property values in subassets

On the Subassets page, the value of a Boolean property is now accurately shown as “false” instead of “undefined” . Additionally, if no data is provided, the date and number properties display an undefined value.

Handled error on updating Location property with empty value

Addressed an issue where errors occurred when updating the Location property with an empty value on the Subassets page.

Handled grid configuration issues in the Assets page

Fixed an issue where the Assets page goes blank for one user if data is deleted by another user due to grid configuration.

Handled UI issues in import asset properties preview

The Import asset properties preview window now displays a message when no record exists.

Immediate feedback from validation of Key field

During the creation of asset models, asset properties and assets, upon entering input in the Key field, if the value entered is invalid then an error message will be shown, and if the value is valid and all required fields in the form are filled, the Save button will be enabled - no need to click outside the field. With de-bouncing implementation, the API requests are triggered after a short delay following the last key entry, significantly reducing the frequency of calls and enhancing the responsiveness of the application.

Immediate feedback on validation of key field in Asset page

Users can now enter a maximum of 254 characters in the input fields for asset creation.

Implemented file size validation during asset creation and in the Subassets page

Users are now prevented from uploading files exceeding the specified size during asset creation and in the Subassets page.

Implemented file type validation in Assets page

File type validation has been implemented to restrict users from uploading files other than the specified type during the asset creation.

Implemented ordering of key value pairs in complex property

Key value pairs in a complex property can now be ordered as needed by entering the desired order in the Order field.

Importing of Asset models with Location property

User can now import asset models with a Location property.

Improved action buttons in Localization page

Realigned the edit and delete icons for translations in the Localization page.

Improved asset model selection dropdown with search option

A search function has been added to the asset model dropdown when creating new assets.

Improved map display and interaction for Location property in subassets

Users can now view the map on the Subassets page only when both values (latitude/longitude) of the Location property are available; if any or both of the values are missing, the map remains hidden. Additionally, the marker is not shown on the map if any one of the values is missing. Clicking anywhere on the map in edit mode will update the corresponding fields automatically.

Improved navigation during asset instance creation

When there are multiple asset instances, users are now navigated back to the step showing a blank value in the name field instead of navigating to the confirmation page.

Improved readability in Localization page

Renamed the column heading Keys to Identifier and the column heading Terms to Translation in the Localization page.

Improved validation for number property during asset instance creation

Users now receive validation errors when incorrect exponential values for asset properties are entered in number type fields during asset creation.

Improved visualization of steps skipped during asset instance creation

Non-mandatory steps that are skipped during the creation of an asset instance are now distinguished by a grey-colored tick.

Map marker visibility based on Location property values

Users are no longer shown the marker on the map if there are no values for latitude and longitude within the Location property in Asset properties page.

Message added for non-existing asset model samples

Users are now notified when searching for an asset model sample that does not exist.

Modified DTM URLs to match naming conventions of DTM entities

DTM URLs have been modified to reflect the naming conventions followed for DTM entities.

Modified import asset icon

The import asset icon has been changed in the Asset tree page.

Modified label for complex property in Subassets page

Users can now see a label “Complex properties” instead of the previous “Property key” label in the Subassets page.

Modified success message on updating assets

The success message has been changed from “Group updated” to “Asset updated” on updating an asset and its properties in the Subasset page.

Optimized network calls for assets and asset models

Optimized calls to the backend from the Assets property and Asset model page.

Overflowing text is hidden to fit the Choose Asset model field size

Lengthier asset model names in Choose Asset model dropdown field are now truncated to fit to the field size. Hovering over the respective option shows the complete text.

Overflowing text is hidden to fit the Model name field size

Lengthier asset model names are now truncated to fit the field size of the Model name in the asset model creation window. Hovering over the respective option shows the complete text.

Position of Actions column is fix in Localization page

The position of the Actions column in the translation grid of the Localization page is now fix and cannot be changed.

Rectified issues observed in role-based access to DTM entities

Users can now view asset model and property labels as keys on the Localization page. Furthermore, the issue of simultaneously displaying “items deleted successfully” and an error message when deleting multiple assets has been resolved.

Role-based access for bulk import of assets

Access to the bulk import feature can now be controlled using Cumulocity IoT global and inventory roles.

Role-based access for setting default location for the Location property

Only users with edit access to asset properties can set the default location values in the Location property through the Choose on map button.

Rollback on assets import failure or runtime exception

In the event of a failure or a runtime exception during asset import, the system will automatically discard all assets created until the failure.

Saved filters for columns on Localization page

Filters that apply for columns in the Localization page are now saved automatically.

Set limit for key length

The key for assets, properties and models is set to 254 characters maximum to ensure consistent behavior with other Cumulocity IoT applications.

Support for importing complex asset properties

Importing a complex asset property is now supported by the platform.

Uniform warnings and errors across the application

The messages shown in pop up dialog windows are kept consistent across the entire application.

User with inventory role permission can view asset models

Users with access only to specific assets via inventory roles can now view all asset models in the Asset model page.

Users navigated to the top of the assets list

Users are now always taken to the first page of the asset list when navigated to the Assets page.

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 IoT 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 IoT 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 Cumulocity IoT OpenAPI Specification.

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 IoT 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 IoT transport in Apama 10.15.4 to reflect changes in REST API

Due to a change in Cumulocity IoT 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 Cumulocity IoT OpenAPI Specifications 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 Cumulocity IoT OpenAPI Specification.

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.

Increased timestamp width in "Event list" widget

The width for the timestamp in the “Event list” widget has been slightly increased.

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.

Fixed widget behavior when real-time connection was interrupted

In rare cases, when a real-time connection was interrupted, certain widgets did not update again once the connection was re-established. This behavior has been fixed.

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 IoT or being received back as updates from Cumulocity IoT, 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 SVG files in the SCADA widget

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.

Improved data export feature in the data explorer

The data export feature in the data explorer has been improved. Now only active data points are included. Moreover, the name of the exported file includes the name of the series. This file contains all measurements in which this series is found.

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.

Add dashboard button no longer removed when removing all common tabs

If the Cockpit application was configured to remove all common tabs on group or device level, the button to add dashboards was also unintentionally removed. This has been addressed.

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.

Enable realtime in data point graph by clicking real-time indicator

If a user drags the X-axis in a “Data point graph” widget with realtime enabled, realtime is turned off. It can be enabled again by clicking the real-time indicator.

Removal of org.json dependency

The dependency on org.json:json has been removed from the Java SDK.

Removal of json-path dependency

The dependency on com.jayway.jsonpath:json-path has been removed from Java SDK.

Update on jetty dependency

Dependencies on org.eclipse.jetty:jetty-* were updated to version 9.4.51.v20230217.

Improved chart type selection in Data point graph widget configuration

In the “Data point graph” widget configuration, you could only select a chart type if the data point was not linked to a template from the data point library. Now you can always select a chart type.

Update on Sprint Boot dependency

The Spring Boot dependency has been updated to version 2.7.11.

Deprecation of the Microservice SDK for C#

With the introduction of auto-generated SDKs, we provide an always up-to-date developer library with the purpose to facilitate the development of Cumulocity IoT microservices in different programming languages including C#.

The new auto-generated SDKs make our existing Microservice SDK for C# obsolete. For this reason, the Microservice SDK for C# has been removed from our public product documentation.

To learn more about using the auto-generated SDKs, refer to our respective GitHub repository.

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.

Location view migrated to Angular

The location view in the Device management and Cockpit application has been migrated to Angular. The map provider, the location search, and the map layers are now configurable via application options or tenant options. The angular.js module @c8y/ng1-modules/devicemanagement-location for location was removed and must be migrated or at least removed on update of a custom build application.

Text cut off issue fixed

Fixed an issue where the text for a link on the login screen was cut off.

Adjustment of Y-axis in the data explorer

In the data explorer, when deleting the min/max value of a data point, the Y-axis displayed “-1” and “1” instead of determining the maximum and minimum value based on the data. This has been fixed and the Y-axis shows the min/max value of the data again.

Attribute now set to language preference of user

In non-hybrid applications, the lang attribute of the html tag is now correctly set to the language preference of the current user.

Locale of web app can be set via URL 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 by a hyphen “-” or an underscore “_”. If the provided locale code is not supported, the web app is displayed in English.

Missing dependency added for widget plugin development

On developing a widget plugin with the Web SDK, a dependency issue could occur due to a missing dependency in the package.json. This missing dependency has now been added.

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.

SCADA widget mapping now holds child device data properly

The SCADA widget mapping now holds child device data properly and is not overridden by the parent device.

Version in plugins list now has "v" prefix

The version in the plugins list is now displayed with a “v” prefix.

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.

Alarms adjustments

The data points graph now displays alarms using either its firstOccurrenceTime, time or creationTime attribute instead of only using creationTime.
Alarms are now displayed with a minimum width of one pixel, to assure that alarms with a very short duration, for example, alarms created with a CLEARED status, are displayed.
The alarm tooltip in the data points graph now displays the lastUpdated timestamp in the user’s timezone and format.

Removal of software item

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

Return types of static functions adjusted

The return types of several static functions of Angular modules have been adjusted. In certain cases this previously caused an error message like “Unable to evaluate this expression statically”. This is now resolved.

Asset property can now be cleared

The asset property can now be cleared if not required.

One plugin is shown if multiple packages are available for same widget

In the application plugin view, if multiple packages (subscribed and custom) were available for the same widget, the platform displayed multiple entries for the same installed plugin. Now only one plugin is shown.

Install multiple plugins from one package

It is now possible to install multiple plugins from one package to an application. Users can uninstall plugins only from an application that has this specific plugin installed.

Custom Web SDK implementations shown with correct title

Custom Web SDK implementations using the ContextDashboardComponent are now shown with the correct title instead of an empty one.

Asset widget render issue fixed

An issue was fixed where the asset widget was not rendering if deeply nested custom properties were selected.

Main branding colors now used to brand SVG images and dashboards

On branded applications, the main branding colors are now also used to brand SVG images and dashboards by automatically generating shades of the primary brand color.

Fixes for blueprints in the application switcher

Blueprints are no longer shown in the application switcher if they have not been deployed.

Fixed issue for filters set in lists

If a filter was set in the extensions, applications or microservices lists, reloading the page on item removal or addition did not work. This issue has been fixed.

Creating an asset with the Location property adjustments

After creating an asset with the Location property where the default values for longitude and latitude are set, a map showing a marker is displayed. If one or both of these values is deleted, the map is hidden from the sub-assets view. When editing the Location property and these values are missing, the marker for selecting a location is not shown.

Fixed issue with locales.pot file

Fixed an issue with c8ycli locale-extract on Windows where the extracted locales.pot file didn’t contain any entries.

New option to remove a file when updating file property

It is now possible to remove a file when updating its file property within a complex property of an asset.

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.

Removal of deprecated device-grid model classes, column implementations and services

As announced earlier, see also release 10.17, shared classes, components and services from the @c8y/ngx-components/device-grid are deprecated. Those deprecated items have now been removed.

This change only affects you, if you or your development team use the Web SDK to extend Cumulocity IoT UI applications or to build your own web applications. If you use the device-grid functionalities, check the deprecation documentation and alter your code accordingly. Refer to the deprecations in the WebSDK resources documentation for the device-grid service. Other deprecations for reference are also marked in this documentation.

New versioning matrix for blueprints/plugins

A versioning matrix can now be added to the cumulocity.json of a blueprint/plugin. When a blueprint/plugin is installed, its version is validated against the platform version. If the versions are incompatible a warning is shown.

Upgrade to Angular 15

The Web SDK has been upgraded to Angular 15.

Removal of deprecated implementations

In release 10.16.0.0, core re-usable data-grid-related components and services have been moved to the @c8y/ngx-components. The initial implementations were deprecated and have now been removed.

New activeClassName input in data-grid and device-grid components

A new activeClassName input has been added to the data-grid and device-grid components. It can be used to define a class name to be appended to the last clicked row in the grid. Its default value is “active”. This option can be deactivated by setting the input value to an empty string.

New filter dropdown in data grids

In the data grid component, a new filter overview dropdown has been added. It displays all active filters in one place and allows users to remove filters. For custom column implementations, the WebSDK allows developers to provide their own logic to display active filters as items in the filter overview.

Improved shell applications behavior

Shell applications now wait with their initial navigation until all plugins have been loaded. This allows, for example, to directly navigate via a link to a route which is provided by a plugin.

Data grid components return to first page after reload

Data grid components no longer persist their current page. After reloading they always return to the first page in the list.

Removal of references to deprecated classes

References to the deprecated classes ComponentFactory and ComponentFactoryResolver have been removed from the @c8y/ngx-components library.

Context path in the remotes application option

Scaffolding an application that uses the remotes application option via the c8ycli now also updates the context path used in the remotes application option.

Removal of Impact connectivity feature

The Impact connectivity feature has been removed from @c8y/ngx-components and @c8y/ng1-modules packages.

Improved behavior on plugin installation

When installing a plugin and the tenant has no custom applications, it is now possible to duplicate any existing application.

Fine-grained positioning of widgets on dashboards

The grid used in dashboards for placing widgets now supports 24 instead of 12 columns. This allows finer-grained positioning of widgets on dashboards. In case you share the same dashboards between different application versions, we strongly recommend you to upgrade to a version that includes the fix MTM-55923.

Improved error message on failure of device deletion

If a user with minimal permission tries to delete a device an error message showed up stating “Could not delete device.” Now, together with the failure message, the reason of failure is displayed.

Change aggregation for entire dashboard

It is now possible to change the aggregation for all widgets in a dashboard that support the dashboard context functionality at once. The following widgets support the dashboard context aggregation: Data points graph, Data points graph 2.0, Data points table.

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.

Support of HTML in input fields

To be able to provide more information in input fields on the expected input, dynamic form fields now support HTML markup in their description.

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.

Changed form validation for assets defined via the Digital twin manager

If an asset custom property in the Digital twin manager application is declared as required and complex, all of its sub-properties are required too.

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.

Disable/enable realtime for widgets on dashboard level

If a widget supports realtime, it can now be linked to the dashboard real-time context to disable/enable realtime on dashboard level. The following widgets support the real-time dashboard context: Data point graph, Data point table, Event list, Map.

Map shown for assets created in the Digital twin manager

If a complex location property is set in the Digital twin manager application, the map is now visible in the asset view and users can select a location on the map.

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.

Adjusted missing required types in the export of the @c8y/client package

The export of the @c8y/client package was missing the required types which caused issues in certain setups. This has been adjusted.

Updated Spring Boot dependency

The Spring Boot dependency has been updated to version 2.7.11.

Updated org.eclipse.jetty:jetty dependencies

Dependencies on org.eclipse.jetty:jetty-* were updated to version 9.4.51.v20230217.

Multiple realtime API subscriptions issue resolved

Resolved an issue where multiple realtime API subscriptions in quick succession could cause an invalid subscription state, leading to subscriptions receiving duplicate notifications.

Improved dialog window tiles

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

Fixed value of asset property of type Boolean

The asset property of type Boolean now shows “false” instead of “Undefined” when its value is “false”.

Table used for SCADA widget replaced by a list group

The table used for the SCADA widget configuration has been replaced by a list group, allowing better visualization of data and actions.

Styling of Paste dashboard button now consistent with other buttons

The styling of the Paste dashboard button is now properly applied and consistent with the styling of other buttons.

Fragment and series selection from existing data point

In the data point library, it is now possible to pick fragment and series from an existing data point.

Latest events now correctly displayed in data point graph

The latest events are now correctly displayed in the data point graph, even if a custom interval has been selected.

Users now able to see all top-level node groups

Fixed an issue where users were not able to see all top-level node groups, even if they had the required permissions.

Fixed asset icon issue

Fixed an issue where the default group icon was displayed instead of the corresponding asset icon.

c8y_Global fragment no longer unintentionally set to null

In case the doNotAddGlobalFragmentByDefault option has been set in the configuration of the DatapointLibraryModule, the c8y_Global fragment is no longer unintentionally set to null during the creation of a new data point library entry.

Child assets activation and deactivation with single request

Activating or deactivating child assets is now executed with a single request.

Language selection displayed in right drawer

The right drawer now always shows the language selected in the user preferences.

Filterable asset selection in data point selector

The asset selection in the data point selector is now filterable.

Default range is now set if no custom range has been assigned by user

The range in the “Linear gauge” widget and in the “Silo” widget is now set to 0-100 if no custom range has been assigned by the user.

New filter option in the datapoint selector

The asset selection in the datapoint selector is now filterable.

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

Consistent time format for device availability and measurements

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

New time ranges for exports

The following time range options have been added to the export configuration: “Last 24 hours”, “Last 7 days”, “Last 30 days”.

Action buttons on mobile screens

The action buttons in the windows Add bulk operation and Add device protocol are now properly aligned when using mobile screens.

Usage statistics filters action buttons on mobile screens

The action buttons in the window Usage statistics filters are now properly aligned when using mobile screens.

Fixed creating measurements issue

Fixed an issue where measurements created at the same time were not displayed in dashboards in the same row, and when using the option to create multiple measurements at once, only the first one from the list was displayed.

Fixed issue with group and device names translations

Fixed an issue with group and 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.

KPI widget shows correct previous value on hover over trend indicator

The KPI widget shows the correct previous value when hovering over the trend indicator, if no real-time updates have been received yet.

Typing numbers in scientific notation in subassets custom properties form now possible

It is now possible to type numbers in scientific notation (for example “1.234e2”) in the subassets custom properties form.

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 issue with smart rules editing

Editing smart rules did not work properly in case of missing (removed) devices. Now missing devices are removed automatically, and smart rules can be edited properly.

Fixed device availability connection status flashing

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

Time range expands and current range data is shown in "Data points graph" widget

In the “Data points graph” widget, when realtime is enabled and users double-click on a chart, the time range expands now and the data for the current range is shown.

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.

Fixed tooltip overflow on "Linear gauge" widget card

The tooltip in the “Linear gauge” widget no longer overflows the widget card. Moreover, the tooltip color changes according to the type of the declared range (default, red or yellow).

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.

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.

Refresh interval keeps configured value in map widget configuration

When opening a map widget configuration, the refresh interval was accidentally reset to 5s. This has been fixed and the refresh interval keeps the value previously configured.

Fixed issue with Add report button

The Add report button is now disabled when the user does not have the respective permissions.

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.

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

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 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 fragmentType query parameter

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

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.

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.

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.

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.

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.

Consistent behaviour of Enter key

In the Device management application, pressing the “Enter” key now consistently submits forms in dialogs and windows. Prior to this change users had to click the Submit button.

Improved error handling when publishing operations

The error handling when publishing operations to MQTT devices has been improved.

Bookmarks in right drawer

Users can now add a bookmark in the right drawer for any page in the platform.

Fixed issue with realtime notifications

Fixed an issue in the Java realtime notification SDK where a client would stop trying to re-establish a subscription after receiving a “402::Unknown client” error from the Cumulocity IoT platform. The impact of this issue was that future notifications would not be delivered to the client. Typically, the problem was observed after the subscription was moved from one Cumulocity IoT core node to another, for example after a core restart or a network outage. This issue has now been resolved, and the notification subscription is transparently restored with no impact to the client.

Filtering models applied to template models

In Analytics Builder, when filtering the models in the model manager by Mode and Status, the filter is now also applied to template models. Prior to this fix, the filter was only applied to models without template parameters.