Release Notes 7.0
General Notes
Bosch IoT Remote Manager 7.0 contains several new components, updated modules, bug fixes and performance enhancements.
Release date: August 2018
Previous Release Notes:
Overview of The Main New Features
Product name changed from ProSyst Remote Manager (PRM) to Bosch IoT Remote Manager (RM)
Added support for Mongo Database improving volume and performance capabilities of the System
Added REST Device Adapter functional package for connecting and managing remote devices over REST/HTTP requests
Added MQTT Device Adapter functional package for connecting and managing remote devices over MQTT messages
System
Version of the module included in this product: 7.0
New Features
Added method for reading of alerts with timeout parameter
Added support for automated audit logging of RPC and REST communications.
Added option for disabling sharing of the be connection threads.
Added direct string streamer for writing/reading strings directly as a byte stream instead of using the DataStream methods
Added option for writing/reading strings directly to the streams as byte array because of size limitation when using DataOutputStream.writeUTF
RabbitMQ schema support added.
Added integration and support for Metrics APIs usage, including configurable and pluggable reporting targets (e.g. CSV files, Prometheus, etc.)
Mongo DB as an secondary database support added.
Splunk log service forwarding support added.
LogCommunicators pluggable mechanism added.
Added direct string streamer for writing/reading strings directly as a byte stream instead of using the DataStream methods
New REST service registration property added – REST_USE_CUSTOM_AUTHENTICATION_PLUGIN constant.
Common password utilities added with password hashing and generation functionality implementation
Added support for ArrayList (and more generally for List) values of configurations (new metatype of Gateway Software seem to pass ArrayList)
Added support for configuring Mongo DB service name
Added methods TreeDatabase and TransactionalTreeDatabase.getExplicitlyConfiguredNodes
Allow additional UI servlets to be bound to configurable alias, retrieved by system property mc.additional.servlets.alias, defaulting to /rm
Added integration with values from statistics and metrics services
Changes and Bug Fixes
Made some cleanup of the resources referenced upon remote access connection close, which reduce the probability/impact of memory leak issues.
Protection added against distributed-deadlock when two host make recursive RPC calls to each other.
Fixed deadlock possibility on closing RAC connection.
The event listeners registered through the RAC were not cleaned upon RAC session close, if there are other remaining active RAC sessions from the same process.
Improved reliability of the reinitializing DB services after DB connection lost/restore.
Device type pattern in LogWriter is fixed.
File communicator visibility increased.
Impose restrictions on the max size of the deserialized array/dictionary objects.
Enumerator is now AutoCloseable, add option for writing/reading strings directly to the streams as byte array because of size limitation when using DataOutputStream.writeUTF.
Added support for reading latest metatype version v.6.
Code improvements in AsyncTaskListener utility class.
Cmd/OS commands support moved to system.mprm-common.tools
BBJARS NAME column length increased from 60 to 255 characters – in the new Gateway Software jars there are with long names.
Update backend hosts bug-fix.
Improved reliability of the reinitializing DB services after DB connection lost/restore.
Configuration pid changed from prm.tree.db.impl to prm.tree.db.impltype (as it is in the Config manifest header).
Fixed incorrect multihost statistic value lookups when hostId is null.
Miscellaneous improvements and configurations a added.
Foundation
Version of the module included in this product: 7.0
New Features
Added support for client certificate obtaining from custom servlets registered in the HTTP service of the Remote Manager.
Changes and Bug Fixes
Fixed error while adding domain with certificate admin permissions
Generic Device Management
Version of the module included in this product: 7.0
New Features
Added support for storing Control Units data in Mongo DB.
Added support for extended state variable listener – StateVariableListenerEx, receiving old-value and time-stamp of State Variable value changes (admin APIs).
Added method ComponentSystemStorage::saveCUWithParents(ControlUnitState cuState, String[] parentTypes, String[] parentIds).
Added new system context methods to Control Unit Providers – saveCUWithParents (backend APIs).
Added support for state variable previous value and timestampin stateVariableEvent.
Search engine support for SQL plugins and tree Mongo DB (node path restriction).
Added support for maximum results in batch enumerator in Rest APIs.
Added method for getting state variable history for multiple devices and CUs in Rest APIs.
Added possibility do directly retrieve the State Variables History for all Control Units of given type for a device.
DeviceInvolvedEvent added.
Support for new mode in concurrency limit: skip triggering new tasks if no room. Untriggered devices will wait for the next triggers.
Fix matching of event trigger condition. It was evaluating event.condition OR generalCondition, but should be event.condition AND generalCondition.
Added new method for retrieving device executions, fixed format of debug logs when rule id is included.
Added new method for retrieving device executions.
Added method to list execution items for a device.
List Involved/Successfully finished devices added.
Added method to return executions for device sorted by date.
Explicit overlapping rule option support added.
Added methods: InterpretationResult.isPersistent() and InterpretationResult.error(Throwable).
Add subscribe for events for a subset of gateways (sub tree of the device tree)
Added methods for Mongo DB integration: resolving clientcu and m2m incompatibilities.
Added generic search for devices and components.
Added parentPath query parameter in create/register device.
Support for countDevices added.
Fixed a problem in the Script Inventory service obtained from the mPRM RAC when more then one RAC sessions are active.
Changes and Bug Fixes
GDM Overall Improvements: Merge performance improvements, multi-enumerator was blocking while listing devices in operation
Fixed Control Unit database conversion for MySQL/Linux environment cause by case-sensitivity issues.
Minor Bug-fixes and optimizations.
Searches are performed on a single node in cluster, not distributed on all nodes.
Fixes and optimizations on filtering.
Fixed issues with search engine - was failing in ON( ! containing(...) ). Wrong left hand set in set-difference.
Enforce maximum results when using the batch enumerator.
Fixed problem with closed connection when collecting sv history for more than 100 state variables.
Minor Bug-fixes and improvements.
Limiting the trigger frequency of Rules with gdm.rules.minimal.timer.period.seconds.
Processing rule events moved in a separate thread, made concurrency properties configurable
Extended device logs when a device is included or excluded from execution based on the concurrency limit.
Fixed issue with synchronous triggers that were executed asynchronously.
Legacy script parser, fixed error when executing script in search filter.
Prevent stack over flow after crash with unfinished Closures and added retriggering unfinished Closures after restart.
Fixed issue with synchronous triggers that were executed asynchronously.
Show concurrency limit in rule editor.
Fixed filename when exporting rule(s).
Method listComponents(deviceType, deviceId, componentType, callback) made to list all descendant cu types. Used by the OperationContext and CommandInterpreters.
Declarative service fix for new scr plugin - ReferencePolicy.DYNAMIC references made volatile
Limited thread pool for 'Force Not Involved Commands' threads.
Performance optimizations due to performed load tests with TR069 devices.
Fix - Device does not finish when last command in batch is in separate interpretation group (state: not involved) and does not satisfy (any more) the filter.
Fixed removing unreged device from operation in cluster.
Other bugfixes and blockings.
Fixed to obtain device configuration on the back-end.
Added missing REST doc for /m2m and /m2m/re aliases.
Optimizations in MDManager.getDeviceTypes.
Fixed db convert 1.5 to 1.6 for MySQL under Linux - case sensitivity problem.
Extend customizing resource representation.
Changed to allow null component ID from ControlUnitAdmin.createControlUnit depending on rest.generic.device.create.policy system property.
Security related enchantments including disabling access to e.g. System.setProperty.
OSGi Device Management
Version of the module included in this product: 7.0
New Features
New OSGi bundle and system properties filter plugins implemented.
Zip package target dir could be configured optional.
WebSocket Secure Tunneling included officially in RM 7.0.
Dispatcher Thread Pool size can be configured.
Added option to switch run in background to run in terminal.
Added support for users specific domain/certificate checking.
Changes and Bug Fixes
OSGI_DEVICE_VERSION incremented to v.1.0.5, IP address removed from MTP.
Make it suitable to participate in on-register operations. Checks if bundles are already up-to-date and terminates if so.
Extra debug on login and disconnect.
Fixed issue generating a CU Result Element.
Fixed LOCK and UNLOCK commands. Were not treated as backend command, LOCK command can now produce error or warning.
Backup files sync on connection restore added
Fixed issue generating a CU Result Element.
Fixed LOCK and UNLOCK commands. Were not treated as backend command, LOCK command can now produce error or warning.
Client CU ported over generic CU provider utils.
Added mechanism for client CU provider to wait until initialized (waiting with configurable timeout)
Fixes in state var filters handling
Basic Authentication fix when device authentication is disabled from node properties.
HTTP Tunnel Resource usage improvements and fixes.
JSON-RPC Tunnel distributed deadlock fixed.
JSON-RPC Tunnel fix for invite loop in online check between cluster nodes.
Dedicated connection heartbeat thread implemented.
TCP Backlog is configurable
Fixed openConnection when there are RM credentials but the scheme is http (not https).
Fixed issue when mprm.ssltcp.poolsize=0
Removing actions/handlers for editing bundle's manifest, both in xml and source code.
Service Application Management 7.0
Version of the module included in this product: 7.0
Changes and Bug Fixes
Fixed deadlock while BundleTypePlugin service is registering.
Fixed list application info by version.
Fixed error while listing applications from the back-end, because of an application cache inconsistency.
TR-069 Device Management
Version of the module included in this product: 7.0
New Features
Added user/pass for download/upload based on system properties.
In config constants TR069_PASS is added.
Added ACS.isOnline method.
Added option to forbid anon connections: mprm.tr069.download.allowAnon=false
Changes and Bug Fixes
Device IP addresses are by default not collected/stored
TR-069 persistent connection mode is removed. Backward incompatible!
Removed ACS.listCPEs method.
Removed CPE.disconnect method.
Removed Configuration.PERSIST property for persistent mode.
Removed Configuration.DEVICE_TYPE, was deprecated.
Connection release autocommit option changed to prevent connection leakage.
For digest authentication password is now taken from system properties not from User admin.
Conversion from GDM stored hierarchy is made optional. It is configured by boolean property mprm.tr069.dm.convertFromGDMToInternalHierarchy (true by default). Also the error if table does not exist is handled user friendly.
mprm.tr069.resetOfflineInterpretationModeOnNewSessions is deprecated and replaced with mprm.tr069.resetOfflineInterpretationMode.onEvents which allows to specify the event codes on which reset of offline interpretation mode will be made. The default events are again 0 BOOTSTRAP and 1 BOOT.
Changed bundle service registrations order.
User Management
Version of the module included in this product: 7.0
New Features
Strong password generate functionality added.
Added new method for getting the imported bundles count for given user.
User passwords are now hashed and then stored in the database.
Changes and Bug Fixes
SHA1 credential check is disabled by default.
Grant view permission for user.anyone to everyone
Personal information fields like First Name, Last Name, etc. are now not persisted.
Software Repository
Version of the module included in this product: 7.0
New Features
Defined configurable limits and validations for the user imported file size.
Added event data class, that is sent to remote hosts for invalidating their user bundle count cache.
Changes and Bug Fixes
Duplicating import bundle methods with additional parameter – whether the file size should be checked. Deprecating old ones.
Add system property mprm.sr.db.varCharColumnMaxLen for VARCHAR fields in database indexes.
Creating the user groups with initial configuration file, and removing their creation from the source code.
Added new permission group – Bundle-UnlimitedImport, where every member in it can import without limitations.
Added user file count limit property in SR configuration, cache (user/bundles count) and checks if the user has exceed his imported bundle count limit.
Add descriptor mime type to obtain BundleIdentificationPlugin of bundle.
Escaped special characters from filename in deliverables cache.
Add administration permission check for create/remove custom repository types.
Fixed performance issue during upload of firmware images, file type is now set in import propertiesGrant view permission for user.anyone to everyoneService Application Management.
Web Service API
Version of the module included in this product: 7.0
New Features
Added support for JSON Web Token Authorization.
Added audit log for REST Services.
Added custom authentication plugin support.
Changes and Bug Fixes
Improve error logging and error propagation.
Improve REST Documentation.
Fixing problems with Accept header in CXF lib.