Version 2.0.X - Epic Raccoon
Version 2.0.18
Release date : September 2026
Improvements
#1821: Backport fix where docker-validation (run from Composer) attempted to validate osp.vault even though the required secrets are not available locally.
The validation now uses placeholder plaintext values, allowing the validation step to complete successfully.
Bug fix
#1957: Creating an entry from a Collection Table form left the form on the first entry of the table instead of the one just created.
Which entry was shown depended on the sort and the filters in use, so the user could end up viewing, and then editing, an unrelated entry. The new entry is now always displayed once saved, for forms configured in both
ImmediateandDeferredsubmit mode. When the sort places it outside the page currently loaded, it is fetched on its own so it can still be displayed.#2005: A RabbitMq long shutdown will not trigger a restart loop of all module.
#2012: A collection input list could offer entries that no longer matched the collection.
The list was filled from a streaming request whose results drifted from the stored entries, and it now reads a snapshot instead.
A column filter rendered as
COLLECTIONalso takes a search option, documented with the other column options and in view.web. It mirrors what the form component already offered through searchMethod and searchTerms:localfilters the entries already received,remotesends the term to the collections module and matches it against the listed fields. A query returns at most 1000 entries, soremoteis the only way to reach them all in a larger collection.#2012: A journal placed in a form refused to open when its journalSettingsOverride described the table to display.
The description had to repeat every setting of a saved view, including the ones a journal has no use for, and an incomplete one was rejected with a validation error in place of the journal. Listing the columns is enough now, and the settings left out take the values the journal was using anyway. A column that formats its content, such as a date column, also keeps that formatting instead of falling back to the raw value.
#2012: Editing a form opened in a modal could lose what had just been typed.
The prompt fed the form its own data back on every change, which re-rendered the component and could restore the previous value of the field being edited. Fields declaring dependsOn are now also cleared when one of their dependencies changes, which until now only happened for forms displayed directly in a widget.
#2012: The input row of a journal placed in a form grew a scrollbar and clipped its content.
The row was held to the height of the Add button beside it, so a validation message appearing under a field was cut off instead of opening the row. The row now takes the height it needs and the entry list gives back the space.
#2020: The history queries were slowing down depending on the total number of entries.
The impact is particularly important if MongoDB cannot cache the collection History alarm view into the ram.
#2037: Searching in a journal opened in a form filtered the table behind it and wrote the search term in the url.
A journal displayed in a form, in a side panel or in the detail of a row has no address of its own, so it wrote its search term and its page number under the name of the widget hosting it. The collection table or alarm table behind it then read them back as its own, and the browser kept every journal search in its history. A journal opened while the table was already filtered started on that same term. These journals no longer write anything in the url.
#2037: The
disableUrlHistorysetting of a Map had no effect.The widget kept writing its state in the url whatever the setting said, and it was the only widget offering the setting without honouring it. Turning it on now stops every parameter the map carries, its position and, where the map offers a floor picker, the selected floor. See the url parameters.
Security fix
Update Antmedia to 3.1.0
Update Docker compose to 5.5.1
Update Grafana image renderer to 5.12.3
Update Grafana to 13.1.6
Update Httpclient client to 5.6.4
Update MongoDB to 8.0.32
Update Netty to 4.2.17.Final
Update Openresty to 1.31.1
Update RabbitMq client to 5.36.0
Documentation
The
disableUrlHistorysetting is now documented, with the url parameters and on each widget offering it: the Alarm Table, the Alarm History Table, the Collection Table, the Discovery and the Schematic. Turning it on stops the widget reading the parameters as well as writing them, so a link carrying them no longer opens the widget on that state. The Map is covered as well.
Version 2.0.17
Release date : September 2026
Improvements
Improved on Value Subscription context to support subscribing and unsubscribing to values with:
subscribeTo(value: string | string[]): subscribe to one or more values.
unsubscribeTo(value: string | string[]): unsubscribe to one or more values.
Bug fix
#1950: Form collections component with dependsOn would not work on form displayed on modal, as the field with dependencies would never become available.
#1955: The callbacks for a value script (owner.scripts) were not handling the condition and transform correctly.
#1966: The build of the initial History alarm view was leading to
OutOfMemoryerror after a migration from 1.4.x.#1967: The
accessedValuesin the cache on Callback were not supporting a concurrent update for the value that triggered the callback. This caused an incoherent state with the condition and transformation.For example, the value
root.triggerwith the following callback could have return the previous state of the value during the transformation or condition.{ "linkedOutputs": [ { "outputId": "root.output", "condition": "asBoolean(root.trigger)", "transform": "asInteger(root.trigger)", "accessedValues": [ "root.trigger" ] } ] }
#1968: Fix an issue where a Value Subscription would allow to update a subscribed value configured as only READ.
#1993: Collection changes on form were not properly shown. This happened when multiple updates occurred on the same document at short intervals.
Version 2.0.16
Release date : August 2026
Improvements
#1927: Backport
alarms.exists(),alarms.getLive()andalarms.getHistory()from 2.1.0.
Bug fix
#1896: During a topology recovery of the rabbit state initiated by a module, some errors were not handled properly which cause an excess use of channels.
Version 2.0.15
Release date : August 2026
Improvements
Removing an alarm which don't exist on live, will not fail the operation anymore. Only a message
Serial didn't existwill be returned.
Bug fix
#1875: Alarms module was not able to execute operations correctly when the history entry corresponding to the alarm is exceeding 16MB in size.
Security fix
Update Docker compose to 5.4.0
Update Grafana image renderer to 5.12.0
Update Grafana to 13.1.3
Update Keycloak client to 26.0.12
Update MongoDB to 8.0.28
Version 2.0.14
Release date : August 2026
Improvements
#1762: Alarm history rebuild is now using the previously built state History alarm view to avoid useless work.
This significantly reduce the load on MongoDB.
Bug fix
#1873: The order in which operations were carried out within a batch was not guaranteed by the Standard insertion.
The fallback behavior of retrying the operations in the batch one at a time in the event of an error was not functioning correctly.
#1881: Modbus was not handling value message for other module properly.
This was introduced by
#1700.#1883: authorization.keycloak was not loading the accessed values properly.
#1888: Modbus was not subscribing correctly to accessed values declared in callback.ospp.
This was causing incorrect evaluation of the condition and transformation.
Version 2.0.13
Release date : July 2026
Bug fix
#1702: Media widget resize correctly the video to the available size.
#1773: Media streams were not synchronized properly with the Antmedia server.
#1873: The order in which operations were carried out within a batch was not guaranteed by the Standard insertion.
The previous fix for version 2.0.12 did not cover all possible cases.
Security fix
Update Jackson to 2.21.5
Update Jetty to 12.1.10
Update Netty to 4.2.16.Final
Version 2.0.12
Release date : July 2026
Bug fix
#1700: Values retransmissions are now separated by module to prevent unexpected output and script execution.
The callbacks (for a script only if the
triggerModescontainsRETRANSMISSION) were re-triggered when a dashboard or module was loaded if the value was needed by it.#1873: The order in which operations were carried out within a batch was not guaranteed by the Standard insertion.
This can lead to inverted creation when the same serial is present multiple times on the same batch. For example, the alarm at 10:40:00 will be inserted after the one at 10:40:02.
#1762: Alarm history rebuild was too slow. A pre computed History alarm view was created to have a more reactive history display.
The history view is updated at an interval of 2 seconds by default. This interval can be configured on module.alarms with the field
historyReconstructionInterval. The fieldhistoryQuerywas removed from the filter.alarms.#1869: Properly clean Alarm Table and Alarm History Table selection when elements exits sub-group.
Version 2.0.11
Release date : July 2026
Improvements
#1866: Collection: Combo box supports case-sensitive and case-insensitive element filtering.
Bug fix
#1733: Properly handle specific entry ID fetching for Collection Table should the document not be present in current table.
#1864: Alarm archive manager was not ignoring collection generated during the migration process.
#1859: Issues with how message from WebSocket were handled was preventing actions to receive the result of their request. Therefore, no actions output were triggered correctly.
#1858: Websocket communication between the front end and the web server entered a loop, which triggered a spike in load and slowed down the application.
#1865: Local storage on Collection Table was not keeping user modification on table columns.
Security fix
Update Grafana image renderer to 5.9.1
Update Jackson to 2.21.4
Update MongoDB to 8.0.26
Update Mysql to 8.4.10
Version 2.0.10
Release date : July 2026
Warning
A major issue was discovered in this version that prevents any actions from receiving the result of their request, meaning that no action’s outputs were triggered correctly.
This issue only concerns the frontend. As an example, an action from a menu to generate a PDF report with an output to display the PDF on a prompt would succeed in generating the report, but would fail to display it on the frontend as the result would be received but never transmitted to the action process flow.
We hereby recommend you to not use this version and to update directly to the next version.
Bug fix
#1842: Websocket messages were not handled correctly for widgets callback, widgets could attempt to read from an unwanted message and throw an exception.
#1833: Form save when configured on mode Immediate would for some modification not interpret them as a new change and then not trigger a save.
#1835: Collection module generate value when an array is edited.
#1840: Groups generation was missing some update of children which leads to unsynchronized state.
#1840: Groups with a hidden empty group were not generating field correctly.
For example, the severity was set to the default one if all members severity was below the default one.
#1843: Pagination on the Alarm History Table was no longer working when URL history was enabled.
#1850:
Markdowntable render would not load properly, showing an error with(0, Q.default) is not a function.
Security fix
Update Docker compose to 5.1.4
Update Grafana image renderer to 5.8.11
Update Grafana to 13.1.0
Update Netty to 4.2.15.Final
Update Jline to 4.2.1
Version 2.0.9
Release date : June 2026
Improvements
#1725: The alarm table
ELAPSEDcolumn was renamed toRELATIVE_TIMEfor clarity.
Bug fix
#1725: Alarm Table and Alarm History Table were fully reloaded (visible flicker / loss of state) every time the grouped hierarchy view was used.
#1725: Dashboard download was re-triggering an update on the next state change.
#1725: Front-end WebSocket reconnection could spam the server with retries; the reconnection delay factor was increased and a minimum delay of 100 ms is now enforced.
Version 2.0.8
Release date : June 2026
Bug fix
#1796: API service was not handling the
OIDCflow correctly which lead to401errors even with correct authentication.#1798: Standard Polygon GeoJSON was not showing properly.
#1806: Add missing
url_authrole in the default Keycloak realm configuration. It is used by the URL authentication.
Version 2.0.7
Release date : May 2026
Bug fix
#1772: If the first value was the reset one, a value with a pulse defined as
ignoreResetastruewas not published correctly.For example, if a non-persistent variable was configured with a default value of
0.0and a pulse reset value of0.0, the value was never published as0.0at the start-up of the module.#1780: Fixed theme logo failing to load properly due to asset filtering.
#1737: Fixed infinite rendering when a
BoxLayoutwidget with agrowsize factor was used as the last element.#1342: Added
maxMenuHeightsupport to theSchematicwidget for long menus.#1787: Fixed alarm and collection table column filters could lead to errors because the filter content was not escaped correctly.
Documentation
#1774: Update the upgrade guide Version 2.0.0 to include format change during alarms pre-insertion.
Version 2.0.6
Release date : April 2026
Improvements
#1763: Improve dashboard creation management and preserve widget display during edition
Bug fix
#1720: Audit was reporting
UNKNOWNuser for unauthenticated request.Alarms history reconstruction was not correct when multiple tag operation were done with the same tag.
Alarms filtering was failling when too much alarms (>100’000) where matching.
Alarms history filtering failling when too much alarms (>100’000) where matching.
Alarms migration improve history migration speed.
#1709: Menu output forms were not evaluating correctly the data provided to the form, leading to potential issues with the data displayed on the form.
#1766: PDF Viewer was not able to load files from the configuration because it was missing necessary HTTP headers.
#1763: Widget edition crashes when increasing/reducing breakpoints
Security fix
Update Grafana image renderer to 5.8.2
Update Grafana to 13.0.1
Update Antmedia to 3.0.1
Update Docker compose to 5.1.3
Update Openresty to 1.29.2.3-4
Version 2.0.5
Release date : April 2026
Bug fix
Alarms filters using the historyQuery were never used by the alarms module for queries, as they were wrongly instantiated.
Alarm history table was not displaying filters and views picker when showing the detail of an alarm when the table was configured to not share the filters between the tables.
Fix issues with form collection component when using getId and multi option combined where it could lead to a badly constructed request that would kill the connection with the websocket.
#1748: Fix issue with form action component that would make the validation of the component options fail sometimes because the schema used to validate the options was not a correct representation of the expected values.
The schema was forcing each input to be defined as a map, which would prevent some valid input like
"scriptId": "root.script"to ever be accepted by the schema. Instead, you had to specify it explicitly like"scriptId": {"expression": "root.script"}. Other input like prompt input typically would also never be accepted. These now work as expected.These validation was only a front-end issue. Meaning that if your input were correctly declared, the execution of the action will work. If you had some action component that were on error in a form, they should now be fixed if the input are valid. On the other hand, if some action component start appearing on error after you update to this version, it most certainly mean that your input were invalid from the start and that the action would certainly failed.
Version 2.0.4
Release date : April 2026
Bug fix
#1729: Regression the certificats where not loaded from cacerts as expected for API service.
#1729: Add preemtive authentication for user/password for api-service.ospp.
Alarms pre-insertion rules where not cloning alarms properly which lead to change propagation between operations.
Alarms create archive indexes in the background.
#1735: Container shutdown was slow due to improper messaging termination.
#1735: Resolved a minor memory leak.
Security fix
Update Grafana image renderer to 5.7.3
Update Netty to 4.2.12
Update RabbitMq to 4.2.5
Update MongoDB to 8.0.20
Update Openresty to 1.29.2.2
Update Grafana to 12.3.6
Update Portainer to 2.39.1
Update Docker compose to 5.1.1
Version 2.0.3
Release date : March 2026
Bug fix
#1724: Definition of the current history entry, during migration, was not working as expected when a live alarm have a lot of occurrence.
#1723: Fix a bug where the icons on the map where not authorized resources and were making the MapWidget crash.
Security fix
Update Grafana image renderer to 5.6.3
Update Jetty to 12.1.7
Version 2.0.2
Release date : March 2026
Bug fix
#1715: Milestone server state was not updated properly when a request is failling.
#1708: Indexes creation on alarms database was failing because the archive collection used to migrate the data was not processed properly.
#1703: Basic Input Output Value with
TEXTvalue was not handling properly the(off|on|unknown)Valueand(off|on|unknown)ValueText.The displayed text was only using the content of the value even when it matches the
(off|on|unknown)Value.#1566: Optimize loading time by loading only geographical information that are displayed in the map widget.
Security fix
Update Jackson to 2.21.1
Update keycloak config cli to 6.4.1
Update MongoDB to 8.0.19
Update Openresty to 1.27.1.2-11
Update RabbitMq to 4.2.4
Update Grafana to 12.3.4
Update Grafana image renderer to 5.6.2
Update Antmedia server to 2.17.1
Update docker compose to 5.1.0
Documentation
Alarms manipulation was not defining correctly the return type for all methods.
Version 2.0.1
Release date : February 2026
Bug fix
#1705: detached.scripts and owner.scripts were accepting accessed values with retention
FIRE_AND_FORGET.This is not correct because these value will not be stored in cache. This was also leading to unwanted multiple execution of script triggered by a callback on these values. If
FIRE_AND_FORGETvalues are added to accessed values via wildcardroot.*, they will be ignored.#1699: Alarms sometimes failed to migrate due to a duplicate ID after a restart during the migration process.
#1698: Composer was failing silently when upgrading the configuration with patch 2.0.
#1694: API service http client was not loading certificates provided by
certs/externalproperly.#1694: API service http client handle digest authentication properly.
#1691: Composer was not able the run the configuration validation for version before 2.0.0.
#1690: Update to Java 25 to avoid deadlock with virtual thread
#1688: Modify the configuration of a service tag
${{image-version}}was not replaced if${{image-repository}}was missing.#1685: When alarms expiration was failing, it wasn’t recovering properly.
#1685: Protect alarms archive process to avoid failures without automatic restart.
#1684: Load PMTiles with the user token correctly attached.
#1677: MongoDB will retry to initialize the replicat set if it fail during the initialization.
#1348: Properly clean up WebSocket connections for every module to fix a thread leak.
#1564: Fix a problem between Map and MongoDB where in some cases we had a double entry in the database.
Security fix
Update Keycloak to 26.4.7
Update InfluxDB to 2.8.0
Update Envoy to 1.37.0
Update RabbitMq to 4.2.3
Update Grafana to 12.3.2
Update Grafana image renderer to 5.5.0
Update GraalVM Jdk to 25.0.2
Update docker-compose to 5.0.2
Update Mysql to 8.4.8
Update MongoDB to 8.0.18
Version 2.0.0
Release date : January 2026
Upgrading warnings
Warning
Since version 2.0.0, the upgrade guide is available in a dedicated chapter. See upgrade guide.
Performance update
Alarms rework
The new history improve the readability of the lifecycle of an alarm with a clear start and end. The grouped view display one lifecycle as a sub table which show each action done.
The reactivity between an action and the result on the front-end is improved.
The storage format is updated to reduce the total size on the database. The size is not link to the number of occurrence anymore.
New features
New Alarm History Table feature - #1374
Alarm History Table widget now a new feature called hierarchies that changes how alarms are displayed inside the table.
Two hierarchies are available.
All(left): each state of an alarm is shown as a full alarm on the table (same behavior as 1.4 version of the widget)Grouped(right): each row on the table represent the last state of an alarm. Expanding the row displays every state of this alarm inside a separated table
Here an example of how it looks:
Check the new documentation for the widget to get more information about this new feature.
WMTS & WMS support in the maps #1585
You can now use the front-end map widget to display WMTS layers Map.
Project fields to return from Collections query - #1608
You can use the projection option to specify which fields to include/remove from a Collections query result.
This option is currently available for:
view.web for Collections filter options
Define a custom journal entry for a form Journal component - #1466
Journal form components can now handle entries with custom fields.
Learn more by looking at the Journal widget documentation.
Create an entry of a collection directly from Form components - #1485
The Collection: Checkbox group and Collection: Combo box components now have an Add button. This button open another form in a popup window that can be used to create a new entry of the associated collection. Meaning, if the element you want to pick from either of these components doesn’t exist yet, you can create it directly without having to leave the form.
Check the components documentation to see how to configure this feature.
New WebView widget parameter : filterUrlRegexRules - #1460
This new optional parameter allow to configure an array of string patterns interpreted as regular expressions. Each pattern is tested against the iframe current URL whenever its DOM updates. If any pattern matches the iframe current URL, the iframe automatically redirects back to the initial source provided.
Learn more Filter the redirection of the iframe.
Dashboard edition can be disabled - #1428
The dashboard edition can be disable by setting the option theme.disableDashboardEdit on the file stack.cfg.
Validation of form control elements options - #1678
New validation upon form control elements options now checks that the provided options are valid. If not, a error control element is displayed instead. Learn more in Options validation.
Add new passwordProvider encryption method
A new password encryption method is now available. It is a sub-entity of passwordProvider and can be used universally. This method allows storing passwords in a ciphered format within the GIT configuration, preventing password loss in the event of a GIT repository corruption. See Password configuration and storage.
Composer templating improvement - 1190
The logging system has been improved. Logs are now available in the Output view under OSP Composer. See Composer Logger for full usage details.
A priority field is now required in each playbook to ensure they run in the expected order. This is especially useful when several playbooks target the same files.
Composer
A new toolbox panel is created, currently the only feature is the password encryption. The toolbox can be opened using the shortcut Ctrl+Shift+P and selecting the osp: Toolbox option. But more option will be added in the future. See Toolbox.
Rights access
Each itemId now has implicit rights, allowing access to be granted to a user without defining groups in module.rights. This makes it possible to assign certain rights directly from the frontend.
It is now possible to use implicit groups in access.rights files. This can be useful for granting a dashboard the rights to access sub-elements when using dynamic permissions.
See Implicit rights access for details.
BACNet acknowledgement
If a Notification Class triggers an event requiring an acknowledgment, it is automatically performed as recommended by the BACnet stack. In the case of a Notification Class that triggers an alarm requiring acknowledgment, it is possible to perform the BACnet-type acknowledgment from the BACNet controller through the script module.
BACNet COV increment
In SINGLE_SUBSCRIPTION mode, it is possible to specify the covIncrement value, which defines the minimum change in a value that triggers a notification.
BACNet event reporting
BACNet can listen to event generated by other device and trigger an alarm. See Notifications subscription.
BACNet request grouping
The BACNet request now group the subscription to COV (Change Of Value) if the device support it. This reduce the number of request to set up the subscription.
Encoder
Provides Base64/Base32/Base16 and URL encoding/decoding, charset conversion between various encodings, plus text normalization utilities for osp-scripts.
Retrieve Dashboards and Severities via Script
Added a new feature allowing scripts to retrieve the list of available dashboards and severity levels.
Callback are allowing access to value error and mode
The Callback condition and transformation allow to access the value error and mode. This can be useful to trigger output more precisely.
Reports
Improve the reports feature to include images, new features are :
Including hardcoded images in base64 Including hardcoded images.
Beta features
Warning
This feature is currently in beta. It may change in a future version without prior notice. See the Beta Features page for the full list of beta features and their planned release. If you’re using this feature, we encourage you to share your feedback to help with the evaluation process.
Alarms grouping #864
Alarms can now be grouped together. A group can be define on the configuration or created dynamically from a Dashboard.
The group fields can be generated from the content of it’s children.
By default, only the root alarms (aka the one without a parent) are displayed.
Go to the grouping documentation for more information.
Alarm Table grouping - #1374
Alarm Table widget was updated to handle new Grouping features. Now, the widget has a new feature called hierarchies that changes how alarms are displayed inside the table.
Two hierarchies are available.
All: display every alarm at the same level, independently of groups.Grouped: alarms are displayed by groups. Only alarms that doesn’t have a parent are displayed. Alarms that have children can be expanded in order to display an additional table containing only the children of the alarm.
Here an example of how the grouped hierarchy looks:
Check the new documentation for the widget to get more information about this new feature.
Alarms generation on value error #1402
Alarm can now define a listener to generate an alarm when a value is on error with Value error handler.
Unmanaged Orchestrator support #1382 and #1486
OnSphere support now a new operational mode that do not manage any orchestrator resource. It give a totally orchestrator agnostic version of OnSphere. The dispatcher do not create, update/restart or delete any modules. This mode give all responsibility of module lifecycle management to the integrator and orchestrator.
See here for deployment process.
This allow OnSphere to run on:
A helm chart has been created to help deployment unmanaged under kubernetes. See this section for documentation. In addition, the documentation about module configuration fetching and restarting is available here
Complete Overhaul of the Template Generation System
The previous beta version of the template generation system has been completely reworked. This new version is not backward compatible, and no automated migration tools are available. However, adapting to the new approach is relatively straightforward, thanks to its more intuitive structure and greater flexibility.
This overhaul was driven by the limitations of the earlier design, which made it difficult to address many practical use cases effectively.
The updated system brings a range of advanced features, allowing for the creation of more powerful and adaptable playbooks. Key improvements include enhanced support for conditional logic, modular task definitions, richer inventory handling, and more dynamic template rendering.
Notable Changes
Playbooks support conditional environments, allowing reuse of the same playbook for distinct contexts such as PRODUCTION and TESTS.
Source and destination paths can now be dynamically resolved via variable evaluation, column picker, or relative path specification.
CSV parsing has been enhanced to accept separators other than the standard ;.
Support for non-interpreted metadata in CSV files has been added to better reflect real-world inventories. The parameters
headerLineandstartLineprovide more precise control.Each CSV row is now represented as a variable by design, with keys derived from the CSV header names.
Rule application has been decoupled from individual CSV rows to avoid duplicating the same rules for each line.
Playbooks can be ordered by priority to control execution sequence.
Usage has been clarified and streamlined: - Item rendering is now integrated directly into playbooks. - The former “items-render” playbook type has been renamed to
CSV_INVENTORYtask. - The “fileRender” task has been renamed toSOURCE_DESTINATION_MIRRORING. - The “context” and “import” features have been renamed tocsvAsVariables.Variable handling is now significantly more flexible.
Partial support for complex data types such as JSON has been introduced, with some limitations.
Conditions are now supported, enabling selective execution of generation steps based on expressions written in the JEXL language.
Maps widget supports static and dynamic icons - #1021
Maps now support static and dynamic icons definition on GeoJSON points. For more information see Geographical aggregation and example example_icons_points_on_map.
Grafana
Creation of a new Docker image osp-grafana to properly integrate them with SSO into an OnSphere dashboard, introduced in the new Third party section. See implementation details here.
Vault
It is now possible to create a vault.ospp file that serves as a central storage for passwords, which can then be retrieved in osp-scripts.
Adding field to value assessor
Value assessor provides access to all value fields.
Keycloak forced reload interval (front-end)
The environment variable VITE_KEYCLOAK_FORCE_RELOAD_TIMEOUT_OVERRIDE lets integrators define how long the front-end waits before forcing a reload when it can’t contact Keycloak.
Location: set in the
module.servicefile of the front-end module.Default value: 5 seconds.
Disable reload: assign 0 to deactivate the automatic page-reload mechanism altogether.
Reload module configuration without restart - #1279
Some module support the reload of the configuration without a full restart. See Modules capabilities for the list of the module currently supporting it.
The objective is to reduce downtime on configuration change.
The flag experimentalFeatures.enableHotReload is available on the configuration of each module.
Bug fix
#1464 : osp-reports : Including the image using both CSS and HTML method in the same report resulted in a broken link when rendered. This issue has now been resolved. Using both CSS and HTML to include an image resulting to a broken image for the HTML part. This is now fixed
#1493 : The composer templates clean is not iterating in modules and root as expected.
#1510 : owner.collections was not generating a value when a new entry was inserted inside the collection.
API service was not decoding bytes correctly.
#1572 : The configuration tag was not guaranteed to remain the same across multiple runs of the same configuration generation. Use a key-based sorting method to ensure consistency for identical inputs. This lead to some unexpected restart of modules.
#1572 : The web module was receiving restart command at dispatcher restart, leading to unecessary restart.
#1604 : The Discovery widget was not able to redo failed request to fetch a device property and had other errors handling issues that could lead to weird behavior like having duplicates entries on the device list.
#1640 : The dispatcher was not cleaning the empty directories inside the volume
ops-runtime-configurationmounted on/osp/run/config/particularly inside the foldertmp/modules.Note
The content of the folder
/osp/run/config/tmp/modulescan be removed without risk when no aggregation is running.#1641 : The dispatcher was not filtering the
module.servicefound inside the configuration, which could result in an aggregation error for module that didn’t exist.
Security fix
Update MongoDB to 8.0.17
Update Antmedia to 2.15.0
Configuration changes
#1473 : osp-front-end allow to configure the environnement parameter
NGINX_RESOLVERto change the default resolver of Nginx. It is also possible to add aBACKEND_HOSTparameter in case you change the network web alias in it’smodule.servicefile.#1402 : The definition of the Value accessor change to include a type. The patch will convert the following impacted files:
API service now support body for all requests even
GETandDELETE.The device.opc-ua can disable the URI check to avoid errors when malformed ones are defined in the certificate.
Documentation
The page Alarms has been reworked to provide a clearer classification and explanation of alarm-related features. It serves as a central reference for understanding capabilities and their configurations.