Change logs

These change logs document all relevant changes for the Cumulocity IoT cloud deployments.

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.
  • Announcement - Deprecations, removals or important UI changes.
  • API change - Breaking changes in the APIs.

Displaying all changes since December 6, 2023

October 4, 2024

Spring Boot version update for Microservice SDK

The Spring Boot version used in the Microservice SDK has been upgraded to 3.3.3. This update also necessitated upgrading several third-party libraries and frameworks. The mandatory updates include:

  • Minimum required Java version: 17 (currently Java 8)

  • Jakarta EE 9+ baseline

  • Spring Security: 6.3.3

  • Spring Framework: 6.1.12 (currently 5.3.24)

  • HTTP Client: 5.3.1

Impact: Each of these updates may impact your microservices, potentially requiring code changes.

Rollout: The update will be available in Continuous Deployment (CD) versions higher than 1020.128.0 and in versions of the next annual release 2025.

Migration Resources: Refer to the following guides for assistance with the changes:

October 1, 2024

Advanced notice of changes to Notifications 2.0 tenant context subscriptions with no API filter

Notifications 2.0 subscriptions may specify the Cumulocity IoT APIs to subscribe to, for example alarms or measurements. Subscriptions may use a wildcard value (*) for the API selector, indicating that the subscription should include all available APIs. If the API selector is omitted from a subscription request, it is treated as equivalent to using the wildcard value.

Currently, a tenant context subscription using the wildcard API selector will deliver updates from a subset of the available APIs. See the Notifications 2.0 subscription REST API documentation for details on the current tenant context subscription behaviour.

In future, such subscriptions will also deliver updates from the operations API. This applies to subscriptions that were created before the change is enabled, as well as new subscriptions. For example, after this change is enabled, an application that POSTs the following request to the /notification2/subscriptions endpoint may receive operations updates, regardless of when the subscription was created:

{
  "context": "tenant",
  "subscription": "testSubscription",
  "subscriptionFilter": {
    "apis": [
      "*"
    ]
  }
}

Applications using the wildcard API selector in tenant context subscriptions should be prepared to receive operations updates in addition to the updates they were previously receiving. To avoid disruption, application developers should either:

  • ensure that their applications can handle operations updates, or

  • include an API selector

before this change is enabled.

The change will be enabled in the Cumulocity IoT CD deployments no earlier than January 15, 2025. It will also be included in the 2025 yearly release. A further announcement will be published when the change is enabled.

September 26, 2024

Added Subassets module as a plugin into DTM plugins

The subassets module is now a cumulocity official plugin. It can be integrated with default and custom cumulocity web applications to view subassets.

Added subassets module to DTM plugins component

A new subassets view module has been added to the DTM plugins component, which includes official DTM plugins and enables integration with both default and custom web applications. This module allows users to efficiently view and manage subassets. In future releases, it will replace the existing subassets view in other cumulocity applications.

Display the label instead of the key for the default location property

In the Subassets page, instead of the key of the default location property, its label is displayed for improved user experience.

Improved naming and consistency in asset model samples

For simplicity, “model” has been removed from the asset model sample names. Additionally, the descriptions and UI layout have been improved to ensure consistency.

Improved real-time behavior for changes to asset models

Real-time updates have been improved to ensure that changes made by concurrent users to asset models are immediately reflected.

Renamed microservice from 'dtm-ms' to 'dtm'

The DTM microservice has been renamed from “dtm-ms” to “dtm”. REST endpoint paths have been updated accordingly, replacing the “dtm-ms” segment with “dtm”. Users will not perceive any change. However, they may need to manually unsubscribe and uninstall the older version.

Simplified New asset models page

In the New asset model page, the Asset models and Asset model samples tabs have been removed for a more focused user experience as they are not required for creating a new asset model.

September 21, 2024

Alarm Input and Event Input blocks no longer use incorrect source time for alarm and event updates

Previously, the Alarm Input and Event Input blocks did not use the the correct source time for an update operation when the Ignore Timestamp checkbox was not selected. Instead, the creation time of the block was incorrectly used to schedule the input events. This has been fixed and alarm and event updates are no longer missed by the model. When the Ignore Timestamp checkbox is not selected, the input blocks now use the last update time of the block to schedule the input events in case of update operations.

September 19, 2024

Added documentation for REST-based LWM2M device registration

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

Custom firmware update URL in LWM2M device configuration is now deprecated

The custom firmware update URL has been replaced with a standard firmware definition that points to an external URL. Right now this parameter is still available and takes precedence over any other option, but it will be removed in future LWM2M agent versions.

Disabling the automatic configuration of the required interval for LWM2M devices

Cumulocity provides connectivity monitoring capabilities for which a required interval needs to be defined. For LwM2M device, this is automatically set by the LWM2M agent based on the registration lifetime. However, if the value is set manually, it will be overwritten by the LWM2M agent after each registration or registration update. This behavior can now be disabled both globally or for specific devices, allowing users to define the required interval independent of the registration lifetime.

LWM2M agent can now cancel observations using the "GET with observe option" method

Previously, the LWM2M agent could only cancel observations using the “reset” method. With this change, the LWM2M agent can now also use “GET with observe” method to cancel observations.

LWM2M service security improvement to ignore packets from certain source ports

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

LWM2M write operation using "Partial Update" mode is now fully supported

Previously, the LWM2M agent supported write operations in “Replace” mode only. With this change, write operations can now also be sent in the “Partial Update” mode using the “writep” command.

September 12, 2024

Firmware list migrated to grid view

To improve the user experience and to ensure consistency, the firmware list has been migrated from a simple list view to a grid view.

Enhanced branding editor

The branding editor allows users to create a unique and consistent branding across their applications, improving the overall user experience and making it easier to align the application’s appearance with corporate design guidelines.

We have made significant improvements to our branding editor, offering a more robust and user-friendly experience for managing brand identity across multiple applications.

New functionalities:

  • Configure unique branding for individual applications
  • Create, maintain, and easily switch between different branding configurations
  • Edit branding JSON objects directly from the UI and add custom CSS
  • Import/export branding variants
  • Automatically invalidate cookie consents when updating privacy policies
  • Implement light and dark theme choices
  • Generate color shades based on primary brand color with fine-tuning options

Functional improvements:

  • More intuitive interface for managing brand identity
  • Enhanced flexibility in customizing and applying branding elements

Plugins without modules are now supported

To simplify plugin development and deployment, support for module-less plugins has been added. With this change, plugins no longer require a module to function, allowing to implement and deploy plugins more easily. This impacts plugin developers who can now create plugins without the overhead of a module and users who can benefit from a wider variety of available plugins that are simpler to install and use.

September 5, 2024

Added breadcrumbs to Streaming Analytics application

To improve the user experience and maintain consistency with the default Cumulocity IoT applications such as Cockpit, breadcrumbs have been added to the Streaming Analytics application. You can use the breadcrumbs to easily navigate up the hierarchy.

Rename Analytics Builder models and EPL apps

To improve the user experience, the links in the model editor and EPL editor for renaming a model or EPL app have been renamed to Model settings and App settings. Previously, these links displayed the name of the model or app. These names are now displayed at the top of the editor page.

August 22, 2024

Cumulocity IoT schematics now handle Angular standalone projects by disabling standalone mode

Previously, adding Cumulocity IoT schematics to Angular projects initialized with the standalone flag set to true failed. This issue has been addressed. Now, when integrating Cumulocity IoT schematics into standalone Angular projects, the standalone flag is automatically set to false. Full support for standalone projects will be implemented in future updates. This interim solution allows developers to use Cumulocity IoT schematics with projects initially set up as standalone, though with standalone features disabled.

August 13, 2024

Moved Add asset module as a separate plugin into DTM plugins

The Add Asset module has been moved from the Digital Twin Manager (DTM) application to the newly created DTM plugins component. This component consists of modules from DTM as official plugins, enabling their integration into default and custom web applications. The Add Asset button will continue to be available in the standard DTM interface.

August 8, 2024

Added hook service for alarm details button and alarm list indicator

To provide more flexibility for customizing the alarm list and details views, hook services have been added for the alarm details button and the alarm list indicator. This change allows you to modify the rendering and behavior of these UI elements by implementing the respective hook service interfaces. Existing alarm list and details views are not affected by this change and will continue to work as before, unless you explicitly customize them via the new hook services.

August 1, 2024

Add acknowledgement of service terms to microservice upload dialog

To ensure users agree to the service terms for microservice deployment when uploading a microservice, a new text acknowledgment has been added to the microservice upload dialog.

Reset password on next login option is now the default if Password reset link as email is deselected

Previously, a new user received an email with a link to set their password. Now when the checkbox Send password reset link as email is cleared, the User must reset password on next login option is selected by default. This means the new user must change their password during their first login.

Concatenate each value type with a string type using the Expression block in Analytics Builder

The Expression block in Analytics Builder has been updated to allow you to concatenate string and non-string values, similar to EPL. This is useful, for example, if you want to specify an expression like the following: “The current temperature is " + input1 + " degrees Celsius”.

Specify maximum values for the Counter block in Analytics Builder

The Counter block in Analytics Builder has been updated to allow you to set a maximum value for each counter independently. This change was made because it was difficult and cumbersome to create periodic behavior in Analytics Builder, and it gives more control over counting in general. The following new parameters are available for this purpose:

  • Maximum Count (input field)
  • Loop Count (checkbox)
  • Maximum Number Same (input field)
  • Loop Number Same (checkbox)

The counter in question can then loop. Depending on the setting of the corresponding checkbox, the counter either resets its corresponding output port (Count or Number Same) to one, counting the first input after reaching the maximum value, or it stops counting when reaching the maximum value and must then be reset manually. For compatibility, the previous behavior remains as the default. Note that the Reset input port resets both counters. If this is a problem, you must use a separate Counter block for each counter. See the description of the Counter block for detailed information on the new parameters.

July 31, 2024

Automatic stop of permanently failing offloadings

Offloading pipelines may fail permanently, for example, due to an invalid offloading configuration or a wrongly configured data lake. In a future release Cumulocity IoT DataHub will automatically stop permanently failing offloading pipelines.

July 30, 2024

Added support for device certificate authentication

Cumulocity IoT now supports the ability to infer the full certificate chain from an intermediate certificate, enabling devices that are only able to send the device certificate to connect to Cumulocity IoT. For full details refer to Device authentication.

July 25, 2024

Alarm list widget configuration now supports showing or hiding child alarms

The “Alarm list” widget is used to display alarms in dashboards and other places in the Cumulocity IoT UI. Previously, child alarms were always shown which could lead to information overload for users monitoring many alarms. With this change, a new toggle has been added to the widget configuration which allows showing or hiding the child alarms in the alarm list. This provides users with more flexibility to customize the widget to their specific use case and makes it easier to focus on the relevant top-level alarms.

Cockpit application split into plugins

The Cockpit application has been split into further plugins. This allows admins to tailor the Cockpit application to their needs without any coding effort. They can now easily remove certain plugins and thus certain features which they do not want to include in their Cockpit application. The following plugins are now available:

  • Cockpit widgets: Angular widgets used in the Cockpit application.
  • Cockpit alarms: Alarms functionality in the Cockpit application.
  • Sensor phone: Wizard for connecting a smartphone to the platform.
  • Child devices: List view of children of devices.
  • Assets navigator: “Groups” navigation entry, allowing to navigate through an asset hierarchy.
  • Data point library: To define certain features of data points.
  • Bookmarks: To bookmark views.
  • Location: To view location of devices and assets.
  • Search: To search for assets.
  • Reports: Reports list and report items in the navigator.

New alarm and event selector available for custom applications

To enable application developers to more easily select alarms and events in their custom applications, a new reusable alarm and event selector component has been introduced. For details refer to the Cumulocity IoT Codex.

July 22, 2024

Microservice name validation

Starting with Q1 2025, the Cumulocity IoT platform enforces name and context-path manifest fields naming restrictions for custom microservice deployments. You can verify the correctness of your microservices by uploading them via the UI or REST API. If this is successful, your configuration is correct. For details on the name and context-path fields, refer to Microservice manifest > Settings.

July 18, 2024

Updated the section on internationalization in the Cumulocity IoT Codex

To improve the documentation around internationalization, the “Internationalization” section of the Cumulocity IoT Codex was updated. The changes provide more detailed information and guidance on how to handle translations and localization in applications. This impacts developers who want to make their applications available in multiple languages, giving them better resources to understand and implement internationalization best practices.

July 12, 2024

Remove the ability to explicitly set a password for a device user

To improve security, user administrators can no longer explicitly set passwords for device users. This change prevents an attacker from having access to all device users, in case the administrator account is compromised. In case of losing the device password, the device must be registered again.

July 11, 2024

Microservice manifest advanced user input validation

Making Cumulocity IoT more secure we have added a check on upload to ensure microservice settings do not contain any line feed characters such as HttpGet, exec, and TCPSocket of type Probe, aligned with items in the Kubernetes PodSpec.

July 8, 2024

Moving SNMP documentation

The documentation of the SNMP device protocol has been moved from the user documentation to the public GitHub repository: cumulocity-examples.

July 4, 2024

Added default sample asset models to facilitate asset modeling

In the Asset model samples page, the “Wind Turbine” and the “Solar Power Plant” sample asset models have been added. These samples serve as an example to help you quickly get started with your own asset modeling.

June 27, 2024

Restricting access to Spring Boot actuator endpoints

API Change

Improving the security for the Microservice SDK we have decided to restrict the initial configuration of the Spring Boot actuator endpoints (POST access to the /loggers endpoint) to the administrator roles only.

Version numbers in Streaming Analytics application moved to platform details file

The version numbers for the frontend and backend are no longer displayed in the right drawer of the Streaming Analytics application. Instead, details on all components can now be downloaded via the Download platform details button. This change simplifies the UI for the majority of users.

June 20, 2024
June 18, 2024

Service-level agreement for Microservices deployment

The Service-level agreement for Microservices deployment now provides a more precise definition on what is included in the Microservice Hosting functionality for your custom microservices. It also describes how you can benefit best from the service.

June 14, 2024

Enhancement of Home page to support investigation of offloading status

The Home page has been enhanced so that you can investigate the current status of your offloading pipelines. The status includes which offloadings are currently running, which ones have recently failed, and which ones have completed successfully.

Exploration of additional result columns

The editor for managing additional result columns of an offloading pipeline has been enhanced with convenience tooling for exploring nested data. Using sample data retrieved from the corresponding Cumulocity IoT base collection, you can interactively browse through the structure of the data in order to determine which specific sub-structure you want to offload.

June 11, 2024

Model editor in Streaming Analytics application displays only valid toolbar icons in read-only mode

Previously, icons that could not be used when a model was active (that is, in read-only mode) were shown as disabled in the model editor’s toolbar. To improve usability when in read-only mode, icons that cannot be used (such as the save icon) are no longer displayed in the toolbar.

Resizable description field for models in Streaming Analytics application

When adding a new model or when editing the name of a model in the Streaming Analytics application, you can now resize the Description field. This is helpful when editing or viewing a longer description, including the case of the samples that have very detailed descriptions.

June 10, 2024

Removal of Microservice API version 1 in Cumulocity IoT SaaS instances and next yearly release 2025

As published earlier, see release 10.15, Cumulocity has announced the availability of Microservice API version 2 and the deprecation of API version 1 to comply with new security requirements. Microservice API version 2 provides an improved microservice container security context restricting the invocation of privileged Linux Kernel APIs. Today Cumulocity announces the creation of alarms when subscribing a tenant to microservices still using API version 1. In Q3 2024 Microservice API version 1 will be removed from Cumulocity IoT SaaS instances and in the yearly 2025 release. If not done yet migrate your microservices to API version 2. Refer to Microservice migration to API version 2 in the user documentation to understand how to accomplish this. Otherwise your microservices in Cumulocity IoT SaaS instances may stop functioning in Q3 2024 or in environments using the yearly 2025 release.

Deprecation of TrendMiner offloading mode

For the offloading of the measurements collection Cumulocity IoT DataHub offers a TrendMiner mode, which is designed for the specific interaction with TrendMiner. This mode is deprecated and will be removed in a future release as the integration with TrendMiner will be discontinued.

June 6, 2024

Device management services functionality is now available as plugin

The services component was previously an integral part of the default Device Management application. With this change, the functionality for services has been modularized into a plugin. By default, users will still have access to services within the Device Management application. However, if not needed, the functionality can be removed by deactivating the plugin. This approach offers flexibility for users who may or may not require certain functionalities within the application.

Separated Advanced Software Management functionality as a plugin

The Advanced Software Management functionality was previously an integral part of the default Device Management application. With this change, the Advanced Software Management service has been restructured to function as a separate plugin. It remains included by default but now offers the flexibility to be added or removed as needed.

Alarms can now be referenced via a link

Previously, alarms could not be shared as they had no unique link to reference them, for example in mails or chats. With this change, each alarm gets an unique link. This allows to share alarms and navigate between alarms more easily.

Alert for long-running managed object operations

In some situations, managed object operations in Cumulocity IoT could take an unexpectedly long time without providing any feedback to the user. For more transparency, an alert is now shown in the UI when a certain operation exceeds a specific duration.

Allow self-imported plugins to be added even if a user already has plugins

If a user upgraded one of the default web applications (for example, Cockpit) after it had been cloned, it would only include the plugins that the application had offered during the initial clone/installation of the application. If additional self-imported plugins were introduced in the upgraded version, these would not have been present when using the application.

This especially caused issues when features of applications which were previously present as standard Angular modules were migrated to self-imported module federation plugins, as these features were missing until the plugin was manually installed to the application.

To fix this issue, an exclude list for these self-imported plugins has been utilized, in addition to the already existing include list used for the usual plugins.

Asset selector shows the selected element by default

Previously, the asset selector did not show the currently selected element by default, requiring users to always manually search for and select the desired asset. With this change, the asset selector now automatically displays the selected element when opened. This improvement streamlines the user workflow by eliminating the need to repeatedly locate and select the same asset, saving time and effort.

Data grid now support expandable rows

To provide a better user experience when displaying hierarchical data in a data grid, expandable rows have been introduced. With this change, users can now expand or collapse rows in the data grid to show or hide nested information. This allows for a more compact and organized presentation of data, especially when dealing with complex hierarchies or large amounts of related information. The expandable rows feature seamlessly integrates with the existing data grid component, providing a consistent and intuitive way for users to interact with and navigate through the displayed data.

Documented shell application styling via plugins

Documentation has been added on how to style the shell application via plugins. For details, refer to the Cumulocity IoT Codex.

Extended information on dynamic forms in Codex

The Codex documentation provides information about developing applications with the Cumulocity IoT platform. To make it easier for users to understand and use dynamic forms in their applications, the Dynamic forms page in the Codex documentation has been extended. For details, refer to the Cumulocity IoT Codex.

New dashboard manager with list of device type dashboards

A dashboard manager view has been added to streamline the management of device type dashboards. This view aggregates and displays a list of all dashboards assigned to specific device types. From this list, dashboard templates linked to device types can be viewed, edited by navigating to a particular instance and templates can also be deleted if needed.

Redesign of the alarms feature

As announced earlier, a redesign of the alarms feature has been introduced with both visual and functional enhancements.

Visual and UX enhancements:

  • The way alarms are displayed in the alarms view and widgets has been redesigned.

Functional improvements:

  • The alarms view now only shows one single list of alarms, in which filters can be applied.
  • A details section has been introduced which contains all information related to the alarm.
  • The functionalities of the “Alarm list”, “All critical alarms”, and “Recent alarms” widgets have been merged into a single, comprehensive widget called “Alarm list”.
  • The “Alarm list” widget has been migrated to Angular.
  • The real-time functionality has been replaced with an auto-refresh functionality.
  • Already existing widgets: “Alarm list”, “All critical alarms”, and “Recent alarms” will be automatically updated and migrated to the new version of the “Alarm list” widget.

Reports page extracted into a separate plugin

As announced earlier, the report module has been extracted from the Cockpit application and added as a separate plugin. This is a first step towards removing the reports module entirely and replacing it with the dashboard manager. This change might be a breaking change as the reports module is no longer a part of @c8y/ngx-components/context-dashboard, but is be part of @c8y/ngx-components/report-dashboard.

This change does not affect the layout and UX of the Cockpit application nor does it add any new functionalities. As a side effect, a performance improvement might be noticed as reports from now on will be loaded lazily (that is, only when users navigate to the Reports page).

Support for loading dynamic options from app-specific paths

To provide more flexibility for configuring applications, Cumulocity IoT now supports loading dynamic options from application-specific paths. With this change, each hosted application will load its dynamic options from a path that includes the application context path. This allows application-specific configurations to be loaded dynamically. The Cockpit application would now load it’s dynamic options from: /apps/public/public-options@app-cockpit/options.json while it previously did so from: /apps/public/public-options/options.json. This change was done as a preparation for upcoming changes to the branding manager.

June 3, 2024

Removal of deprecated JWT login mode

JWT authentication with Cumulocity IoT has been deprecated since release 10.6 and will be removed in Q3 2024 for the SaaS instances and in 2025 for the yearly releases. This authentication method is not to be confused with SSO (single sign-on) or OAI-Secure authentication, which are both recommended and still supported. This change will only impact you if your organization used an early version of SSO on Cumulocity IoT. For customers on the public cloud instances we will get in touch with you if you are using this type of authentication. For self-hosted or self-managed instances you need to do the following: Ask your Operations team to run this script. This will verify whether any tenant collections have an authenticationProviders configuration and if any tenant has the tenant options configured with the category token.publicKey. If either an authenticationProvider configuration or the tenant option token.publicKey category exists this indicates that the deprecated JWT is, or was, used in the past. In this case you need to check your external services for use of the JWT authentication and change it to use either SSO or OAI-Secure. These two methods provide a better and more secure approach to authentication. These methods are documented here:

May 30, 2024

Additional columns in preview step of Import asset models

In the Import dialog for asset models, users can now see Child asset models and Asset properties columns in the preview step.

Improved dropdown for child asset models and asset properties

When adding child asset models or asset properties to an asset model, those already added will no longer appear in the dropdown list.

Updated labels for buttons

The following action button labels have been changed:

  • In the Assets page, Import assets has been changed to Import.
  • In the Asset Models page, Import asset models and Export asset models have been changed to Import and Export respectively.
  • In the Asset properties page, Import asset properties and Export asset properties have been changed to Import and Export respectively.
May 21, 2024

Replace device functionality available as plugin

The “Replace device” functionality is now delivered as a self-hosted plugin by the Device Management application. This way, the functionality can easily be removed from the application if not needed.

Additionally, the device replace wizard was made more extensible by introducing hookable interfaces (hookDataGridActionControls and hookService).

May 16, 2024

Support for OPC UA operations directly on generated devices

It is now possible to directly create operations for generated OPC UA devices. This does not apply to all OPC UA operations. Only node-specific operations can be executed on that level. General operations such as address-space scan are still only allowed on the OPC UA Server. An additional configuration (gateway.operation.validateDeviceOperationNodes) has been added to enable/disable a validation check if the node-specific operation is done on a node which belongs to the device. If the check is enabled the opcua-device-gateway executes the operation after validation. If the node doesn’t belong to the device node list an alarm is created.

Bookmarks available from User menu in Streaming Analytics application

The right drawer of the Streaming Analytics application, which is displayed when you click the User button, now includes a Bookmarks section. This means that the bookmarks you have added in other Cumulocity IoT applications are now also available in the Streaming Analytics application, and you can now also add bookmarks for the pages in the Streaming Analytics application.

New EPL actions for creating and parsing the c8y_Position fragment

The ManagedObject event has a unique way of handling c8y_Position fragments that have the parseable float values added to their position property, and all other values added to their params property. All other events of the Cumulocity IoT transport API simply add the fragment as a whole to their params property. This has made it cumbersome to robustly copy c8y_Position to a ManagedObject from another event and vice versa. To make this easier, two new helper actions have been added to the ManagedObject event to populate ManagedObject from a c8y_Position object, and conversely create the object from the ManagedObject event.

  • action setC8yPosition(any c8y_Position)

    This new action sets the ManagedObject using the c8y_Position object. This must be of the form dictionary<string, any>, but is validated prior to use. Example:

    on all Event(type="locationUpdate") as evt
    
    { ManagedObject mo := new ManagedObject;
      mo.id := evt.source;
      mo.setC8yPosition(evt.params.getOrDefault("c8y_Position"));
      send mo to ManagedObject.SEND_CHANNEL; }
    
  • action getC8yPosition() returns dictionary<string, any>

    This new action produces a c8y_Position style object from the ManagedObject. Example:

    evt.params["c8y_Position"] := mo.getC8yPosition();
    
May 13, 2024

New switch for disabling/enabling case-sensitivity in usernames

To enhance the user experience, a switch has been added to the authentication settings, which allows to disable/enable case-sensitivity in usernames. When the switch is turned on, username validation will now treat uppercase and lowercase letters as distinct, requiring users to enter their username exactly as it was set. This affects all users.

Deprecated hookDeviceGridAction has been removed

The deprecated hookDeviceGridAction has been removed. Instead the recently introduced hookDataGridActionControls should be used. It gives more control over data grid actions, such as allowing actions to be added to any data grid or to override existing actions.

April 26, 2024

Set supported Cloud Remote Access protocols using SmartREST

A new SmartREST template has been added. Using the template ID 150, it is now possible to set the list of Cloud Remote Access protocols supported by a device.

Reports page extracted into a separate plugin

In the upcoming version the report module is extracted from the Cockpit application and added as a separate plugin. This is a first step towards removing the reports module entirely and replacing it with the dashboard manager. This change might be a breaking change as the reports module will no longer be part of @c8y/ngx-components/context-dashboard, but will be part of @c8y/ngx-components/report-dashboard.

This change does not affect the layout and UX of the Cockpit application nor does it add any new functionalities. As a side effect, a performance improvement might be noticed as reports from now on will be loaded lazily (that is, only when users navigate to the Reports page).

April 25, 2024

Dynamic forms page in Codex extended with additional information

The Components > Forms > Dynamic forms page in the Codex has been extended with additional details and examples to better explain the concept and usage of dynamic forms.

Private smart rules no longer require the contextData property

In the past, private smart rules had the property contextData in c8y_Context, even if the rule did not use it. This is no longer required. Private smart rules can now be created without the contextData property, to avoid storing redundant data in the database. This change only affects the creation of new private smart rules. Existing smart rules are not impacted.

UI improvement for ordering of complex properties

Users can now order the complex property keys by dragging and dropping them using the drag icon which appears on hovering over the row.

April 4, 2024

Added support for retrieving JWT session token with X.509 certificates for devices

Support has been added for retrieving JWT session tokens with X.509 certificates via REST API for devices. For details, refer to the Device authentication user documentation.

Option to ignore case of username or alias on login

To simplify the login process, tenant administrators can now activate an option which allows users to log in with case-insensitive usernames or aliases.

ZIP option now available when building an application

It is now possible to build an application with the –zip argument. This will generate a ZIP archive which contains the application and its dependencies in addition to the regular build artifacts.

New utility functions for the EPL TimeFormat event library

The following utility functions have been added to the TimeFormat event library to help with comparing and manipulating datetimes. As with the existing functions, the new utility functions work for the local time zone, an arbitrary time zone and, where appropriate, the UTC time zone.

  • dateComponent: Gives the datetime for the previous midnight in the time zone at the given datetime.
  • timeComponent: Gives the number of seconds since the previous midnight in the time zone at the given datetime.
  • daysSinceEpoch: Gives the number of Julian days since the beginning of the epoch at the given datetime.
  • getOffset: Gives the offset in seconds of the time zone from UTC at the given datetime, taking into account any daylight savings that may be being applied.
  • getRawOffset: Gives the base offset in seconds of the time zone, that is, without daylight savings applied.

For example, there are two ways to check if it is midnight in your local time zone:

float now := currentTime;

// Method 1
if TimeFormat.dateComponent(now) = now
{
     // It's midnight.
}
// Method 2
if TimeFormat.timeComponent(now) = 0.0
{
     // It's midnight.
}

For usage information, see the API Reference for EPL (ApamaDoc). This is available in Apama 10.15.5.

March 28, 2024

Alarms redesign and improvements

In the upcoming version, a redesign of the alarms feature will be introduced with both visual and functional enhancements.

Breaking change

  • The AngularJS widget implementation is no longer available. To use the “Alarms” widgets in a custom application, users must import the AlarmsWidgetModule from @c8y/ngx-components/widgets/implementations/alarms. To use the new alarms view only, users must import the AlarmsModule from @c8y/ngx-components/alarms.

Visual and UX enhancements:

  • The way alarms are displayed in the “Alarms” view and widgets has been redesigned.

Functional improvements:

  • The “Alarms” view now only shows one single list of alarms, in which filters can be applied.
  • A details section has been introduced which contains all information related to the alarm.
  • The functionalities of the “Alarm list”, “All critical alarms”, and “Recent alarms” widgets have been merged into a single, comprehensive widget called “Alarm list”.
  • The “Alarm list” widget has been migrated to Angular.
  • The real-time functionality has been replaced with an auto-refresh functionality.
  • Already existing widgets: “Alarm list”, “All critical alarms”, and “Recent alarms” will be automatically updated and migrated to the new version of the “Alarm list” widget.

Angular 17 upgrade

In a future version, we will update Angular to version 17. This update brings improvements and new features but may also introduce breaking changes that could impact your existing implementations.

To ensure a smooth transition and help you to adapt your implementations, we will provide an upgrade documentation when this change happens. This documentation will help you navigate through the changes and update your codebase accordingly.

Dashboards redesign and improvements

In the upcoming version, we will introduce redesigned dashboards with both visual and functional enhancements as well as new functionalities.

Visual and UX enhancements:

  • We have redesigned the way dashboards are edited.

Functional improvements:

  • The lock/unlock feature has been replaced with an edit mode for better control and clarity.

New functionalities:

  • Possibility to enable and disable dashboard template for device dashboards.
  • Versioning to manage and track dashboard changes.
  • Edit mode with undo/redo functionality for flexible adjustments.

For details refer to Working with dashboards.

March 27, 2024

Advance notice of reduced storage limits for Notifications 2.0 and microservice-based data broker

Messages processed by Notifications 2.0 are stored persistently by the Cumulocity IoT Messaging Service until they have been delivered to, and acknowledged by, all interested consumers. Likewise, messages processed by the microservice-based data broker are stored persistently until they have been delivered successfully to the destination tenant.

The current persistent storage limits for these services are considered too large for typical use cases, which can lead to excessive resource consumption and consumers being forced to process outdated messages after a disconnection.

Therefore, these limits will be lowered to better align with the expected usage patterns of the services.

These changes will take place not less than three months from the date of this announcement, on or after July 1st, 2024.

Message backlog quota

Persistent messages are stored in a “backlog” until they are received and acknowledged. The maximum size of a backlog is determined by the “backlog quota” limit, which directly affects the number of unacknowledged messages that can be stored and therefore the resource consumption of the platform. If the quota limit is reached, no new messages can be added to the backlog until some older messages have been consumed and acknowledged.

For Notifications 2.0, a separate backlog exists for every unique subscription name used with the /notification2/subscriptions API. This backlog is shared by all subscriptions using the same subscription name, and by all consumers attached to that subscription. For the microservice-based data broker, a separate backlog exists for each data broker connector.

Summary of changes to message backlog quota limits:

Service Current Limit New Limit
Notifications 2.0 2 GiB 25 MiB
Microservice-based data broker 2 GiB 50 MiB

For example, assuming an average message size of 200 bytes, each Notifications 2.0 subscription will be able to retain approximately 130,000 unacknowledged messages in its backlog. Similarly, each microservice-based data broker connector will be able to retain approximately 260,000 messages.

Message time-to-live

Alongside the backlog quota reduction, a new default message “time-to-live" (TTL) limit will be introduced. Any unacknowledged messages will be automatically deleted if they have been on the backlog for longer than the TTL limit. This policy helps to limit overall resource usage and reduces the need to process outdated data after a prolonged disconnection of a consumer or destination tenant.

Summary of changes to message TTL limits:

Service Current Limit New Limit
Notifications 2.0 ∞ (no limit) 36 hours
Microservice-based data broker ∞ (no limit) 36 hours

Additional details

The message backlog quota and TTL are configurable for each Cumulocity IoT tenant. Message backlog usage will be monitored during the three-month transition period, to identify tenants that may exceed the new limits when they are enabled. The owners of such tenants will be contacted to understand their use cases and whether a non-default limit could be appropriate.

Please contact product support if you have any questions or concerns about these changes.

March 21, 2024

Improved button text in Cockpit setup wizard

The text on the button in the Cockpit setup wizard has been updated. This change improves the clarity and consistency of the text for users going through the setup flow.

Improved measurement display in Linear Gauge and Silo widgets

The measurement display line size has been increased in both the “Linear Gauge” and the “Silo” widget. This enhancement improves readability, making it easier for users to interpret measurements at a glance.

Improvements to input range component

The input range component (c8y-range) can be used to show a slider to configure a range. The styling and documentation for this component has been improved to better suiting the overall styling of components and forms.

Introduce service registry with a hook for registering services

To improve the management and discoverability of services in Cumulocity IoT, a new service registry has been introduced allowing services to register with the platform via hooks.

EPL improvement to string.toDecimal() method

Previously, performing string.toDecimal() for a string with an invalid conversion resulted in a ParseException error. This now returns “0.0”. This was done to make the experience of using toDecimal() similar to using toFloat(). If you want the previous strict behavior, use decimal.parse() instead.

Paste the JSON code of an Analytics Builder model from the clipboard

In the Analytics Builder model manager, the Import model command in the toolbar has been changed to a dropdown menu. This dropdown menu contains a new Paste command. If you click this command and the clipboard contains valid JSON code for a model, a card for the pasted model is shown in the model manager. This change complements the accessibility enhancement that allows the JSON for an Analytics Builder model to be copied to the clipboard by allowing the JSON to be pasted back into Analytics Builder after any changes have been made. In addition, the dropdown menu contains an Upload command. This has the same functionality as the Import model command from previous versions. See also Pasting a model and Uploading a model.

March 14, 2024

Enhanced XSS protection in Asset notes widget

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

Improved JSDoc annotations

The JSDoc annotations have been improved. Changes include fixing broken links, updating outdated information, adding missing code snippets, and improving overall clarity. These improvements aim at providing developers with better references and guides when working with the Web SDK.

Improved sorting of properties in complex custom property in Digital Twin Manager

In the Subassets page of the Digital Twin Manager, 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.

Version numbers moved to the platform details file

The version numbers for the frontend and backend are no longer displayed in the platform UI. Instead, details on all components can be downloaded via the Download platform details button. This change was motivated by a component split resulting in many different components following different version number schemes. However, custom apps developed with the Web SDK may show a default version number if desired. Support requests should now always include the platform details information.

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.

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.

Migration of the Tracking tab to Angular

The Tracking tab in the device details has been migrated to Angular. The obsolete AngularJS module AssetTrack has been removed from the imports of the Device Management application (import @c8y/ng1-modules/devicemanagement-tracking/cumulocity.json). It is deprecated and will be removed in the future. With this change, an issue with incorrect results of custom date range filters has been fixed. Moreover, position marker popups have been made more informative.

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.

March 7, 2024

Obsolete AngularJS module AssetTrack (c8y.parts.tracking) has been removed

The AngularJS module AssetTrack (c8y.parts.tracking) has been removed as it is now considered obsolete. To include device tracking in your applications you can now use the Angular standalone TrackingComponent (@c8y/ngx-components/tracking) or directly provide the trackingFeatureProvider environment provider.

February 29, 2024

Copy the JSON code of an Analytics Builder model to the clipboard

In the Analytics Builder model manager, the Copy command has been added to the actions menu of a model. This is an accessibility enhancement that allows you to copy the JSON for an Analytics Builder model to the clipboard so that you can quickly paste it into a third-party editor. The JSON can then be read, for example, by a screen reader or in a higher contrast environment. The new Copy command is also available to read-only users. In addition, the Download command, which also appears in this actions menu, is now also available to read-only users. See also Copying a model and Downloading a model.

EPL events no longer throw exceptions from the isCreate and isUpdate actions

The Alarm, Event, ManagedObject and Operation events now no longer throw exceptions from the isCreate() and isUpdate() actions. If the event being checked was generated in EPL code, these two actions now simply return false. try ... catch blocks around these calls are no longer necessary if the event being checked was generated in EPL code. EPL code that uses these actions therefore behaves more robustly because it no longer throws exceptions that, if not caught properly, cause the monitor or app to terminate. In the unlikely case that the try ... catch block is used to intentionally check for internally generated events, you need to change the check to the following:

if not (evt.isCreate() or evt.isUpdate()) { ... }

New Analytics Builder filters for selecting the input source or output destination

In Analytics Builder, the dialog box that appears when you select a different input source or output destination for an input or output block now allows you to filter the entries that appear in this dialog box. By default, the dialog box displays all defined devices, device groups, smart groups and assets. This is the same as the previous behavior. If you also want to display other managed objects in the dialog box, you can now select the “Other” checkbox. See also Editing the parameters of a block.

Streaming Analytics microservices upgraded to use Red Hat UBI 9

The Apama-ctrl microservices now have Red Hat UBI 9 as their base operating system. Previously, this was Red Hat UBI 8. With version 9, security has been improved.

February 13, 2024

Switching to Linux cgroup v2