Skip to content

Changelog

1.4.1 / 2025-05-15

Added

  • Added endpoint to count devices. Several counts can be requested at the same time, with various conditions and operators. Read the operators documentation for more information.
  • Improved job ordering. Now, DB updates are done as soon as the IoT Hub / MQTT update is done, instead of waiting for all IoT Hub / MQTT jobs to be completed. This results in improved visibility regarding the campaign progress.

Modified

  • IoT Hub is now fully optional in API & Terraform. Note that a new use_iothub variable is available in Terraform. It is set to true by default to avoid breaking changes during the upgrade. To disable it, explicitly set it to false. This can be done in GitLab by setting the USE_IOTHUB environment variable to false, which will automatically configure Terraform.

Fixed

  • Removed all deprecated environment variables related to RabbitMQ credentials from GitLab.
  • Device list in the front-end now properly responds to quick folder changes, which no longer results in an invalid list being displayed.
  • Fixed a permission issue between K8S and Azure Key Vault. K8S can now properly retrieve secrets.
  • Fixed the documentation deploy job trigger. It is now properly triggered when a file is modified in nested folders.

1.3.0 / 2025-04-03

Added

  • Documentation now includes Kubernetes deployment instructions.
  • RabbitMQ logs are now persisted in the Kubernetes setup.
  • In the device management front-end: persisted the last selected device type from the firmware list in local storage to retain selection upon navigation back and forth.
  • Added an order_by clause in the device search endpoint.

Modified

  • The documentation is now built with Mkdocs instead of Docusaurus.
  • Kubernetes now uses the secret store CSI driver to read secrets from a Key Vault instead of creating secrets from environment variables defined in GitLab.
  • Removed the dialog in the device management front-end after creating or updating a device. Now, users are redirected to the device channels after creating the device and to the device details after updating it.
  • Improved the ergonomics of the input fields in the firmware type form dialog.

Fixed

  • Removed unused options in the device transfer dialog in the device management front-end.
  • Fixed a casing issue that could lead to a 500 status code when submitting metadata or configurations.
  • Fixed an infinite loading issue in the settings front-end when the selected tenant is no longer available (e.g., deleted).
  • Device management front-end now properly cancels firmware listing HTTP requests upon changing the tenant or device type.

1.2.0 / 2025-03-19

Added

  • Certificate based provisioning is available again when using MQTT.
  • Device search endpoint endpoint now permits to search devices by configuration.

Fixed

  • Doc deployment does not fail anymore when the pipeline Azure AD account has access to several subscriptions.
  • Integration test suite no longer fails when sending telemetries in several tests when the sending takes longer that the timeout used when reading the telemetries afterwards.
  • Fixed 500 error codes that could be received when creating or launching campaigns when one of the devices was deleted at the same time.

1.1.0 / 2025-02-28

Added

  • Metadata can now be added to folders and tenants. New endpoints are available to search folders and tenants based on their metadata.
  • Firmwares can now be created without uploading a file, simply by referencing an external link. This allows the devices to get their files from an external system.
  • BREAKING CHANGE During campaign creation, devices can now be filtered by device type, tag and folder. Submitting a device list is not supported anymore. Consequently, the related API endpoints have changed fields folderIds, tagIds and deviceTypeIds. Campaigns previously created will still be available and functional, but will not be displayed properly in the front-end.
  • Load testing CLI can now provision multiple MQTT devices.
  • Initiated development of an alternative version of the ingestion without using Azure resources. It is based on Node.js, Docker, and RabbitMQ.
  • Added liveness probes to Redis Azure Container Apps.
  • New npm script in the API folder to populate a tenant with devices, folders, etc. for testing and demonstration purposes.

Modified

  • Due to many Azure limitations, RabbitMQ is now deployed with a Kubernetes cluster instead of Azure Container Applications. This setup is not yet finalized, but dramatically increases the stability of RabbitMQ.
  • Improved performances of many SQL requests in the API, especially in campaigns and supervisions.
  • Bumped Terraform azapi provider to version 2.0.1.
  • Bumped Terraform azurerm provider to version 4.10.0.
  • Bumped Angular to version 19.
  • Bumped version of NodeJS used in Docker images to 22 (LTS).
  • Bumped Redis version to 7.4.2.
  • Bumped Caddy version to 2.9.1.

Fixed

  • Fixed integration testing failures caused by unpredictable Azure Functions execution and startup time.
  • An API prefix can now be provided to RabbitMQ, fixing a issue preventing the device auto provisioning with certificates to properly function.
  • Fixed step-cli version to 0.28.0 in pipeline images to solve an unavailability issue.
  • Fixed a 500 error in HTTP telemetry ingestion caused by an unhandled invalid format error.
  • Terraform Redis resource no longer causes invalid plans due to a systematic FQDN update.
  • Front-ends sidebar and app menus now properly highlight the selected menu when served by Caddy.
  • Fixed a bug causing the device metadata to be cleared when provisioning a device on MQTT.
  • User group permissions menu now properly displays the folder names instead of an empty space.
  • During tenant deletion, storage account container is now deleted only if the tenant is properly deleted from the database.

1.0.18 / 2024-08-19

Added

  • IDP ID can now be input in the front-end during user creation when IDP sync is disabled.
  • (EXPERIMENTAL) MQTT channel now supports self-signed certificates.

Modified

  • Updated default release process (using Gitlab) to promote development artifacts to production instead of rebuilding them.
  • Reduced Docker images deployment duration in Gitlab pipeline jobs.
  • Improved device provisioning rollback

Removed

  • Removed the deprecated API service used to migrate device ingestion information from Storage Accounts to Redis.

Fixed

  • Fixed 500 error that could happen during users update.

1.0.17 / 2024-07-15

Added

  • Identity provider synchronization is now optional: users can be created and removed from Kamea without any update request on the identity provider.
  • Front-ends can now be served by Caddy instead of being distributed through Azure CDN.
  • New Gitlab pipeline to manually run a full Terraform execution, along with optional applications deployment.

Modified

  • (EXPERIMENTAL) Upgraded RabbitMQ to version 3.13, which includes support for MQTT 5.
  • Cloud to device MQTT commands can now include an expiration time (MQTT 5 feature).
  • Upgraded Azure Functions to V4.
  • Increased default messages max delivery count in the Azure Functions subscriptions to the Azure Service Bus.

Fixed

  • (EXPERIMENTAL) RabbitMQ now properly persists data along restarts and updates.

1.0.16 / 2024-06-17

Added

  • (EXPERIMENTAL) MQTT is now supported in the configuration update campaigns.
  • (EXPERIMENTAL) Device management front-end now displays more information about the MQTT provisioning of a device. The broker certificate used by the device to establish a TLS connection can now be downloaded from the front-end and the API.
  • (EXPERIMENTAL) Log file persistence and rotation setup in RabbitMQ.
  • Unit and end-to-end tests suites can now be skipped in the GitLab pipelines by setting the environment variable SKIP_PIPELINE_TESTS to true.
  • Improved the test coverage of the MQTT feature: added unit, end-to-end, and integration tests.

Modified

  • Terraform updates:
  • Increased Service Bus Subscriptions max retry count from 2 to 10 to avoid messages accidentally going into the dead letter queue.
  • Added a file share to persist RabbitMQ log file.
  • RabbitMQ resource now uses the correct variable type for its authentication secret.
  • Targeted Terraform GitLab job now properly handles MQTT resources.

Fixed

  • Fixed a non-awaited promise in the device transfer endpoint, which caused the endpoint to answer before the operation was properly completed.
  • Fixed an API crash that could happen during the configuration update of a device provisioned on MQTT.
  • Tests tenants are now properly cleaned after running the integration testing suite.
  • Fixed the retryUntil utilitary function to use the provided count parameter instead of the default one. This shortens the execution time of the integration tests.
  • Removed a SQL deadlock which happened when trying to create an event and remove a tenant at the same time.
  • Fixed AMQP consumers Dockerfile. A dependency was not properly included.

1.0.15 / 2024-05-29

Added

  • (EXPERIMENTAL) First functional MQTT deployment with Terraform, proper Docker images, etc. Next releases will include more automated testing and finalize some certificate-related issues.
  • Added new access control tab on the tenant details page to display all roles assigned to the tenant. Also available through the API.
  • Added documentation for:
  • Routing;
  • Supervisions;
  • Campaigns.
  • Added integration testing for campaigns & routing.
  • Redis is now available as a telemetry database. When using it, the latest value of each key is saved. Includes the source code, the pipeline files and the Terraform configuration.
  • Device management front-end now allows choosing the telemetry database to use when reading a device telemetries. Also includes a query parameter to select the database in the API when requesting telemetries.
  • To simplify local development, added a script used to configure a Service Bus with new topics & subscriptions. This avoids conflicting with the live Service Bus when working locally. See the local development setup page.

Modified

  • Terraform updates:
  • Added Terraform variables for vnet_route_all_enabled and ip_restriction_default_action for App Services and Azure Functions.
  • Added support for workload in Redis ACA environment.
  • Added variable to configure the name of the Resource Group created by the ACA environments (Redis & RabbitMQ).
  • Made Caddy & CDN resources optional.
  • Fixed issue with conditional outputs.
  • Bumped azurerm provider version to 3.103.1.
  • Replaced Witekio logo in front-ends and documentation by The Embedded Kit logo.
  • Updated git and ESLint configurations to force LF line breaks across the code base.
  • Front-ends no longer display buttons and menus when the user is not authorized. This leads to less error messages.

Fixed

  • Replaced Yarn by npm in documentation build & deployment jobs to fix an issue.
  • Deleting a tenant or a folder now properly deletes the role assignments previously assigned to it.
  • Deleting a user from a tenant now properly removes their role assignments to the tenant.
  • Default JSON codec no longer accepts raw strings and numbers.
  • In integration testing, the device type to use is now passed in parameter, to avoid reading the wrong one during execution.
  • Forced port to use in Caddy Dockerfile. This solves an issue caused by Azure related to the fact that the $PORT variable is no longer automatically populated.

1.0.14 / 2024-02-20

Added

  • (EXPERIMENTAL) Raw MQTT now supports command sending.

Modified

  • Added a default IoT Hub job execution time when running a twin update job since it is now required by the latest IoT Hub version.

Fixed

  • API E2E tests can now execute successfully without having to declare MQTT or AMQP related variables.

1.0.13 / 2024-02-12

Added

  • (EXPERIMENTAL) Raw MQTT now supports devices connectivity updates.
  • In device management front-end, added the tenant logos in the tenants selection list.
  • Added front-end pages for:
  • Routes configuration;
  • Routing update in device type details page.
  • API can now support different endpoints to request devices telemetries through the use of environment variables, instead of being coupled with the InfluxDB one.

Modified

  • BREAKING Its is no longer possible to update a user's email address. This fixes a potential security failure. It is now advised to create another user with the new email address instead.
  • Removed deprecated code and pipeline.
  • Reduced both front-ends compilation time and production bundle style with an angular.json update.
  • Kept aligning device management front-end with the design system.
  • In device management front-end, device commands inputs and outputs are now displayed with a code editor like tool.
  • Many buttons are no longer visible in the front-ends when the user misses the appropriate access rights. The entire application has not been covered yet. This will be completed in a further release.
  • Terraform updates:
  • Bumped AzureRM provider to v1.0.90.
  • Added optional variable to core platform and InfluxDB modules to add all App Services & Function App to a subnet.
  • App Services and App Functions can now take an externally created service plan ID in parameter instead of systematically creating a using a default one.

Fixed

  • Logout buttons on device management & settings front-ends is working again as expected.
  • Docker images used to build API & WSS now properly include all expected node_modules, instead of just the root ones.

1.0.12 / 2024-01-22

Added

  • Added documentation for firmware and firmware types.
  • Added routing feature: routes can now be created, and telemetries can be sent to different routes based on their keys. This feature will be documenter in a further release.
  • Added a load testing CLI used to test how the platform responds to an increase in telemetries sending.

Changed

  • Bumped NestJS to v10 and TypeScript to v5 in the API project.
  • Bumped Angular to V17 in the device management and settings front-ends.
  • Increased the execution speed of some E2E test suites.
  • Replaced the azapi_resource by azurerm_container_app for Redis hosting in Terraform.
  • Bumped Sonar CLI version to v5.0.1 in pipeline.
  • Removed a lot of deprecated code / files and unmaintained tools.
  • Device types can no be deleted without any 409 error if they have at least one firmware type but no related firmware.
  • (EXPERIMENTAL) Raw MQTT now supports devices configurations and states.
  • New endpoint indicating whether the current Kamea environment has been initialized or not.
  • Firmware update campaigns can now be created from the device management front-end.

Fixed

  • Updated deprecated dependency in Chrome Headless Docker image.
  • Device types can no longer be created with two channels sharing the same interface.
  • Devices are no longer loaded twice on the device management front-end.

1.0.11 / 2023-11-28

Added

  • Added firmware update feature: firmwares can now be uploaded in order to be retrieved by the devices. Firmware types can be defined by device type.
  • Devices can be updated to a new firmware version from their details page.
  • Added campaigns feature: device configuration can now be massively applied much more conveniently that with the bulk operations.

Removed

  • The bulk operations menu has been replaced by the campaigns menu in the management front-end.

Changed

  • Modernized front-ends design.
  • HTTP configuration job has been replaced by the DB one, since they're redundant.
  • Started preparation of the infrastructure for the routing feature, leading to the following Terraform modifications:
  • Rename the InfluxDB Service Bus topic subscription from telemetries-storage to influxdb.
  • Added subscription rules to the data-decoded-topic Service Bus topic.
  • All subscription delivery counts are now 2 instead of 5.

Fixed

  • Trying to provision devices to IoT Hub with self-signed certificates of different lengths now returns the expected error.
  • Duplicated empty lines are no longer created in the role assignments table when starting the API. Note that this did dot lead to any bug or security issue, but cluttered the database.
  • Generated migrations now longer contain anything unwanted.
  • Disabled buttons that were still clickable are no longer clickable.

1.0.10 / 2023-10-06

Added

  • (EXPERIMENTAL) Started implementation of an MQTT ingestion module. The development is still ongoing.
  • In supervision, devices can now be filtered by validity status.
  • Supervisions front-end now displays correctly based on the user's permissions.

Changed

  • Terraform updates:
  • Bumped azurerm provider to latest version.
  • Extracted the VNET into its own module.
  • Made IP restrictions dynamic on webapp and Azure Functions resources.
  • All resources now have a configurable name.
  • Bumped ACA API version.
  • Disabled Service Bus topics partitioning on Premium tier.

1.0.9 / 2023-09-15

Added

  • (EXPERIMENTAL) Users can now monitor the configurations & states of their devices through supervisions. They can be accessed both through the API and the management front-end. This feature will be completed and properly documented in a further release.
  • Errors happening during telemetry ingestion can now be retrieved through the API and the device details page.

Changed

  • Settings application has been reworked to homogenize most of the pages, and to modernize the design.

1.0.8 / 2023-07-26

Fixed

  • Tenant & folder selection popup in device management front-end does not reopen upon closing anymore.

Changed

  • Replaced the usage of a Storage Account by Redis in the ingestion chain to improve throughput. A process runs when starting the API to migrate existing devices from the Storage Account to Redis. No manual operation is required.
  • Terraform updates:
  • Extracted Azure SQL database into its own module in order to allow customers to implement theirs and completely override its configuration if needed.
  • InfluxDB Azure Function access key is no longer used to authenticate the API. It has been replaced by a custom mechanism. The first Terraform apply does not block anymore while waiting for source code to be deployed to this function.
  • Added variables to allow zone redundancy configurations on resources that needed it.
  • Added variables to configure some remaining hardcoded options.
  • Renamed several variables to improve consistency.
  • Several variables are now optional.
  • DPS is now optional. It can be disabled by setting the variable use_dps to false in the iothub-module.
  • Made some SKUs configurable through variables.
  • Created an explicit dependency to avoid issues while creating Azure Container Apps.
  • Almost all resources are now returned in modules outputs.
  • Reduced false positives in modification detection during the Terraform plan stage.
  • Refactored CSS and pages structure in settings front-end to reduce code duplication.

1.0.7 / 2023-07-07

Added

  • Description field in service accounts.
  • Device types can have an icon. It can be uploaded through the settings front-end.
  • Users within a user group can be listed in the settings front-end.

Fixed

  • Devices created from IoT Hub with a name that is not Kamea's internal ID can now be configured through Kamea API without receiving an error.

Changed

  • Homogenized design in several pages of the settings front-end.
  • GitLab pipeline is not executed anymore when pushing commits that are not within a merge request.
  • Bump management and settings front end to Angular v16.
  • Front-ends custom domain Azure resources names can be configured in Terraform.

1.0.6 / 2023-06-19

Added

  • API automatically creates JSON & CSV codec on startup if they do not already exist in database.
  • API automatically creates IoT Hub & HTTP interfaces in database if they do not already exist.
  • Service account and API keys can be edited in the front-end.
  • Support for SHA-256 thumbprints for self-signed certificates in IoT Hub.

Fixed

  • API does not return 500 error codes anymore on certain endpoints when using API keys authentication. Note that some endpoints remain unaccessible to service endpoints (/users/current for instance), they now return 401 error codes with a message indicating the issue.
  • API does not return 500 error codes anymore when trying to create a user who is already declared as guest in the AD B2C tenant. Side effect: the proxy address field is not filled anymore in B2C when creating a user.
  • Replaced value in documentation that was falsely detected as a tag by Docusaurus and lead the build stage to fail.
  • Dockerfile for Redis image now builds correctly on Azure DevOps CI runners.

Changed

  • Device name is now unique by tenant instead of globally.
  • Terraform updates:
  • Compression enabled in CDN.
  • Added variables for several values that were hardcoded.
  • Fixed circular dependencies due to outputs that were exported from incorrect sources.
  • Removed useless or deprecated variables.
  • Forced lower case on naming of some resources.
  • All token, passwords and connection strings are now marked as sensitive in inputs & outputs.
  • Forced HTTPS on storage accounts and CDN endpoints.
  • Fixed variable names that did not respect the naming convention.
  • Updated AzureRM provider to latest version (3.60.0).
  • Resource names can now be configured through module variables.
  • Updated NodeJS version in Azure Functions to v18.
  • Added function_cors_allowed_origins variable in core platform module to configure CORS allowed origin in the ingestion Azure Functions. It defaults to *.
  • Added back linked_hub block to DPS resources following bugfix in azurerm_iothub_dps resource.
  • Renamed Docker related variables from gitlab_[...] to docker_[...], and removed api_registry_image_path variable.
  • Azure Maps Account keys are now available in outputs maps_account_primary_key and maps_account_secondary_key.
  • Added tags variable to configure tags on all created resources.

1.0.5 / 2023-06-05

Deprecated

  • Deprecated URLs that do not contain the tenant ID in the route parameters.

Added

  • Device endpoints format match the other endpoints: including the tenant ID.
  • Terraform variable reverse_proxy_extra_cors used to add additional IP addresses to the Caddy Azure App Service CORS rules.

Changed

  • Updated Terraform resource providers for App Services and Azure Functions that were deprecated.

Fixed

  • Devices having only HTTP as a possible channel now display their channel currently on the front end instead of an empty tab.

1.0.4 / 2023-05-15

Added

  • Documentation can be automatically deployed.
  • Connectivity status: delay without telemetry before considering device as offline can be configured.
  • Service accounts can be created along with API keys to authenticate backend services to the API.
  • Device types can be created, updated and deleted through the API and the front-end.
  • Channels can be created through the API.
  • Documented device provisioning and device metadata types (custom / system).

Changed

  • Automatic licenses CI job has been disabled by default to reduce pipeline execution time.
  • Fonts are embedded in the front-ends instead of retrieved from Google APIs.
  • Deploying front-ends now remove previous files in the Azure Storage Account.
  • Websocket server documentation is now generated during development an statically served at runtime.
  • Restricted DB access: it can now only be accessed by the API IP addresses.

Removed

  • Test root certificate is no longer created in Azure DPS by Terraform.
  • Removed telemetry simulation Azure Function.

Fixed

  • Fixed an issue that sometimes caused devices to be duplicated upon reception of an IoT hub lifecycle event.

1.0.3 / 2023-04-03

Added

  • Device connectivity status are now retrievable through the API and the websocket. It includes status from IoT Hub and from telemetries.
  • Device connectivity status displayed on the device details page.
  • Devices can be filtered by connectivity status.

Changed

  • Bumped Business app Angular to v15.
  • Merged some build and test CI jobs to reduce pipeline execution time.
  • Cached npm packages to reduce pipeline execution time.
  • Refactored Service Bus topics to handle standard messages instead of IoT Hub specific ones.
  • Refactored Terraform files to use a more modular structure.
  • Removed last hardcoded values from front-end (in the device types list).

Fixed

  • Authenticated checkin does no fail anymore when called a few seconds after signing up in B2C.
  • Fixed shared library imports to avoid self-references and cyclic imports.

1.0.2 / 2023-02-17

Added

  • Metadata have a type: CUSTOM or SYSTEM. Users cannot edit SYSTEM metadata.
  • Terraform creates an Azure Maps resource dedicated to the front-ends.
  • Azure Device Provisioning Service support. Devices created on IoT Hub are now replicated in Kamea.

Changed

  • BREAKING Route /tenants/{tenantId}/devices/{deviceId}/metadata/{key} has been replaced by /tenants/{tenantId}/devices/{deviceId}/metadata/{type}/{key}.
  • Front-end environment are not hardcoded in the repo anymore. Instead, they use JSON configuration files instead.

1.0.1 / 2023-02-03

Added

  • Device configurations can massively be updated through job operations (API only).
  • API now supports sign-up through the identity provider. /authenticated-endpoint has been introduced to register the user to Kamea afterwards.
  • Commands can be sent through the management front-end.
  • Real time telemetries are accessible in the management front-end.
  • Tenant ID displayed in settings app, in tenant details page.

Changed

  • Bumped Angular to v15.

1.0.0 / 2023-01-11

Added

  • API can filter devices by multiple folder IDs.
  • Role Personal folder owner can now send commands to devices by default.
  • WebSocket server exposes an AsyncAPI documentation on /doc endpoint (/wss/doc when going through the reverse proxy).
  • Markdown documentation for WebSocket server.
  • Markdown documentation for commands.

Changed

  • WebSocket server is now only reachable through the reverse proxy.
  • Reverse Proxy can now listen on several domains (the default Azure one and the custom ones).

Fixed

  • Commands endpoint can now use raw strings, numbers and booleans.
  • Telemetries endpoint no longer returns a 500 status code when the requested tenant ID has an invalid format. Instead, it returns 400.

0.9.4 / 2023-01-02

Added

  • Telemetries can be read in real time through a websocket using Socket.IO library.
  • Added endpoint to send commands to devices (only accessible to device provisioned on IoT Hub).

0.9.3 / 2022-11-30

Added

  • Applied IP based rate limiting on checkin and claim endpoints (5 calls / minute max).
  • New CSV codec usable on both HTTP and IoT Hub ingestion.
  • New API endpoint to return a previously claimed device to the claimable folder.
  • Load testing scenario using a CSV file.
  • Swagger routes exposed by the API can have a configured prefix to match the one used by the reverse proxy.
  • Transfer a device from a tenant to another, without transferring its telemetry. Optionally transfer custom events.

Changed

  • Bumped NestJS to v9.
  • CDN endpoints custom domains created through Terraform automatically configured for HTTPS.
  • Redeemer role not created nor used anymore by self-checkin feature.
  • API firewall configured to only accept request from the reverse proxy.

Fixed

  • Telemetry reading timeout increased in telemetries E2E tests in order to avoid false positives.
  • Tenant logo on transparent background in the front end side menu.
  • Custom domains properly handled by the API when showing app links.
  • No more tags being unlinked from devices when a device without tags gets assigned tags.

0.9.2 / 2022-10-27

Added

  • New configuration for self-checkin: users personal folders can now be grouped inside a dedicated group folder.
  • Users can check into multiple tenants.
  • Custom domain names setup supported and documented for CDN endpoints and App Services.
  • Roles can now be assigned directly to users instead of user groups (assignment to user groups is still supported).

Changed

  • Bumped Angular to v14.
  • Bumped Typescript to v4.8.4.

Fixed

  • API Swagger documentation uses correct UUID format for tenant ID in get all folders endpoint.

0.9.1 / 2022-10-19

Added

  • Metadata editable in front-end.
  • User authorization checked on event creation.
  • Events managed per device.
  • Devices can be searched by name or ID (API & front-end).

Changed

  • Events must be requested by entity type.