Release notes

These release notes for Cumulocity Release 2025 include information on all relevant changes, such as new features, improvements, and fixes, that have been implemented in the Cumulocity platform 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.
  • Fix - Bug fixes.
  • Announcement - Deprecations, removals or important UI changes.
  • API change - Breaking changes in the APIs.

Displaying all changes since Release 2024.0


2025.0

Two new request counters for usage statistics operationsCreatedCount, operationsUpdateCount, introduced for REST endpoints in an earlier version (10.20.611.0), are now fully implemented. These counters are incremented in the following way:

  • operationsCreated: When operations are created via REST by POST request on a single operations API (/devicecontrol/operations) or the bulk operations API (/devicecontrol/bulkoperations).
    • Creating bulk operations leads to asynchronously creating individual operations in the background, and Cumulocity is counting each created operation individually.
  • operationsUpdated: When a single operation is updated via REST, or via MQTT standard SmartREST static templates (501-507), or via MQTT custom SmartREST templates.
    • Template 507 can cause multiple operations updates, so each updated operation is counted separately.

Previously, when retrieving the total number of alarms the type parameter could only take a single value, despite the documentation stating otherwise. This issue has been fixed. The type parameter now accepts multiple, comma-separated values.

GET /alarm/alarms/count?type=c8y_UnavailabilityAlarm,c8y_TemperatureAlarm

Previously, the endpoint for retrieving stored files metadata did not return the correct data when filtering by ID. This issue has been fixed and the correct data is now returned.

When users with inventory roles permission for the API Measurement and the fragment * were triggering a query to the Measurement API using the filter valueSeriesFragment, this resulted in a NullPointerException and error code 500. The issue has been fixed and the filter can be used properly.

Previously, when an Enterprise tenant created a subtenant with a tenant policy that tried to override the default tenant option the tenant creation failed. This issue has been fixed an creating a subtenant with a tenant policy overriding the default tenant option now works properly. work as before.

As previously announced, applications utilizing the wildcard API selector in Notifications 2.0 tenant context subscriptions will now start receiving operations updates in addition to the updates they were already receiving. This change applies to both existing and new tenant context subscriptions.

The appearance of the SSO (single-sign-on) login button has been unified with the Cumulocity application styles.

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.

Added confirmation dialog when deleting a data broker connector

In the data broker connector configuration, there was no warning message displayed when attempting to delete a connector, which could lead to accidental deletions. This change introduces a confirmation dialog that is shown when trying to delete a data broker connector, ensuring that connectors are no longer unintentionally removed.

Added information about certificate management

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

Added operation request counters to usage statistics

Two new properties, operationsCreatedCount and operationsUpdateCount, have been added to all REST endpoints which will return detailed request counters for usage statistics. In a first implementation step, the Cumulocity platform returns these properties with 0 values. In a future implementation, counting logic in reaction to REST requests and MQTT messages creating and updating operations will be added.

Added support for device certificate authentication

Cumulocity 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. For full details refer to Device authentication.

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.

Added two new columns to the Usage Statistics page

To provide more detailed insights into platform usage, the Usage statistics page for Enterprise tenants has been extended with two new columns: “Operations Created” and “Operations Updated”. These columns present the number of operations that have been created and updated, respectively.

This change enhances the granularity of the usage statistics request counters, enabling better analysis and understanding of platform activity. Existing usage statistics data and functionality remain unaffected by this addition.

Adjusted buttons in the Login screen and TFA settings screen

Buttons and control sizes have been adjusted to fit the Login screen and the TFA settings screen available in the user settings.

Administrators cannot change passwords for other users

For security reasons, administrators can no longer change passwords of other users. The users are only allowed to change their own passwords. However, administrators can still enforce the users to change their passwords on their next login in case of any anticipated breaches.

Alarms counts in managed objects in sync with alarm counts in the database

The alarm count in managed objects could get out of sync with the actual count of alarms in the database. This issue has been fixed and alarms counts in managed objects are now in sync with alarm counts in the database.

Aligned layout in single sign-on configuration page

Information on roles assignment in single sign-on configuration has been updated to align with the new layout of the single sign-on configuration page.

Always return null values for missing measurements in series

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

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.

Application access list of global roles only shows applications

Previously, the Application access list of a global role showed both applications and microservices. This has been changed to only show applications in the Application access* list.

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

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

Changes to Notifications 2.0 tenant context subscriptions with event API filter

Notifications 2.0 subscriptions may specify the Cumulocity APIs to subscribe to, for example events or measurements. If the events API was specifically included as the only API in a tenant context subscription filter, a type filter was also required to be set in that filter to make the subscription work. The restriction requiring a type filter when subscribing to the events API in the tenant context has been removed. Tenant context subscriptions to the events API can now be created without specifying a type filter.

Changes to Notifications 2.0 tenant context subscriptions with no API filter

Notifications 2.0 subscriptions may specify the Cumulocity 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.

A tenant context subscription using the wildcard API selector now includes updates from the operations API in addition to those from events, alarms and managedobjects. Applications using the wildcard API selector in tenant context subscriptions should be prepared to receive operations updates in addition to the other APIs.

See the Notifications 2.0 subscription REST API documentation for details of tenant context subscriptions.


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.

Contextual help is available again for the localization view in the Administration application

After the migration of the localization view to the Administration application, the contextual help button was unintentionally removed. This issue has been fixed and the context help is available again.

Correct error message when deleting an inventory role or a global role

In the event of an error while deleting an inventory role or a global role, the message always stated that the role couldn’t be deleted because it was assigned to a user. This fix ensures that the error message will now reflect the actual cause of the problem.

Correct HTTP response code sent on missing fields in CRL (Certificate Revocation List) entries

A wrong HTTP response code was sent when fields were missing in the CRL (Certificate Revocation List) entry. This behavior has been fixed now.

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.

Custom applications are no longer unintentionally cleared on updating a user profile

Fixed an issue where the custom applications in a user profile were cleared when other fields in the user profile were updated.

Custom properties tab in tenant details only shows tenant-relevant custom properties

Previously, the Custom properties tab in the tenant details showed all custom properties, including those not relevant for tenants (for example, those for events or alarms), which could be confusing. With this change, only custom properties that are actually relevant for tenants are displayed in this tab. This improves clarity and usability for users managing tenant-specific custom properties.

Data broker message forwarding no longer stops after platform network reconfiguration

Due to an issue, data broker connectors stopped forwarding messages after platform network reconfiguration. This issue has been fixed along with some robustness changes to ensure message forwarding is more consistent, for example, during platform maintenance.

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.

Data broker operations delivery improvements

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

Device count details for usage statistics documented

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

Direct sub-users count indicator added in the Users page

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

Edit and duplicate options for global smart rules disabled outside the Global smart rules page

Previously, it was possible to edit global smart rules from any context (device, group or application). With this change editing or duplicating global smart rules is only possible from the Global smart rule page.

Editing smart rules from the application context no longer displays alert message

Fixed an UI error that occurred when editing a smart rule from the application context. This fix prevents sending a request with a wrong managed object ID and then displaying an alert message.

Enabling time series support on the Management tenant is no longer possible

Enabling time series support on the Management tenant is no longer possible to prevent time series from being enabled on subtenants by tenant option inheritance.

Enhanced display of error messages for external authentication and platform permissions

Previously, errors from external authentication servers were not always displayed to the user, causing confusion when authentication failed without any visible indication. With this update, all errors originating from external authentication servers are now consistently shown in a dedicated error dialog. Additionally, errors resulting from insufficient permissions within the platform are now presented clearly and in a user-friendly manner on the login page.

Fix performance regression for count queries and inventory roles

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

Fixed an issue with removing all translations in the translation editor

In the translation editor on the Localization page, users were previously unable to remove all translations for a specific key. This issue has now been resolved. With this fix, users can successfully remove all translations associated with a key in the translation editor.

Fixed critical security issue

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

Fixed error messages on login via TOTP

Correct error messages are now shown on login via TOTP when the support access has been deactivated.

Fixed issue with Notifications 2.0 subscriptions with a type filter

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

Fixed issue with SMS requests to Bics provider

Outgoing SMS requests to the Bics SMS provider contained an incorrectly formatted request body. The content-type was corrected to “application/json” as required by the Bics API to be able to correctly send SMS with this provider.

Fixed location information for Global roles and Inventory roles tabs

In the Administration application, the location information for the Global roles and Inventory roles tabs under Accounts > Roles was incorrect, making navigation confusing for users. This issue has been resolved with the user’s location within the application now accurately reflected.

Fixed missing or incorrect titles when loading applications

In some situations the application titles in the UI were not correctly displayed. This issue has now been resolved and users now always see the correct application title.

Fixed translation issue in microservice management

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

Fixed typo in Single sign-on page

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

Further improvements to Service Terms

The section on Service terms has been further enhanced. It now also contains

Improved change password behavior

The password can now only be changed by the currently logged-in user. Administrators can no longer change the password and email for other users.

Improved Custom properties tab in the tenant details

The Custom properties tab in the tenant details has been improved by moving extraneous information to a new Limits tab providing a cleaner and more consistent interface.

Improved error information for single sign-on login

Previously, when an error occurred on logging in via SSO, the plain HTML error text was displayed in the browser. With this change, optional Redirect to the user interface application configuration has been added which allows displaying the error text as a standard UI error message. The new configuration parameter is optional and does not affect current SSO configurations. Using this option requires updating the “Valid Redirect URIs” in the authorization server with the value “<tenant_domain>/apps/*”. For details, refer to Custom template configuration.

Improved information on time filtering in Audit logs page

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

Improved layout of single sign-on login button

The layout of the single sign-on (SSO) login button has been updated. Previously, the SSO login button used a custom style which did not match the overall look and feel of the application. With this change, the SSO login button now uses the default layout.

Improved performance of local smart rules creation and update

Previously, the request time for creating or updating a smart rule increased with the number of enabled or disabled sources. Therefore it was recommended to not select the Activate also for <number> child assets checkbox when a local smart rule was created on a group containing many devices.

With this change the performance of requests has been improved and now updating a smart rule by adding or removing a single device ID from the list of enabled or disabled sources (enabledSources or disabledSources) is very fast.

Additionally, creating a local smart rule has become much faster in case of a large number of direct children of a top-level group. In case of deeper inventory hierarchies only the first level of the hierarchy is validated faster, so creating a local smart rule can still take a long time if the group has hundreds of descendants deeper in the hierarchy and all of them are selected as enabledSources.

Improved performance of Measurement API

The performance of the GET /measurement/measurements endpoint when filtering by both valueFragmentType and valueFragmentSeries has been improved.

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.

Information on default login method added to audit logs

Audit records for created or updated login methods now contain information on the method which is selected as default.

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

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

Latest measurement values tenant option now works with wildcard character

Previously, the tenant option which is used to enable latest measurement values was not not working with the wildcard (*) character. With this change, the wildcard character can be used to enable latest measurements for all series:

PUT /tenant/options/measurement.series.latestvalue

{
  "*":""
}

Limit for binaries is now equal to the application versions limit

Previously, the number of stored binaries for applications with versions was limited to 6 files, although the number of allowed application versions was 20 by default. The oldest file was automatically deleted when a 7th application version with binary attachment was uploaded. This has been fixed and now the limit for binaries is equal to the application versions limit (20 by default).

List of applications available in SSO configuration now limited to applications available to the tenant

The list of applications that can be configured for access by users logging in through SSO has been narrowed down to only include applications available to the tenant.

Login alias can no longer be an empty string

The login alias can no longer be an empty string, that is, a string consisting only of whitespace, null, or undefined. If no login alias is provided for the user, this field must not be included in the user object.

Measurement series can no longer be created without value

Previously, it was possible to create a measurement series without value. This issue has been fixed as the value is mandatory. Now a value must be provided on measurement creation.

Measurement series endpoint returns an error if the series contains more than one dot

Property names used for fragment and series must not contain whitespaces nor special characters (https://cumulocity.com/api/core/#operation/postMeasurementCollectionResource). Previously, the /measurement/measurements/series endpoint accepted a series query parameter which contained more than one dot, although it returned an empty response. With this change the endpoint returns a 422 error if the series query parameter contains more than one dot.

Microservice manifest advanced user input validation

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

Microservice name validation

Starting with Q1 2025, the Cumulocity 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.

Migrated localization user interface from Digital Twin Manager application to Administration application

As part of the ongoing migration efforts, the user interface for managing translations has been migrated from the legacy Digital Twin Manager framework to a new modern framework. The functionality remains the same, allowing users to view, edit and manage translations as before. However, the underlying technology has been updated, providing better performance, stability and maintainability of the translations user interface going forward.

Modified behavior on creating an external ID without an existing associated global ID

Previously, when creating an external ID, if the associated global ID did not exist, it would incorrectly create a managed object with the global ID automatically. This has changed - now if the global ID does not exist when creating an external ID, a 404 error will be returned instead of implicitly creating a new managed object. This behavior can be reverted from the Management tenant.

Navigator logo in dark mode correctly displayed after changing its size

The navigator logo was not displayed correctly in the dark mode after changing its size in the branding editor. This issue has now been fixed.

New "Limits" tab in tenant details

To provide a better overview of the resource limits and quotas configured for a tenant, a new Limits tab has been added to the tenant details page. This tab allows to configure the maximum number of devices, requests, and queue sizes for the tenant. With this change, tenant administrators can now easily view and manage the resource limits for their subtenant.

See also Setting limits.

New plugin versions are no longer automatically marked as latest

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

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.

Number of tokens generated in the JSON body is now limited

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

OAI-Secure users are no longer logged out during unsuccessful global roles updates

An issue has been fixed with logging out users using OAI-Secure during user global roles updates. Now users are no longer logged out if an error occurs while assigning or unassigning global roles.

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.

Option to log out all users when deleting or modifying a global role

When deleting or modifying a global role, an administrator can now ensure that changes take immediate effect by using a new option to log out all users assigned to that role.

Page with application access settings for the user loads correctly

During the loading of the page with application access settings for the user, an error occurred. The error has been resolved.

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

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

Preventing creation of empty keys for custom attributes

In the inventory, key validation has been added for custom attributes to prevent creating empty keys which cause issues with parsing when fetching data.

Provided translations for default roles labels

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

QR code for two-factor authentication provided during TOTP setup now shows up correctly

The QR code for the two-factor authentication provided during the TOTP setup was not displayed correctly. This issue has been fixed. The QR code is now properly visible and users can scan it with their authentication application.

Reduced storage limits for Notifications 2.0 and microservice-based data broker

Messages processed by Notifications 2.0 are stored persistently by the Cumulocity 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 default persistent storage limits for these services were too large for typical use cases. This could lead to excessive resource consumption and consumers being forced to process outdated messages after a disconnection.

These default limits have been lowered to better align with the expected usage patterns of the services.

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 Old 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 has been 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 Old 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 tenant. For tenants that exceed the new default limits, it may be appropriate to grant a tenant-specific non-default limit.

Refresh button on microservice status tab includes smart rules list

The Refresh button on the Status tab of the microservice details now includes the smart rules list.

Removal of deprecated JWT login mode

The deprecated JWT authentication with Cumulocity has been removed. This change will only impact you if your organization used an early version of single sign on (SSO) on Cumulocity. For details, refer to the earlier announcement.

Removal of deprecated JWT login mode

JWT authentication with Cumulocity 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. 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:

Removal of documentation for deprecated releases

Product documentation for deprecated releases

The user & developer documentation for the releases 10.18.0 and 10.17.0 have been moved to the GitHub documentation repository. For details how to access it, see Previous documentation versions.

As a consequence, the entire content of the deprecated documentation website https://cumulocity.com/guides/ has finally been deleted.

Release notes for deprecated releases

The release notes for releases 10.18 and older, which have been provided at https://cumulocity.com/releasenotes/, have been archived. For details how to access it, see Previous documentation versions.

As a consequence, the entire content of the deprecated release notes website https://cumulocity.com/releasenotes/ has finally been deleted.

API documentation for deprecated releases

The API documentation for releases 10.18 and older, which have been provided at https://cumulocity.com/api/, has been archived. For details how to access it, see Previous documentation versions.

Removal of Microservice API version 1 in Cumulocity 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 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 SaaS instances may stop functioning in Q3 2024 or in environments using the yearly 2025 release.

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.

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.

Restriction on role changes for users managed by SSO server

Administrators can no longer change the global roles and inventory roles of users managed by the single sign-on (SSO) server if they are updated during login. The option “Roles selected in the rules below will be reassigned to a user on each log in and other ones will be cleared” can be set in the access mapping of the SSO configuration.

Root level managed object is now reliably found when querying with the onlyRoots flag

In the inventory, when querying with the onlyRoots flag, assets could not be found if the object was removed from the asset hierarchy and became the root object again. This issue has now been fixed and root level managed objects are found when querying with the onlyRoots flag.

Scrolling works properly for application activity logs

On the Properties tab of an application, users were unable to scroll through the activities log content when it exceeded the visible area. This issue has been resolved and users can now properly scroll through the full log content, even if it extends beyond the initial visible section.

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.

Service-level agreement for Platforms

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

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

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

Subtenant creation request requires domain being a subdomain of the parent tenant

The domain of a tenant, created under either the Management tenant or Enterprise tenant, is now required to be a subdomain of the parent tenant. Previously, the domain of a tenant created under the Management tenant could have a custom domain not related to the parent tenant.

Support for ID tokens provided by external IAM servers in the SSO authentication process

Support for ID tokens provided by external IAM servers has been added and can now be used in the authentication process via single sign-on (SSO). Previously, only access tokens were supported by the Cumulocity platform. Now, the administrator can decide through the configuration whether user data retrieved from the external server, such as first name, last name, phone number, email, and roles, should be loaded from the access token or the ID token.

Tenant API security improvement

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

TFA strategy is now updated through the TFA endpoint

To enhance the security and flexibility of the two-factor authentication (TFA) process, the TFA strategy can now be updated using the dedicated TFA endpoint. This change allows users to modify their TFA settings more easily and efficiently, without needing to navigate through multiple steps or menus. The updated functionality streamlines the TFA configuration process, providing a more user-friendly experience while maintaining the robust security measures that TFA offers.

Valid examples of Japanese phone number used in the translations

In the Japanese translation of the user interface, an invalid example was used for the phone number field, which could lead to confusion for Japanese users trying to enter their phone number. This change updates the example to use a valid Japanese phone number format. With this fix, Japanese users should now be able to more easily understand the expected phone number format.

In recent LWM2M agent versions, the default firmware update reset mechanism was always set to PACKAGE even if the device only supported the PULL delivery method. Now the default reset method is selected based on the firmware delivery method supported by the device.

Actility device registration no longer fails due to issue with enterprise connection

Actility device registrations using an enterprise connection were failing due to an issue with the enterprise connection creation. This issue has been resolved by fixing the enterprise connection creation step.

Activating or deactivating users in the Device credentials page works reliably

In the Device credentials page, user activation did not work properly. This issue has been fixed an activating or deactivating users now works reliably.

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.

Added filter chips examples to the Cumulocity Codex

To provide developers with more guidance on how to use filter chips in their applications, codex examples for filter chips have been added. The examples demonstrate how to implement filter chips in various scenarios and highlight best practices. With these new codex examples, developers can more easily understand and leverage filter chips in their own applications, enabling them to create more intuitive and user-friendly filtering experiences.

Added information on restrictions to auto-registration of LWM2M devices

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.

Added link to user documentation in the smart group creation dialog

To support users when creating smart groups, a link to the user documentation on smart groups has been added to the smart group creation dialog. This allows users to quickly access helpful information.

Added missing German translation in success message for bulk device upload

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

Added new option to avoid unnecessary unavailability alarms for LWM2M devices

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

Added validation and alarming for device type resources API

A new validation for the device type resources API of the OPC UA service (CREATE and UPDATE operations) has been implemented to prevent duplicate browsePath entries in the mappings. Refer to Device type resources for details about the browse path. Additionally, if an error occurs during the device type matching in the OPC UA device gateway, a MAJOR alarm will be triggered on the server object.

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.

Alarms tab in the Simulator page only shows alarms related to the selected asset

In the Simulator page, the Alarms tab previously displayed alarms that were not directly related to the selected asset. This caused confusion for users who expected to only see relevant alarms for the specific asset they were viewing. With this change, the Alarms tab now correctly filters out unrelated alarms, ensuring that users only see alarms that are pertinent to the selected asset.

Alarms tab of a service no longer shows alarms from other sources

Previously, the Alarms tab of a service displayed alarms from other sources than the respective service. This issue has been fixed and now only alarms related to the service are displayed.

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

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

Asset properties widget in device details correctly displays all relevant properties

The “Asset properties” widget on the Info tab in the device details was not working as expected and showed incorrect or missing information in some cases. This issue has been resolved and the “Asset properties” widget now correctly displays all relevant properties for a device asset. It contains 5 default properties - ID, name, type, last updated and creation time.

Calendar dropdown is no longer being cut off

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

Character limit removed in OPC UA object-mapping functionalities

The text fields in the “Send measurement”, “Create alarm”, and “Send event” functionalities used to be limited to 100 characters. This limitation has been removed, allowing you to enter longer text without restrictions.

Clear all filters button now resets the filter settings properly

The Clear all filters button in the All devices page is intended to reset all filter settings and return the view to its default unfiltered state. However, when clicking the Clear all filters button, the filter settings were only temporarily reset until the user visited the All devices page again and continued to show filtered results instead of all items. This issue has now been resolved.

Clicking on alarms in the Simulator page no longer redirects to the Alarms page

In the Simulator page, clicking on alarms previously redirected users to the Alarms page instead of showing the alarms in the Alarms tab of the Simulator page. This behavior has now been corrected.

Command output of shell operations in the Shell tab now correctly includes newline characters

In the Shell tab in the device details, the result of commands executed through the shell operation was previously displayed with missing new line characters, making it difficult to read. This issue has now been resolved. The shell operation now correctly includes newline characters in the command output as expected.

Composite Write transmits data to the device in the specified order

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

Configuration repository migrated to a data grid

The configuration repository has been migrated to a data grid. The data grid provides a more modern and user-friendly way to view and manage configuration items compared to the previous list view. The data grid offers enhanced features such as sorting, filtering, and pagination, making it easier to find and work with specific configuration items.

Configuration repository now correctly saves the configuration type

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

Consistent restriction of special characters in device ID for single and bulk device registration

The device ID verification in the single device registration and bulk device registration processes restricts several special characters. This was inconsistent and quite permissive. Now the verification works consistently in both processes, and the restricted characters are /, \, $ and space. Both registrations also still block control characters.

Creating OPC UA device type without the matchedNodeIds list for applyConstraints

Previously, the device type creation via the OPC UA management service API failed when matchedNodeIds list was not defined for applyConstraints. This issue has now been resolved, and apply constraints can now be set without defining a matchedNodeIds list.

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.

Data grid deletion no longer redirects to the first page

Previously, when deleting an entry in a data grid that was not on the first page, users were unexpectedly redirected back to the first page of the grid. This behavior has now been changed. After deleting an entry, users will remain on the same page they were on before the deletion. This change affects all data grids throughout the application where deletion is possible.

Device Management application now includes all available widgets

The Device Management application was missing some widgets that were available in other applications. With this change, all available widgets have now been added to the Device Management application.

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.

Device management title now uses title case as all the application titles.

To improve readability and consistency, the titles of device management application now use title case (Device Management) instead of sentence case (Device management). The functionality of the entities remains the same, only the casing of the titles has been modified.

Device owner toggle no longer remains in incorrect state after canceling the change

When attempting to change the device owner on the Info tab in the device details and then canceling the action, the toggle control previously remained in an incorrect state and appeared as if the change had been applied. With this fix, canceling the device owner change now correctly reverts the toggle control back to the original state, avoiding confusion about the current device owner assignment.

Device profiles list now displayed as a grid

The device profiles view has been migrated to a data grid. The data grid provides a more modern and user-friendly way to view and manage device profile items compared to the previous list view. The data grid offers enhanced features such as sorting, filtering, and pagination, making it easier to find and work with specific items.

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.

Enabled deletion of child devices from the Child devices tab

In the Device Management application, child devices could not be deleted from the Child devices tab. Instead, users had to to navigate to the device details for deletion. With this change, child devices can now be directly deleted from the Child devices tab.

Enhanced serialization formats for LWM2M operation responses

In previous versions, the LWM2M agent did not utilize appropriate formats to serialize link arrays, opaque data, and date formats in operation responses. With this update, the LWM2M agent now provides adequate and consistent representations for these data types in both operation responses and the LWM2M objects tab. Key changes include:

The LWM2M agent now employs hex strings for representing opaque data in operation responses and the LWM2M objects tab. Link arrays are maintained using the CoRE link syntax in both locations. Date values in operation responses are converted into a JSON fragment, encompassing both a human-readable time string and a timestamp value.

Field now updated when selecting an item from a typeahead list

The typeahead component allows users to quickly find and select an item from a list as they type. Previously, when a user selected an item from the typeahead list, the associated field would not update with the selected value. Now, when a user selects an item from the list, the associated field will immediately be updated with the selected value.

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.

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 an issue with expired LWM2M device operation realtime subscriptions

In previous versions it was possible that an expired realtime subscription was considered active by the LWM2M agent. This could lead to issues like disconnecting from an already disconnected channel or not being able to connect again. As a result, the LWM2M device operations were not taken in realtime for the device. This issue has now been fixed.

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 duplicate rendering of LWM2M device protocol details

In the LWM2M device protocol details view, some information was incorrectly shown twice, leading to confusion. This change fixes the issue by ensuring the protocol details are only rendered once. Users inspecting the details of LWM2M devices will now see a clear and concise view without duplicate information.

Fixed issue with 0 as value in custom event and operation fields

In Chrome, custom event and operation fields having 0 or ‘0’ as a value were incorrectly parsed and displayed as date. This is now fixed.

Fixed issue with large integer values

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

Fixed issue with LWM2M external decoders not updating device data fragments properly

The LWM2M external decoders are capable of updating device data fragments. Previously, when a data fragment was of type OPAQUE and the requested fragment value was plain text, the execution crashed with an error message (“Event processing failed”) instead of updating the specified fragment. This issue has now been resolved, and data fragments are updated as intended.

Fixed issue with OPC UA address space scanning

In earlier versions of the OPC UA gateway, it rarely happened that a reverse address space scan unexpectedly failed if the last node processed wasn’t a root node. This issue has been fixed. Also, if a scan encounters an issue with a single node, it will now log the error and move on to the next node, rather than stopping the entire scan.

Fixed issue with SmartREST 2.0 inventory POST template

The SmartREST 2.0 inventory POST template was breaking when parsing an empty “mandatoryValues” field. A check has been implemented to verify if the field is empty before processing the POST template.

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.

Fixed issues with LWM2M registration requests

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

Fixed issues with outgoing requests to DCP API

The sms-gateway agent sent outgoing requests with the content type “application/xml” which is not recognized by the DCP API. This has been fixed and outgoing requests are now sent with the content type “application/json”.

Fixed layout issues in the Logs tab in the device details

The Logs tab in the device details had several layout issues. These issues have been fixed by properly aligning labels, adjusting the date and time pickers width, and adding a proper background separation when the Type of log dropdown is open.

Fixed layout issues with data grid group column dropdown

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

Fixed spelling error in LWM2M single registration

In the LWM2M single registration, a spelling error in one of the log messages has been fixed to improve the clarity and consistency of the logging. This change only affects the spelling in the log message and has no functional impact on the feature itself.

Fixed type error when using hookDeviceListColumns with factory

In Cumulocity, the hookDeviceListColumns API allows customizing the columns displayed in the device list. However, when using this API with a factory, a type error occurred, and explicit type casting was needed. This issue has now been resolved.

Improved configuration for OPC UA device gateway node scan retries

The issue that the count of retries for the node scan (gateway.scanAddressSpace.retries) stored in the OPC UA device gateway property is being ignored has been resolved. A new OPC UA device gateway property has been added that allows to configure the pause time between retries (gateway.scanAddressSpace.pauseMillisForRetry) during the address space scan.

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.

Improved information on LWM2M "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.

Improved layout and content of empty state messages

The layout of the empty state message displayed in data grids across all standard applications has been adjusted and unified. Moreover, grids that did not differentiate between no data available and no filter matches or search results do now display a more precise corresponding empty state message.

For developers the emptyStateContext directive was introduced that injects data source statistics variable into template context.

Improved LWM2M CSV bulk device registration

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

Improved LWM2M decoder event execution

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

Improved OPC UA operation ProcessMappingsForDeviceValues

In previous versions, the operation c8y_ua_command_ProcessMappingsForDeviceValues failed entirely if any single mapping failed. The new behavior allows the operation to continue reading nodes even if some nodes cannot be read due to bad status codes. Although the operation will still be marked as failed, all readable nodes will be mapped. Additionally, the result and failure messages have been improved to indicate which nodes failed and which were successful.

Improved reliability of real-time operation notifications for LWM2M service

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

Improved the LWM2M decoder events processing engine

The LWM2M decoder events processing engine has been optimized:

  • Improved the processing of external decoder events in the LWM2M agent by transitioning from a single-threaded per-tenant approach to a multi-threaded implementation.
  • Enhanced scalability and performance, enabling faster processing of millions of decoder events.

Input in text fields on the Shell tab no longer truncated

When adding a new predefined command on the Shell tab in the device details, all text fields are now properly formatted making all information visible.

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

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

Integration of delete button in Info tab for LWM2M devices

Previously, the Delete button on the Info tab in the device details was not integrated for LWM2M devices and an additional cleanup operation was required. This button is now integrated for LWM2M devices so that they can be properly deleted. For more details see the LWM2M user documentation.

Issues in the Tracking tab in the device details have been fixed

In the Tracking tab in the device details the device position was not updated in realtime even though the Realtime button was activated. This has been fixed and now the device position and the tracking path are both updated in realtime. Moreover, changing the time range and refreshing the list had no effect. This has been fixed and users can again filter events by different time ranges.

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

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

LWM2M agent 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 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 fully supports firmware update using firmware images hosted by external parties

In previous versions, defining external firmware images was limited to per-device configuration changes. Now, it is possible to use a standard firmware definition that points to an external URL instead of containing a binary.

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

When a device sends values from multi-instance resources (via read, composite read, observe or composite observe), the LWM2M agent must decide whether it overwrites the previous data set or updates it (for example, by adding a new value to an existing array). Previously, in some edge cases the decision taken by the agent was not correct. This issue is now fixed and the agent always stores data from multi-instance resources correctly.

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.

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 skips null entries in supported content format reported by LWM2M devices

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

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

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

LWM2M device logging level configuration

For LWM2M devices, it is now possible to disable or adjust the granularity of logging events per device during the device registration or from the LWM2M configuration tab of the existing device. When enabled, log events are visible in the device’s events. Lifecycle events are the default selected option. The global configuration from the LWM2M Service for enabling event logging has been removed. For more details see LWM2M device registration advanced settings and LWM2M configuration.

LWM2M device operations directly go to Pending state

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

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

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

LWM2M location data handling has been improved

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

LWM2M Opaque type serialization to byte array is now deprecated

By default, the LWM2M service serializes binary data of a resource such as Opaque type to a byte array in Cumulocity representations. This functionality is now deprecated and will be changed in the future to the hexadecimal string format. For now the default serializer is still serialized to the byte array and the format can be switched only on the instance level. This change affects the way the data is represented in Cumulocity objects (operations, values displayed in the Objects tab). It does not affect the communication with LWM2M devices.

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

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.

Migrated and improved the devices map in the Device Management application

As part of ongoing improvements to the Device Management application, the device map component (Devices > Map) has been migrated to a new implementation. Besides improving the functionality, the goal of this migration is to keep the component up-to-date and maintainable. The following changes have been made:

  • The limit of 100 devices displayed has been removed.
  • Areas with large density of devices are marked by clustering devices into a single marker displaying the number of devices in the area.
  • The world map is not wrapped and users can endlessly scroll to the east and to the west.
  • Automatic initial zoom and center based on the determined device positions has been introduced.
  • Auto-refresh with pause/resume functionality replaces realtime updates.

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.

Missing translations of descriptions of some numeric fields

The descriptions of some numeric fields may have appeared only in its English version. This is now fixed and the descriptions of numeric fields appear in the selected platform language.

Moving SNMP documentation

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

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 in LWM2M device protocol

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.

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

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

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.

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

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

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

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

Operation updates are now displayed in realtime in device control lists

In device control lists, operations with an updated status remained displayed even if they did no longer match the active status filter criteria. Now, operations that no longer match the selected criteria are correctly removed from the list in realtime.

Optimization of storage management for OPC UA gateway

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

Option to disable LWM2M object default actions

The default handling of object instance actions for LWM2M objects 3, 4 and 6 can now be turned off. In addition, the default server-side firmware update state machine for object 5 can be disabled. These settings can be enabled/disabled in the device´s LWM2M configuration in the UI.

Prevented clearing of mandatory fragments

Clearing of mandatory fragments like type, time, creationTime, owner and source for events, alarms and managed objects is no longer allowed on invocation of SmartREST 2.0 static templates that clear fragments like 107, 307 and 407.

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.

Radio button selection in OPC UA device protocol configuration maintained when expanding another variable

In the OPC UA device protocol configuration, users could select a radio button for a specific variable. However, when expanding another variable in the same view, the previously selected radio button would become unselected. This issue has now been resolved. With this fix, the radio button selection is properly maintained even when expanding other variables in the view. Users no longer need to reselect the desired radio button after inspecting other variables.

Removed disabled "Copy dashboard" button from dashboards

To improve the user experience by removing redundant or non-functional elements in the UI, the Copy dashboard button has been removed from dashboards in the Info tab in the device details, where it was previously disabled and offered no functional benefit. The Copy dashboard button will still be available and functional for other types of dashboards.

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

Replaced deprecated library to improve LWM2M service security

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

Repository device tabs only show active operations

Previously, the repository device tabs in the device details showed already completed operations which could differ from the currently installed items. With this change, the repository device tabs have been updated to only display active operations in their views.

Resolved issue with double LWM2M bulk registration execution

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

Scheduling bulk operations with a precise delay now works properly

In the Cumulocity platform, bulk operations allow performing actions on multiple devices simultaneously. However, scheduling these operations with a delay in milliseconds was not working as expected. This issue has now been resolved. With this fix, bulk operations can now be scheduled with precise delays specified in milliseconds, enhancing the reliability and efficiency of device management tasks.

Search results on OPC UA Address space tab no longer overflow on small screens

Previously, when performing a search in the Address space tab of OPC UA devices on small screen sizes, the search results would overflow the available space and extend beyond the visible area, making it difficult for users to view and interact with the results. This change addresses the overflow issue by ensuring the search results are properly contained within the available space on small screens. Users will now be able to easily view and navigate through the search results without any content being cut off, regardless of the screen size they are using.

Selected item IDs are now passed to the bulk action control

In the past, the bulk action control did not receive the IDs of the selected items, which made it impossible to display a bulk action conditionally based on the subset of selected items. With this change, the selected item IDs are now passed to the bulk action control showIf function.

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.

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.

Shell component preserves whitespaces and new lines

The shell component is commonly used to display code snippets or command line output. Previously, the shell component stripped out whitespaces and new lines which could lead to incorrectly formatted or hard to read content. With this change, the shell component now preserves all whitespaces and new line characters allowing code snippets and command line output to be properly formatted. This improves the readability of content displayed in the shell component for users.

SmartREST template collection parsing no longer fails with response template

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

Software items are now properly shown in the Device data widget

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

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

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

Special character encoding in OPC UA device types is now available

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

Success message no longer displayed when canceling the creation of a smart group

When a user opened a create smart group dialog and then canceled it, a success message was incorrectly displayed even though no action was actually completed successfully. This has now been fixed. The success alarm will now only be shown when an action is completed as expected.

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.

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.

Terminate the firmware update process if an unexpected situation is detected

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

Trimmed values in connectivity provider forms

To prevent server errors caused by invalid header values with prohibited characters, such as leading or trailing spaces, whitespaces are now automatically trimmed from input values in the connectivity provider forms in the Connectivity tab.

Updated LWM2M bulk registration templates

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

Values for registers and coils in the "Fieldbus device" widget can be modified properly

In the “Fieldbus device” widget, modifying registers and coils by clicking the Set button did not work properly. This issue has been fixed and an operation to update the values will be triggered as intended.

Ability to create root-level assets using the add asset functionality in the UI

Previously, the add asset functionality in the subassets view only allowed to create child assets within existing hierarchies. With this change, users can now create root-level assets as well as complete asset hierarchies based on predefined asset models. This enhancement provides greater flexibility creating asset hierarchies through the UI.

Accurate handling of latitude and longitude inputs in the Map widget

The “Map” widget has been enhanced with accurate handling of empty and zero longitude and latitude inputs, including input validation to ensure that the latitude and longitude values are within the accepted ranges.

Added a permission check for the copy dashboard action

A permission check for the copy dashboard action has been added. The platform now verifies that the user has the required permissions before allowing them to copy a dashboard. If the user lacks the required permissions the Copy button will be disabled.

Added an expand button to view child asset models in the tree view after import

Previously, on the Export Asset Models window, the expand button did not appear for asset models with child models imported via sample or import features. Now, it appears correctly, allowing users to view the entire hierarchy before exporting.

Added Asset properties widget into DTM plugins component

The DTM plugins component now includes a new asset properties widget module, which enhances the functionality of the existing “Asset properties” widget. This includes:

  • Simplified selection of the modelled properties for assets.
  • Support for listing properties of type: file
  • Ability to preview images attached to properties of type: file
  • The widget has been migrated to Angular.

The module is designed for easy integration into any Cumulocity application. In future releases, this widget will replace the current “Asset properties” widget across all Cumulocity applications.

Added Codex example for CountdownInterval component

To improve the documentation of UI components, a Codex example has been added for the CountdownInterval component. This example demonstrates how to use the CountdownInterval component in an application, showcasing its functionality and configuration options. Developers can now refer to this example to better understand how to integrate the CountdownInterval component into their projects, making it easier to implement countdown functionality in their applications.

Added documentation and examples for hookServices in the Cumulocity Codex

To support developers in utilizing hookServices in their applications and plugins, documentation and examples have been added to the Cumulocity Codex. The documentation provides an overview of the hookServices API and suggests use cases for it. It also includes a code sample demonstrating widget plugins sharing a common state via an externally injected service. With these new resources available, developers should find it more straightforward to integrate hookServices into their projects, enabling them to extend and customize functionality as needed.

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.

Added messages for events sent by the DataHub microservice

Recently, Cumulocity DataHub was updated to send events to the Cumulocity platform in case an offloading or compaction job finishes. Therefore, new messages for the Cumulocity platform were introduced to translate these events.

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.

Added type information to widget configuration

To provide more clarity and improve validation when configuring widgets, type information has been added to the widget configuration. Previously, the widget configuration did not include any type information, which could lead to confusion and misconfiguration. With this change, each configuration property now specifies its expected type, such as string, number, or Boolean.

Adjust font family and size for Japanese text

The font family and size for Japanese text have been adjusted to improve readability and visual consistency across different platforms. These tweaks help ensure Japanese characters render cleanly at an appropriate size across varying screen densities and resolutions.

Adjust list group for complex properties and fix drag and drop

Users can now easily reorder complex property keys by dragging and dropping them with the new drag icon.

Adjusted styling of branded dashboards

The styling of the branded dashboard was adjusted to improve readability and accessibility.

Alarm and event selector input validation added

The alarm and event selector in the Cumulocity UI previously allowed to enter invalid input. With this fix, input validation has been added to the alarm and event selector to ensure that only valid input is accepted. This change improves the user experience and prevents potential errors or unexpected behavior when using the alarm and event selector.

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

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.

Alarms list widget now offers date range filtering

The “Alarm list” widget previously displayed all alarms without the ability to filter them by date. With this change, users can now filter the displayed alarms in the widget by specifying a date range. This allows users to narrow down the shown alarms to a specific time period they are interested in. Users can select the date range either specifically for the widget or bind the widget to the dashboard time context.

Alarms remain visible when the severity changes via a smart rule

In some cases, alarms were no longer displayed when their severity was changed via a smart rule. This has been fixed so that alarms now remain visible in the UI when their severity changes. This ensures that users can always see all active or cleared alarms, regardless of any alarm updates triggered by smart rules.

Alert for long-running managed object operations

In some situations, managed object operations in Cumulocity 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 global asset search when duplicating a local smart rule

When creating a duplicate of a local smart rule, it is now possible to select an asset from outside of the hierarchy. A duplicate of the rule is now created in the context of the selected asset.

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.

AngularJS breadcrumbs updated to work with asynchronous values

The AngularJS breadcrumbs component has been updated to properly display breadcrumbs when values are resolved asynchronously. Previously, asynchronously set values would not correctly appear in the breadcrumbs. This update ensures that breadcrumbs will now display as expected regardless of synchronous or asynchronous value resolution. In particular, this fixes breadcrumbs on SmartREST templates and Device credentials pages.

Asset hierarchy correctly shown in New asset page after importing a sample asset model

Previously, after importing a sample asset model in the New asset page, the asset hierarchy was incomplete when the sample asset model was selected. With this change, users can now view the entire hierarchy of the selected asset model.

Asset names in the "Data point list" widget now redirect to the correct URL

In the past, when clicking on an asset name in the “Data point list” widget, users were sometimes redirected to the wrong URL. This issue has now been resolved. Clicking on an asset name in the “Data point list” widget will now redirect the user to the correct asset page.

Asset properties widget plugin no longer causes duplicate navigation elements

Fixed a user interface issue where navigation elements appeared twice after installing the “Asset properties” widget plugin. This issue caused duplicate menu items, such as Add dashboard in the Cockpit application and Home in the Device Management application. The fix ensures navigation elements appear only once, improving the user interface clarity and navigation experience.

Asset property field in the subassets view now remains empty after the existing or default value is cleared

When editing an asset property value in the subassets view, the default value was still displayed even after the user had cleared the value. This issue has now been resolved. With this fix, when a user clears an asset property value in the subassets view and saves the changes, the field will be empty as expected without retaining the default value.

Asset selector now correctly emits the first selected item

The asset selector component is used to allow users to select an asset from a list. Previously, the first item in the list was not automatically selected. This had been changed, but the first selected item was not properly emitted to other components. In some cases this led to data points not showing up in the data points selector. This has now been fixed so that the asset selector component will always emit the selected item. This change ensures that the selected asset is properly communicated and depending components can be used as expected.

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.

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.

Assets and groups are now shown when editing dashboard instances

The dashboard manager shows dashboards for both devices and groups/assets type dashboards. Groups/assets type dashboards could be created with the application option hideTypeDashboardForAssets set to false, but on clicking Edit, the new modal showed target assets only for device dashboards, while the groups/assets list was empty. Now, when you click Edit, the list is always populated with devices and groups/assets.

Auto refresh can now be enabled globally in dashboards

Previously, auto refresh was only available in certain parts of the application, such as the Alarms page, “Alarms” widget and “Map” widget. With this change, auto refresh can now be enabled globally in any dashboard. This means that the data displayed in widgets, that support this functionality and have it enabled, will be automatically updated at set and common intervals, without the need to manually refresh or set their intervals separately. The impact of this change is an improved user experience as users will always see the most up-to-date information without having to take any additional action.

Available plugins correctly displayed in plugin list

Previously, application plugins were not displayed on the Plugin tab in the application details. This change ensures that all application plugins are now properly listed on the Plugin tab, providing a complete overview of all available plugins.

Avoid colliding Leaflet versions by adding noConflict

In order to prevent conflicts between different versions of the Leaflet library used to render maps, the noConflict mode has been added. Previously, if multiple versions of Leaflet were loaded on the same page, it could lead to unexpected behavior and errors. With this change, each version of Leaflet can be used independently without interfering with others. This ensures that Cumulocity applications using Leaflet work reliably, even if other parts of the system or custom widgets use different versions of the library.

Bookmark title now uses globalTitle if set

In the past, bookmarks did not consider the globalTitle property when generating the title for a bookmark. With this change, if a globalTitle is specified, it will be used as the bookmark title instead of the default behavior. This improves the user experience by allowing more control over how bookmarks are named, ensuring bookmark titles can be set according to specific needs.

Bookmarks now show page title as label instead of default value

The bookmarks feature has been updated to display the page title as the bookmark label instead of a default value. This provides more context for users when viewing their bookmarks list.

Building microservice container images with Docker 25

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

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

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

Changed default date selection option in widgets configuration

In the “Data point graph”, “Data point table”, and “Event list” widgets configuration, the default option in the Date selection field has been changed from “Widget configuration” to “Dashboard time range”.

Changes from all dashboard widgets now properly saved

Previously, when more than one dashboard widget was edited, only the changes from the last edited widget were saved. Now every change is taken into account.

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

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

Clearer version selection when scaffolding a new application with Angular CLI

The Angular CLI new command, which is used to create and manage Web SDK-based Angular projects, previously had a version limit of 3. This has now been increased to 5, allowing users to select from a wider range of Web SDK versions when creating a new project. Additionally, a bug has been fixed where the “latest” tag was not always shown for the correct Web SDK version in the prompt. With this change, users will now see the “latest” tag next to the most recent stable version of the Web SDK, making it easier to select the desired version when creating a new project. These changes improve the user experience and flexibility when working with the Angular CLI new command prompt.

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.

Correct icon now displayed for root groups

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

Correct port numbers shown in log output when running local development server

When running a local development server with the ng serve command, the log output incorrectly displayed the port numbers if the default port was already used. This has been fixed to show the correct port numbers that the local development server is actually using. This improves the developer experience by avoiding confusion about which ports are being used.

Corrected display of key-value pairs of Location property

Previously, on the Asset Properties page, viewing the default location property after viewing a complex property with three or more key-value pairs resulted in the altitude key-value pair being displayed multiple times. Now, the key-value pairs are displayed correctly.

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.

CSS variable now correctly sizes the app icon

Fixed an issue with the variable that controls the size of app icons displayed in the navigator.

Cumulocity schematics now handle Angular standalone projects by disabling standalone mode

Previously, adding Cumulocity schematics to Angular projects initialized with the standalone flag set to true failed. This issue has been addressed. Now, when integrating Cumulocity 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 schematics with projects initially set up as standalone, though with standalone features disabled.

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.

Dashboard auto-refresh counter no longer freezes in certain scenarios

Previously, the auto-refresh counter freezed when a dashboard contained at least two widgets with different refresh mechanisms - one using real-time dashboard contexts and another using auto-refresh dashboard contexts. This combination now works properly for previously failing scenarios.

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

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

Dashboard availability setting removed from the Home dashboard

The availability setting has been removed for the Home dashboard. This change prevents issues with an incorrect availability status being shown on the Home dashboard.

Dashboard manager extracted into a separate plugin

In an upcoming version the dashboard manager module will be extracted from the Cockpit application and added as a separate plugin. This change might be a breaking change as the dashboard manager module will no longer be part of @c8y/ngx-components/context-dashboard, but will be part of @c8y/ngx-components/dasboard-manager.

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 the dashboard manager from now on will be loaded lazily (that is, only after main application is loaded).

Dashboard template setting now visible for devices without type property

Previously, when a device had no type property assigned, the dashboard template section in the dashboard settings was hidden. Now, in this case, the section is visible but information is provided that the dashboard template is only enabled when a type is added to the device. Moreover a button is provided which navigates the user to the device view in the Device Management application.

Dashboards redesign and improvements

Redesigned dashboards with both visual and functional enhancements as well as new functionalities have been implemented:

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.

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.

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

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

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

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

Date range filter added in the alarms overview

To improve the usability of the Alarms page, alarm filtering by a date range has been implemented. Users can now filter alarms by specifying a start and end date, allowing to narrow down the displayed alarms to a specific time period. This change enhances the alarm management experience by providing more granular control over the alarms being viewed, making it easier for users to focus on relevant alarms within a desired timeframe.

Delete popup now closing correctly when hitting another delete button in the bookmark edit view

In the bookmark edit view, clicking on a delete button while the delete confirmation popup was already open would lead to unexpected behavior and the popup not closing properly. This issue has now been resolved. The delete confirmation popup will now always close correctly when clicking on another delete button, allowing users to smoothly continue their workflow without any interruptions. This change improves the overall user experience and consistency when working with delete confirmations.

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.

Device dashboards displayed for all devices

Retrieving the device context dashboards did not work as expected if the device had a space in its type. As a result, it was impossible to view such devices as the dashboard is by default the initial view for devices in the Cockpit application. This issue has been fixed and the device dashboard is always displayed.

Device info dashboards no longer show up in the Cockpit application

Due to an issue, the device info dashboards known from the Device Management application were also showing up in the Cockpit application. This has been adressed now.

Device name displayed properly when switching to the Smart rules tab

In the Cockpit application, when switching to the Smart rules tab of a device in a group, the device name was missing in the page title. This issue has been fixed and the device name is displayed properly now.

Device type dashboards can now be used for device types containing a dot

Previously, device type dashboards did not work properly for devices that contained a dot (".") in their type. This has now been fixed. Device type dashboards can be used for all devices, regardless of whether their type includes a dot or not.

Digital Twin Manager application titles now use title case

To improve readability and consistency with other applications, the titles of the Digital Twin Manager application now use title case (Digital Twin Manager) instead of sentence case (Digital twin manager). The functionality of the application remains the same, only the casing of the titles has been modified.

Disable alarms refresh controls when user lacks access to alarms

The auto-refresh controls and the manual refresh button are now disabled when the user lacks access to alarms.

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.

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.

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

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.

Enabled edit mode when opening a newly created dashboard

Previously, when creating a new dashboard, it would open in view mode which required an extra click on the Edit button to start editing the dashboard. With this change, newly created dashboards now directly open in edit mode. This allows users to immediately start editing and configuring the new dashboard, saving them a click and making the user experience more intuitive.

Enhanced alarm details view with the option to add custom tabs

It is now possible to extend the alarm details view with custom tabs. This allows developers to display any kind of additional information in the context of an alarm. Existing alarm details remain unchanged but can now be enhanced with additional custom tabs.

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

Enhanced Data points table widget

As part of the ongoing modernization efforts to migrate the UI to Angular, the “Data points table” widget has now been migrated from AngularJS to Angular. This change improves the performance, maintainability and consistency of the widget with the rest of the application. The widget now offers enhanced features including:

  • Configurable decimal place precision for data point visualization
  • Improved responsiveness across different screen sizes and devices
  • Auto-refresh based on configurable interval

All existing functionality remains unchanged, ensuring a seamless transition for current users.

Enhanced select component with advanced features

To enhance the user experience and functionality a new select component has been introduced. This update includes significant changes that may require action from developers.

Key features:

  • Search functionality
  • Multi-select option
  • Chip-based selection display
  • Full keyboard support
Important
The interface of the new component is not compatible with the previous version. Existing implementations using the c8y-select component will need to be updated.

Required actions: Developers must select one of the following options:

  1. Migrate the existing c8y-select components to the new interface
  2. Rename the selector to c8y-legacy-select to maintain the current functionality

Enhanced XSS protection in Asset notes widget

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

Extended information on dynamic forms in Codex

The Codex documentation provides information about developing applications with the Cumulocity 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 Codex.

Filtering for alarm types added in the alarms overview

To improve the usability of the alarms overview, filtering for specific alarm types has been added. Users can now select which alarm types they want to see in the overview by using the new filter options. This allows users to focus on the alarms that are most relevant to them, making it easier to identify and address critical issues in a timely manner.

Fix websocket connection issue for Angular development server

The Angular development server relies on a websocket connection to enable live reloading of the application during development. Previously, the websocket connection was unstable and would frequently disconnect, causing the live reloading feature to stop working. This change fixes the underlying issue with the websocket connection, making it more stable and reliable.

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 alignment of app switcher in mobile view

The app switcher in the mobile view of Cumulocity was previously not aligned correctly. This issue has now been resolved. Users will now see the app switcher properly aligned in the center when using Cumulocity on mobile devices, improving the overall usability and visual consistency of the platform.

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.

Fixed incorrect error message when exporting data in the data explorer

In the data explorer, when attempting to export data that exceeds the configured maximum number of rows, an incorrect error message was displayed. This change fixes the error message to provide the correct information to the user. The user will now see an accurate error message explaining that the export failed because the number of rows selected exceeds the configured maximum limit.

Fixed incorrect markup in the list display control

The list display control, which is used to display lists of items in various parts of the application, contained incorrect HTML markup. This has now been fixed, ensuring the list display control renders the lists correctly.

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.

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 issue with favicon for custom applications

An issue has been fixed, where the favicon was not shown when a custom application was deployed.

Fixed issue with Karma tests against @c8y/ngx-components library

Version 1020.26.0 of the @c8y/ngx-components library introduced an issue which made it impossible for consumers of this library to perform Karma tests against it. This issue has been addressed now.

Fixed issue with unnecessary refreshes of English texts

An issue has been fixed related to unnecessary refreshes of English texts on each Angular digest cycle.

Fixed resizing of "Data point" widget

In the past, resizing the “Data point” widget in dashboards sometimes led to unexpected behavior and layout issues. This change fixes the resizing of “Data point” widgets to ensure they maintain their correct size and position within the dashboard layout.

Fixed sample asset model view issue

Previously, on the Asset model samples page, if the selected sample asset model was already imported, clicking View would display a message indicating that the sample asset model had already been imported. With this fix, users can now click View to explore the hierarchy of the selected sample asset model.

Fixed widget dragging in dashboards

An Angular CDK library update caused the dashboard widget drag functionality to stop working. This issue has been fixed by aligning to the new version and dragging widgets is possible again.

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

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

Help and Service widget no longer opens a new tab when redirecting to the current application

The Help and Service widget, which provides helpful resources and links for users, previously opened a new browser tab whenever a user clicked a link that redirected to the current application they were using. This behavior could lead to multiple unnecessary tabs being opened. With this change, the widget now detects if the link points to the current application and opens it in the same tab instead. This improves the user experience by reducing tab clutter and making navigation within the application smoother.

Hide context indicators in untranslated strings at runtime

In the past, untranslated strings shown in applications might have included additional context indicators which were confusing for end users and not intended. With this change, context indicators are now hidden for untranslated strings at runtime. This improves the user experience when the strings are not yet translated, as end users will no longer see technical details not relevant to them.

Importing of Asset models with Location property

User can now import asset models with a Location property.

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

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 performance when setting geofence on smart rule for large device groups

Previously, setting a geofence on a smart rule for a group with many devices was slow and cumbersome, impacting the user experience. With this change, the performance has been significantly improved, making the process faster and more responsive. Users can now set geofences on smart rules for large device groups without experiencing delays or unwieldy behavior.

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.

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.

Improved validation error for invalid branding variant names

Previously, when specifying an invalid branding variant name via the UI or API, the resulting validation error was not clear and made it difficult to identify the issue. With this change, the platform now provides a more meaningful and specific validation error message when an invalid branding variant name is entered. This improvement helps users quickly identify and correct any issues with the specified branding variant name, saving time and effort in the configuration process.

Improved widget configuration layout

The widget configuration layout has been adjusted to improve usability and clarity. The configuration options are now grouped more logically and have additional explanations where needed. This change affects the layout of the widget configuration screen for all users. Existing widget configurations are automatically migrated to the new layout.

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.

Info added to Codex documentation on data grid filter not available in mobile screens

The information that the data grid filter as well as other functionalities are not available in mobile screens has been added to the Codex documentation.

Info gauge widget now supports device type dashboards

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

Info gauges resize properly when the window size changes

Info gauges in dashboards were not resizing correctly when changing the size of the browser window, leading to a poor user experience. This issue has been fixed and info gauges now resize properly to fit the available space when the browser window size changes. This improvement ensures that dashboards with info gauges remain visually appealing and readable regardless of the user’s screen size.

Introduce service registry with a hook for registering services

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

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

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

Label for the "Display as" function no longer overlaps with other elements in the header

In the Cumulocity user interface, the label for the “Display as” function in the header was overlapping with other header elements, making it difficult to read and select the desired option. This issue has now been resolved. The label for “Display as” is now properly positioned and no longer overlaps with the header, ensuring a clear and accessible user interface for all users.

List group dropdown accessibility has been improved

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

Loading locales for non-default languages is now possible

Previously, it was not possible to load locales for languages other than the default language configured in the system. This change enables the loading of locales for non-default languages. With this enhancement, users can now utilize locales for their preferred languages, even if they differ from the system’s default language setting. This improves the user experience by allowing for language-specific formatting and translations across the application.

Map marker popup correctly links to assets and devices

The link in the marker popup of a map now correctly references the respective asset or group.

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.

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.

Map widget's center coordinate inputs work consistently

In the configuration of the “Map widget” the center coordinates provided by the user via text input were not set correctly. This change ensures that the user can set the right coordinates also via text input and not only by dragging the map.

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.

Message banner added to branding editor

To provide a more flexible and customizable user experience, a new message banner option has been added to the branding editor. This feature allows administrators to create and display custom messages or announcements within their branded applications. The message banner can be used to inform users about important updates, maintenance schedules, or any other relevant information. This feature enhances the communication capabilities of the platform and enables administrators to effectively convey important messages to their users without the need for additional tools or workarounds.

Microservice SDK updated to Spring Boot 3.0

This is a follow-up on a recent announcement about migrating the Microservice SDK to Spring Boot 3.

Starting from version 10.20.150.0, the Microservice SDK is now using Spring Spring Boot 3.0.x. Please follow the Spring Boot 3.0 Migration Guide to upgrade your applications when updating to that or later versions of the SDK. To make the migration process easier we recommend first updating to version 10.20.134.0 with JDK 17 and later to version 10.20.140.0 with Spring Security configuration changes, if it was not already done.

Microservice SDK updated to Spring Boot 3.3

This is a follow-up on a recent announcement about migrating the Microservice SDK to Spring Boot 3.

Starting from version 10.20.155.0, the Microservice SDK is now using Spring Spring Boot 3.3.x, which marks the end of the recent dependency updates published in quick succession. Notice that along Spring Boot, most other dependencies were also updated to eliminate all security vulnerabilities those dependencies had.

Because of the amount of changes we also published intermediate versions to help with the upgrade process of all the applications using the SDK.

Version 10.20.150.1 contains a fix for the previously announced version 10.20.150.0 for applications configuring additional servlets. Use this version when updating your application to Spring Boot 3.0. For details refer to the Spring Boot 3.0 Migration Guide.

Version 10.20.151.1 is based on Spring Boot 3.1 and is recommended as an intermediate step to limit the amount of changes done at once. For details refer to the Spring Boot 3.1 Migration Guide.

Version 10.20.153.1 is based on Spring Boot 3.2 and is another recommended intermediate step. For details refer to the Spring Boot 3.2 Migration Guide.

Finally, when upgrading to version 10.20.155.0 based on Spring Boot 3.3, refer to the Spring Boot 3.3 Migration Guide.

Microservice SDK updated to Spring Boot 3.4

Starting from version 2025.0.12, the Microservice SDK is now using Spring Boot 3.4.2. Notice that along with Spring Boot, most other dependencies were also updated to be consistent to the dependencies which Spring Boot uses.

The version 2025.0.12 will also bring along updates to several third-party libraries and frameworks. These changes will be included in the org.springframework.boot:spring-boot-dependencies:3.4.2 dependency which comes with Microservice SDK.

Impact: The update may impact your microservices, potentially requiring code changes.

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

Microservice SDK updating to Java 17

This is a follow-up on a recent announcement about migrating Microservice SDK to Spring Boot 3. As a first step of this process, starting from version 10.20.134.0, the Java SDK and Microservice SDK are now both using Java 17 both on the source as well as the runtime level. This means that using Java 17 is now a minimum requirement for using the Microservie SDK.

Missing properties in cumulocity.config.ts file automatically added

If values for ng-cli name, context-path and key are missing in the cumulocity.config.ts file they are automatically derived from the name property in the package.json file.

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.

Navigator node property correctly changed after dashboard restore

In the past, restoring a dashboard did not properly update the node property of the navigator, leading to inconsistencies. This has now been fixed. The navigator node property is correctly changed after a dashboard restore, ensuring the restored dashboard matches the expected state.

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

New datapoint export component

To enable users to easily export datapoints from Cumulocity, a new generic datapoint export selector has been implemented. This new component allows users to select the time range, export type, aggregation (based on the export type) and file format for the datapoint export. Depending on the size of the datapoint records to be exported, the exported file is then generated and downloaded directly or emailed when ready. The datapoint export component makes it much simpler for users to get the device data they need out of Cumulocity in their desired format.

New widgets render properly when scroll is enabled

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

Option added to enable or disable the dashboard manager in the application configuration

In the Cockpit application, it is now possible to disable or enable the dashboard manager in the Application configuration page. By default, the dashboard manager is enabled.

Pan map to ensure marker popup is always visible

In the Map component, when a marker popup was opened, it could sometimes be positioned outside the visible area of the map, making it difficult for users to view the popup content. With this change, the map now automatically pans to the position of the opened marker popup, ensuring that it is always fully visible within the map viewport. This improves the user experience when interacting with marker popups, as the relevant information is now consistently accessible and readable.

Plugins installed via tag are now correctly displayed in the list

Previously, plugins that were installed using a tag were not properly displayed in the list of installed plugins, which could cause confusion for users trying to manage their plugins. With this change, any plugin installed via a tag will now correctly appear in the plugins list. This improvement enhances the accuracy and reliability of the plugin management system, ensuring that users have a clear overview of all installed plugins regardless of the installation method.

Plugins now shown with correct type "official" on the Extensions page

On the Extensions page in the Ecosystem menu a ribbon is used to highlight official plugins. This ribbon was not shown for certain plugins, even though they were official. This issue has now been fixed. The ribbon is displayed for all official plugins on the Extensions page.

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.

Prepare to update Microservice SDK to Spring Boot 3

This is a follow-up on a recent announcement about migrating the Microservice SDK to Spring Boot 3.

As a second step of this process, starting from version 10.20.140.0, the Microservice SDK is now using Spring Security 5.8. This change enabled a migration preparing for Spring Security 6.0 to be performed in the Microservice SDK following this migration guide. We recommend all users of the Microservice SDK to also follow that guide when updating their applications using the updated version of the SDK.

Note that following the changes in the MethodSecurityExpressionHandler configuration described here, the methods provided by com.cumulocity.microservice.security.service.SecurityExpressionService that were previously configured using a custom SecurityExpressionRoot extension, are now available via an independent bean definition named c8yAuthz. This means that, for example, the expression isCurrentTenantManagement() will no longer resolve and needs to be prefixed by the bean name instead @c8yAuthz.isCurrentTenantManagement(). This allows customers to easily add their own security expression extensions, if needed.

Prevented duplicate asset entries in the navigator when configuring top level nodes

Fixed an issue where editing top level nodes in the Application configuration page in the Cockpit application created duplicate entries of assets in the navigator. Now the navigator updates properly without creating redundant menu items.

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.

Provided translations in complex properties

Translations in German are now available for labels in complex properties.

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

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

Radial gauge can now have 0 as max value

Previously, the “Radial gauge” widget did not allow setting the maximum value to 0, limiting its flexibility in certain scenarios. With this change, users can now set the max value of the radial gauge to 0 if needed. This enhancement expands the range of values the radial gauge can display, enabling users to represent a wider variety of data points and create visualizations where a maximum value of 0 is required.

Range display now shows correct value if datapoint maximum is 0

In some cases, datapoints with a configured maximum value of 0 were not displayed correctly in the range display of dashboards and other visualizations. This issue has been resolved and the range display now correctly shows the value for datapoints with a maximum of 0. This change improves the accuracy and consistency of data visualizations for all users.

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.

Remove deprecated ILabels interface

The deprecated ILabels interface has been removed from the Web SDK. Instead, the ModalLabels interface is used.

Renamed "Position in navigator" field in the dashboard settings

For better clarity, the Position in navigator field in the dashboard settings has been renamed to Position in tabs.

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.

Replaced group creation dialog in widgets with redirect to Groups page

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

Replaced subassets view in DTM with new subasset module from dtm-plugins component

The subasset module, which was originally imported from the ngx component, has now been replaced with the official plugin from the dtm-plugins component. This change maintains all existing functionality while enabling easy integration of module with both default and custom web applications.

Report icon correctly updated in navigator

Previously, when a report with the Show in navigator option enabled had its icon changed, the icon was not updated in the navigator. With this fix, the icon is updated in the navigator as soon as changes are saved.

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

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

Restored dashboard time range selector option for "Data points table" widget

In order to ensure seamless operation of dashboards with global date context and the “Data point table” widget, the dashboard time range selection option had temporarily been removed from the “Data point table” widget. This option has now been restored for this widget.

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

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

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.

Rotation widget shows the actual model

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

Save button always enabled for number properties in Asset properties widget

Previously, in the “Asset properties” widget, the Save button was disabled for device properties of type “number” that were added via the API, as their type defaulted to “string”. This update ensures that the Save button is enabled and the “number” type is kept.

Script tags are preserved in SCADA widgets

The SCADA widget now preserves script tags if the code sanitization option is set to “none”.

Search is no longer triggered on pressing the space key

Previously, there were some issues with the search functionality when using the new select component. These issues have been fixed. The search is no longer triggered when pressing the space key in the select component, so that spaces can be used in search terms in the usual way.

Search no longer highlights the first element

In certain scenarios, the search functionality in the UI highlighted the first element in the search results. This has been fixed and the first element in the search results is no longer focused.

Searching for devices blocked when creating or editing a private smart rule

In the past, it was possible to search for devices when creating or editing a private smart rule, which could potentially leak information about devices the user should not have access to. To address this security concern, searching for devices is now blocked when creating or editing a private smart rule. This change ensures that users can only select devices they are authorized to access, preventing any potential data leaks. The impact of this change is limited to the creation and editing of private smart rules, and users can still search for devices when creating or editing non-private smart rules as before.

Separate translation for the term "Aavilability" 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.

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.

Smart rule pin dropdown moved from the header to the card body

To improve the user experience when configuring smart rules, the pin dropdown has been moved from the smart rule header to the card body. This change makes it easier for users to find and interact with the pin dropdown, as it is now located in a more prominent and intuitive position within the smart rule configuration.

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

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

Support for loading dynamic options from app-specific paths

To provide more flexibility for configuring applications, Cumulocity 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.

Support self-scoped plugins for applications cloned to a different context path

Previously, when cloning an application to a different context path, the self-scoped plugins within that application would not load. With this change, the self-scoped plugins are now loading as expected.

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.

Switching to Linux cgroup v2

As announced earlier, see release 10.18, Cumulocity SaaS instances will gradually be switched to Linux cgroup v2 in the second half of the year 2024. Microservices must use a Linux cgroup v2 aware application runtime from then on. When executing microservices which are not compatible with cgroup v2 on Cumulocity in these versions it might happen that the information provided by the application runtime concerning available CPU and memory is not correct. This might lead to incorrect memory and thread allocation in the microservice container process.

cgroup is a Linux kernel feature to organize processes hierarchically and distribute system resources along the hierarchy in a controlled and configurable manner. Every process in the system belongs to one and only one cgroup. In Cumulocity cgroups are used to enforce container resource limits.

When using the Cumulocity Microservice SDK for developing microservices, ensure to configure a Java version which is cgroup v2 aware when building your microservice. When using Java 8, ensure to use openjdk8u372 or higher. When using Java 11, use Java 11.0.16 or higher, or use Java 15 or higher. When using a server runtime other than OpenJDK Java as microservice application runtime, refer to the documentation of the provider.

Translations loaded from a dedicated application

To improve the maintainability in the application, the translations are now loaded from a dedicated application. Previously, the translations were scattered across different parts of the codebase, making it difficult to manage and update them consistently. With this change, all translations are consolidated in a single location, simplifying the process of adding, updating, and maintaining translations. This change does not have any direct impact on end users or the functionality of the application, but it contributes to a cleaner and more organized application infrastructure.

Typeahead control validation fixed when using JSON path in 'displayProperty'

Previously, when using a JSON path in the displayProperty of a typeahead control, the validation not allowing free entries (allowFreeEntries = false) was not working correctly and could lead to unexpected behavior, such as creating orphan entries when an item needs to be assigned to a parent entity. This issue has now been fixed. This change improves the reliability and usability of typeahead controls in forms.

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.

Upcoming Spring Boot version update for Microservice SDK

We are pleased to announce an upcoming update to the Spring Boot version used in the Microservice SDK. The new version will be Spring Boot 3.3.3, which will also bring updates to several third-party libraries and frameworks. These mandatory changes will 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 starting in Q4 2024 and in versions of the next annual release 2025. A separate announcement will be made to confirm the CD version containing the change.

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

Update illustrations in Cockpit

As part of continuous improvement efforts, the illustrations used in various sections of the Cockpit user interface have been updated. The new illustrations provide a fresh and modern look while still effectively conveying the intended message or concept. This change enhances the visual appeal and user experience of the Cockpit interface without impacting any functionality or existing user workflows.

Updated AngularJS and angular-schema-form dependencies

As part of ongoing maintenance to keep the application up-to-date and secure, the AngularJS and angular-schema-form dependencies have been updated to their latest compatible versions. This change ensures the application remains on supported dependency versions and benefits from any bug fixes or improvements in these releases. The update is not expected to introduce any user-facing changes or compatibility issues with existing functionality.

Updated branding colors and logo

As part of ongoing efforts to modernize the look and feel of the Cumulocity UI, the branding colors and the logo have been updated and aligned with current design trends. For example, the brand logo has been relocated to the bottom of the navigator to enhance user focus on navigation elements, reduce visual competition with the app icon, and optimize space utilization. This change provides a refreshed visual appearance throughout the Cumulocity UI, without impacting existing functionality or user workflows, but it could imply a need to review any custom branding applied as some design tokens have been updated or removed. Additionally, the link color is no longer related to the branding color and needs to be updated if a branded link color is wanted.

Updated confirmation message when deleting an asset on the Subassets page

Previously, on the Subassets page, the confirmation message when deleting an asset was: You are about to delete: "<<asset_name>>". This operation is irreversible. Do you want to proceed?. The checkbox contained the message: Also delete all devices inside "<<asset_name>>" and its subassets. This caused confusion as it implied that not selecting the checkbox would prevent the deletion of its subassets. To clarify, the messages have been updated to: You are about to delete: "<<asset_name>>" and all its subassets. This operation is irreversible. Additionally, the checkbox message has been revised to: Also delete all devices inside "<<asset_name>>".

Updated label capitalization

Inconsistent capitalization of labels, error messages and info messages has been unified throughout the Digital Twin Manager application.

Updated link to the documentation in contextual help of Subassets page

Previously, the link in the contextual help on the Subassets page pointed to the Cockpit documentation. This URL has been changed to point to the Digital Twin Manager application where subassets are described as part of the dtm-plugin.

Updated the section on internationalization in the Cumulocity Codex

To improve the documentation around internationalization, the “Internationalization” section of the Cumulocity 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.

Upgrade to Angular 18

As part of keeping the Cumulocity platform up-to-date with the latest web technologies, Cumulocity has been upgraded to use Angular 18. This upgrade brings the latest features, performance improvements, and bug fixes from the Angular framework to the Cumulocity platform. The upgrade to Angular 18 should be largely transparent to users, with no visible changes to the user interface or existing functionality. However, any custom widgets or plugins developed for previous versions of Cumulocity may need to be updated to ensure compatibility with Angular 18.

Upgraded Angular and Web SDK versions

Angular has been upgraded to version 18.2.11 and the Web SDK has been updated to 1021.0.4.

Upgraded angular-gettext-tools library to fix vulnerabilities

The angular-gettext-tools library is used to extract translatable strings from the source code in the Cumulocity UI. Security vulnerabilities were discovered in the nth-check and cheerio dependencies of angular-gettext-tools. To address these vulnerabilities, angular-gettext-tools has been upgraded to a newer version that includes fixed versions of the affected dependencies. This change is not expected to have any impact on the functionality of the Cumulocity UI.

Users can now reliably check active filters for subtenants

In some situations an error occurred when checking active filters in the Subtenants page, preventing users from properly viewing and managing the filters. This issue has been resolved. Users can now reliably check active filters for subtenants without encountering an error.

Users can reset their password properly

In some cases, users were unable to set a new password using the password reset form. This issue has been resolved and users can now successfully reset their password as expected.

Users with locale es-419 can again access the Cumulocity platform

Some users in Latin America were unable to access Cumulocity when their locale was set to es-419. This issue has been resolved and users with the es-419 locale can now successfully access and use the Cumulocity platform again. The fix ensures that users in the affected region have uninterrupted access to Cumulocity and can utilize all its features as expected.

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.

Widget action dropdown closes properly after saving a dashboard

Previously, when opening the edit/remove dropdown to make changes to a widget in a dashboard and then saving the dashboard, the widget’s edit/remove dropdown remained open. This could lead to unintended modifications if the user accidentally interacted with the open dropdown. With this change, the widget’s action dropdown now automatically closes after saving the dashboard.

Widget title and actions aligned with overlay and hidden appearance settings

The display of widget titles and action buttons has been optimized to align with the overlay and hidden widget appearance settings. Previously, these elements were always visible, which could be confusing when the edit widgets mode was disabled. With this update, the action button is now only displayed when either the overlay or hidden appearance is selected in the widget settings and the edit widgets mode is enabled.

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.

The multi-tenant Apama-ctrl-mt-4c-16g microservice now supports Analytic models. The Analytics Builder page is shown for tenants subscribed to the microservice, allowing users to create, deploy and manage analytic models.

Added breadcrumbs to Streaming Analytics application

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

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.

Apama Docker images moving to Amazon ECR

The Apama Docker images are now available at public.ecr.aws/apama, and can be viewed at https://gallery.ecr.aws/apama/. Previously, they were available at softwareag/, and viewed at https://hub.docker.com/u/softwareag.

Within any Dockerfiles that use the Apama images, you will need to change FROM softwareag/<IMAGE>:<TAG> to FROM public.ecr.aws/apama/<IMAGE>:<TAG>.

The location of Apama within the image has been moved from /opt/softwareag to /opt/cumulocity. Existing images remain unchanged.

Asynchronous alarm inputs no longer cause internal errors in Analytics Builder 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.

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 DataHub will automatically stop permanently failing offloading pipelines.

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

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

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.

Deprecation of TrendMiner offloading mode

For the offloading of the measurements collection Cumulocity 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.

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.

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()) { ... }

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.

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 base collection, you can interactively browse through the structure of the data in order to determine which specific sub-structure you want to offload.

Extract a property with a period in its name using the Extract Property block

The Extract Property block in Analytics Builder now includes a new optional checkbox called Ignore Separators In Property Path. This allows you to extract a property that has a separator such as a period (.) in the property name. For example, if the Ignore Separators In Property Path checkbox is selected and the Property Path parameter is specified as location.city, then the property name location.city is extracted from the input value. For compatibility, the previous behavior remains as the default, that is, the new checkbox is not selected by default.

Fixed a potential deadlock when a large number of requests are waiting to be flushed

When using a large number of client connections with the client.numClients tenant option, there was a potential deadlock when a large number of requests were waiting to be flushed. This has been fixed.

Geofence smart rule no longer creates duplicate alarms

The On geofence create alarm smart rule was periodically creating duplicate alarms when the geofence configuration was triggered. This issue has now been resolved.

Improved option name and documentation for Pulse block in Analytics Builder

To improve the user experience in Analytics Builder, the On value change option of the Mode parameter in the Pulse block has been renamed to On value change (excluding to false). In addition, the block reference has been updated to clarify that for a boolean input, a pulse is only sent when the input changes to true (not false).

Improved robustness of Streaming Analytics against transient network issues

The robustness of EPL apps and Analytics Builder models against transient network issues has been improved. Specifically, if a temporary network issue causes a problem while saving EPL apps or Analytics Builder models to the inventory, then the EPL app or the Analytics Builder model is still displayed with the correct state in the UI, instead of being displayed with an incorrect state or not displayed at all.

Improved runtime performance of Analytics Builder

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

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.

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

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

New alarm for delayed input events that are dropped from Analytics Builder models

Previously, warning messages were logged when input events were dropped by an Analytics Builder model because they were delayed beyond the reorder buffer duration. In addition to the warning messages, an alarm is now raised when input events are dropped. The alarm provides improved visibility compared to relying on viewing log messages, which is especially useful for multi-tenant Streaming Analytics microservices where it may not be possible to view the logs at the parent tenant. See Analytics Builder dropped events for more details on the alarm.

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.

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 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();
    

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.

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.

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.

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.

REST queries with pageSize set to 1 no longer loop infinitely

The Cumulocity transport had a regression (introduced in Streaming Analytics 10.16) that could cause REST queries to infinitely loop if pageSize was set to 1. This is now fixed.

Setting a negative value for the `client.numClients` tenant option now results in the default value of 1 being used

If the client.numClients tenant option was set to a value less than zero, the Apama-ctrl microservice was unable to communicate with the Cumulocity IoT platform. Now, a warning is logged and a default value of 1 is set to ensure the microservice can communicate.

Smart rule "On missing measurements create alarm" now sends alarms without delay

The “On missing measurements create alarm” smart rule now generates the alarms at the time period configured in the smart rule. Previously, the alarms were generated with a delay of approximately one minute.

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.

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.

Upcoming changes to Apama runtime embedded in Streaming Analytics

The Python runtime shipped with Apama will be upgraded to version >=3.11 and the Java runtime will be upgraded to version Java 17. For details, see (the latest Apama change logs)[https://cumulocity.com/apama/docs/latest/change-logs] in the Apama documentation. The next major releases of Apama will drop support for Windows. As a consequence, the Eclipse-based development environment will also be unavailable. This will affect the development and testing of EPL apps and Analytics Builder custom blocks natively on Windows.

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.

Time Series Migration application added to default subscribed microservices

Starting in Q1 2025, the Cumulocity platform will include the Time Series Migration application as part of the default set of subscribed microservices. This service will be automatically enabled for both existing and newly created tenants. The application facilitates the migration of tenant data from legacy measurements to the new time series storage. For more information, refer to Time Series migration.