3.8.0
Release Overviewβ
RCOM Gateway 3.8.0 is a major platform release focused on object reference management, scalable attachment storage, workflow automation, basic RCOM Mobile integration, auditability, performance, and system modernization.
This release introduces configurable object references across Object Groups, reverse reference viewing in Stock View, multiple unique constraints for Object Groups, configurable storage providers, authenticated file upload and download APIs, new workflow actions, improved Workflow Job filtering, basic RCOM Mobile integration, and expanded audit logging.
RCOM Gateway 3.8.0 also includes significant architectural improvements, including migration to .NET 10 and Angular 19, database performance optimization using sequential BIGINT identifiers, Entity Framework-based object data access, improved event processing reliability, automatic workflow and Event Rule recompilation, client-specific data cleanup, and enhanced high-load stability.
Key Highlightsβ
Object References and Unique Constraintsβ
RCOM Gateway now supports a new Reference column type for Object Groups. This enables objects in one Object Group to reference objects in another Object Group.
Reference attributes can be configured as unrestricted references. Stock View now supports clickable object reference links and a reverse reference viewer, making it easier to navigate relationships between linked objects.
Object Groups now support multiple unique constraints. Existing primary key constraints are migrated into unique constraints, and manual primary key management has been removed from the Object Group Designer.
Configurable Storage Providersβ
RCOM Gateway 3.8.0 introduces configurable storage providers for object attachments.
Supported storage backends include:
- Gateway database storage
- Amazon S3
- S3-compatible storage providers
Authenticated upload and download APIs are now available for configured storage providers. Object attachments can be uploaded through the new storage API and linked to objects using workflow actions.
Storage-related tables have been migrated from the Config DB to the Object DB to improve query performance and data joins.
Custom UI URLs now use a clearer route format, such as example.com/#/custom-ui/name instead of example.com/#/custom-ui?name=name. Existing Custom UI URLs continue to work through automatic redirection, so updating saved links is optional. Links can be updated to use the new format and avoid the redirect.
Workflow Action Expansionβ
RCOM Gateway 3.8.0 adds several new workflow actions for object references, list handling, dictionary handling, SOAP integration, EPCIS event creation, Base64 processing, JSON schema validation, LINQ-style object queries, and attachment handling.
New object reference actions allow workflows to retrieve objects that reference a selected object, either grouped by Object Group or filtered by a specific Object Group.
New attachment actions allow uploaded files to be linked to objects and attachment metadata to be retrieved through workflows.
Improved Workflow and Event Processingβ
Workflow Jobs now include improved filtering by Event Data and Groups, with a new default Last 1 Day date range filter.
Workflow and Event Rule compiled assemblies are now automatically recompiled when incompatible compiled code is detected. This improves upgrade reliability and reduces manual intervention after version changes.
High-volume event processing, MQTT handling, object data access, Sync API behavior, and job log bulk insert performance have been optimized.
Audit Logging Enhancementsβ
Audit logging has been expanded across Object Groups, Storage Providers, permission changes, workflow status changes, and scheduler status changes.
Permission audit logs now include previous and updated values, improving traceability for access control changes.
Platform Modernizationβ
RCOM Gateway 3.8.0 upgrades the platform to:
- .NET 10
- Angular 19
The release also consolidates shared framework libraries, removes unused SignalR references, replaces UUID primary keys with sequential BIGINT identifiers, and preserves UUID values as unique business identifiers.
Upgrade and Deployment Notesβ
- Database Backup: A full database backup is strongly recommended before upgrading.
- BIGINT Migration: For large production databases, execute the BIGINT migration script during a maintenance window before upgrading to 3.8.0. For more information, refer to the README file in the attached ZIP package and the comments included in the migration script.
- Helm Deployments: Ensure the
/app/rcomvolume is mounted for the Workflow Processor, Event Processor, and Endpoint API services to support automatic workflow and event processor recompilation. - MQTT Configuration: Configure the required MQTT environment variables for the DAL layer to ensure Object Group synchronization functions correctly.
- Logging Configuration: Configure JSON console log formatting when integrating with Loki and Grafana.
- Storage Migration: Storage-related database migration is performed automatically during the upgrade process.
New Featuresβ
- [Object Groups - Reference Attributes]: Added Reference column type to link objects across Object Groups.
- [Object Groups - Reference Attributes]: Added support for unrestricted and Object Group-constrained object references.
- [Object Groups - Unique Constraints]: Added support for defining multiple unique constraints per Object Group.
- [Mobile - Integration]: Basic integration of RCOM Mobile into RCOM Gateway.
- [Stock View - Reference Attributes]: Added clickable object reference links in object data views.
- [Stock View - Reference Attributes]: Added reverse reference viewer to display objects linked to a selected object.
- [Storage - API]: Added authenticated file upload and download endpoints for configured storage providers.
- [Storage - Providers]: Added configurable storage providers for database, Amazon S3, Azure Blob Storage, and S3-compatible storage backends.
- [Workflow Actions - New]: Added action GetReferencingObjects_V1 to retrieve grouped object references by Object Group for a given OBJECT_ID.
- [Workflow Actions - New]: Added action GetReferencingObjectsByGroup_V1 to retrieve referencing OBJECT_IDs from a specified Object Group for a given OBJECT_ID.
- [Workflow Actions - New]: Added AddToList_V1 action to append one or more elements to an existing list variable.
- [Workflow Actions - New]: Added CastGuid_V1 action to convert valid string values to GUIDs without throwing errors for invalid input.
- [Workflow Actions - New]: Added ListToString_V1 action to concatenate list elements into a string using a configurable separator.
- [Workflow Actions - New]: Added ContainsKey_V1 action to check whether a key exists in a dictionary.
- [Workflow Actions - New]: Added ContainsItem_V1 action to check whether a value exists in a list.
- [Workflow Actions - New]: Added SOAPRequest_V1 action to send SOAP requests with configurable endpoint, SOAP version, headers, authentication, timeout, retry, response, and fault handling.
- [Workflow Actions - New]: Added CreateEpcisEvent_V1 action to generate structured EPCIS event dictionaries with standard fields, event type selection, custom bizStep values, and extension support.
- [Workflow Actions - New]: Added Base64_V1 to encode and decode Base64 strings.
- [Workflow Actions - New]: Added ValidateJsonSchema_V1 to validate input against static or variable-based JSON schemas.
- [Workflow Actions - New]: Added CustomLinqQuery_V1 to query object group tables using LINQ-style scripts.
- [Workflow Actions - New]: Added LinkAttachment_V1 action to associate uploaded attachments with objects using configured storage providers.
- [Workflow Actions - New]: Added GetObjectAttachments_V1 action to retrieve attachment metadata for a specified object.
- [Workflow Actions - Updated]: Added GetObjectsOfAttributes_V4 to include the unique Object Group name when object reference columns are selected.
- [Workflow Actions - Updated]: Added LookupAttributes_V2 to include the unique Object Group name when object reference columns are selected.
- [Workflow Actions - Updated]: Added GetObjectsOfObjectGroup_V2 to include the unique Object Group name when object reference columns are selected.
- [Workflow Actions - Updated]: Added GetObjectsOfStorage_V2 to include the unique Object Group name when object reference columns are selected.
- [Workflow Actions - Updated]: Added ReadObject_V2 to include the unique Object Group name when object reference columns are selected.
- [Workflow Actions - Updated]: Added GetObjectGroupSchema_V2 action with column description and RegEx pattern mappings.
- [Workflow Actions - Updated]: Added SetDictionary_V2 with overwrite control, clear-before-set option,
Dictionary<string, string>support, and optional key existence check.
Improvementsβ
- [Agents - Filtering]: Updated multi-tag filtering in Manage Agents to return results matching any selected tag.
- [Agents - Navigation]: Improved Agent List loading performance when navigating back from Process Templates.
- [API - Authorization]: Explicitly allowed anonymous access for public APIs and removed the unused Custom UI serialized context endpoint.
- [API - Stability]: Improved Sync API stability and event handling under continuous high-volume sync requests to prevent missed events.
- [Audit Logs - Object Groups]: Added audit log support for Object Group changes.
- [Audit Logs - Permissions]: Added detailed permission change tracking with previous and updated values in audit logs.
- [Audit Logs - Storage]: Added audit logging for Storage Provider changes.
- [Audit Logs - UI]: Removed count values from View Details and Hide Details controls in Audit Logs.
- [Audit Logs - Workflow & Scheduler]: Added audit log generation for workflow and scheduler status changes from active to inactive.
- [Authentication - Forgot Password]: Standardized Forgot Password responses to prevent username enumeration.
- [Authentication - OpenID]: Added validation to prevent duplicate OpenID group and role mappings in Auth System Management.
- [Authentication - Validation]: Added frontend validation for Token Expiry and Refresh Token Lifetime fields to restrict invalid decimal and out-of-range values.
- [Custom UI - Routing]: Updated Custom UI routing to use UI names as route paths instead of query parameters.
- [Database - Performance]: Added and optimized indexes for high-volume workflow, job, event, component, and repository action tables.
- [Database - Performance]: Replaced UUID primary keys with sequential BIGINT IDs while preserving UUID columns as unique business identifiers.
- [Event Processor - Configuration]: Improved reliability of Event Processor configuration propagation and activation after updates.
- [Environment Variables - Validation]: Added duplicate highlighting for conflicting Group Variables during validation.
- [Events - Filters]: Added a Last 1 Day date range filter and set it as the default for event listings.
- [Event Processor - Compilation]: Added automatic recompilation for incompatible Event Processor compiled source code and assemblies.
- [Logging - Configuration]: Added configurable console log formatting through environment variables.
- [Logging - Framework]: Deprecated rcom_logger usage across RCOM Gateway shared components.
- [Scheduler - Data Cleanup]: Added cleanup of orphaned object attachments and renamed the Log Deletion scheduler to Data Cleanup.
- [Scheduler - Log Retention]: Added client-specific log deletion based on each clientβs configured retention settings.
- [MQTT - Logging]: Disabled MQTT subscription logging by default.
- [Navigation - Menu Names]: Renamed Log Deletion to Data Cleanup and Event Processor to Event Rules for improved clarity.
- [Object Data - Filtering]: Added explicit NULL, empty, NOT NULL, and NOT empty filters for Object Data attributes.
- [Object Data - Data Access]: Refactored Object Context DAL to use Entity Framework with LINQ-based data retrieval.
- [Object Groups - Primary Key Management]: Removed manual primary key management from the Object Group Designer. Existing primary key constraints are now handled through unique constraints.
- [Object Groups - Migration]: Added migration support to convert existing primary key constraints into unique constraints.
- [Permissions - UI]: Added informational message indicating create and update operations are unavailable in Mobile UI.
- [Stock View - Filtering]: Added OBJECT_ID filtering to support direct object lookup.
- [Storage - Database]: Migrated storage-related tables from Config DB to Object DB to improve query performance and data joins.
- [System - Architecture]: Consolidated common framework libraries by merging RCOM.Gateway.Common into RCOM.Gateway.Server.Common.
- [System - Dependencies]: Removed unused SignalR references from the frontend and backend.
- [System - Framework]: Updated RCOM Gateway frontend components to Angular 19.
- [System - Framework]: Upgraded RCOM Gateway components to .NET 10.
- [System - Performance]: Optimized event processing, MQTT handling, and object data operations for high-load environments.
- [System Logs - Performance]: Implemented lazy loading for system log details to improve log page performance.
- [System - Stability]: Improved OutOfMemory handling in Workflow Processor and API components.
- [Workflow Actions - Documentation]: Updated GetAttachment_V1 action description to clarify output variables and attachment retrieval behavior.
- [Workflow Actions - Validation]: Added reference attribute validation in SetObjectAttributes_V1, SetObjectAttributes_V2, SetObjectAttributes_V3, SetObjectInstant_V1, and SetObjectInstant_V2 to verify valid GUID format and existing OBJECT_ID references.
- [Workflow Actions - Validation]: Added referenced object validation in DeleteObject_V1, DeleteObject_V2, and DeleteObjectInstant_V1 to block deletion when non-nullable object references exist.
- [Workflow Engine - Compilation]: Added automatic recompilation for incompatible workflow compiled assemblies.
- [Workflow Engine - Logging]: Improved workflow processing visibility by adding and updating CONFIG-level workflow execution and storage completion logs.
- [Workflow Jobs - Filters]: Added a Last 1 Day date range filter and set it as the default for workflow job listings.
- [Workflow Jobs - Filtering]: Added filtering by Event Data and Groups to improve Workflow Job search and visibility.
- [Workflow Jobs - Performance]: Optimized bulk insert performance for job logs during workflow execution.
Bug Fixesβ
- [API - Sync]: Fixed timeout inconsistency in Sync endpoint processing caused by mismatched internal and external timeout handling.
- [Audit Logs - Authentication]: Fixed audit log JSON displaying auth2 instead of Bearer/Access Token for endpoint authentication type updates.
- [Audit Logs - Custom Attributes]: Fixed incorrect username displayed in audit logs during custom attribute status changes.
- [Audit Logs - Environment Variables]: Fixed PATCH audit logging for global environment variable updates to record renamed variables as updates instead of delete/create operations.
- [Audit Logs - Filtering]: Fixed newly added modules missing from the Audit Log module filter list.
- [Audit Logs - Performance]: Fixed duplicate GetAll syslogs API calls on Reset, Search, and Refresh actions.
- [Audit Logs - Filtering]: Fixed applied filters being cleared after refreshing the Audit Logs page.
- [Authentication - OpenID]: Fixed duplicate OpenID role validation displaying translation keys instead of localized messages.
- [Authentication - Password Reset]: Fixed password reset links incorrectly displaying session expired messages for valid reset requests.
- [Authentication - Session]: Fixed repeated session expiration during login after unlocking users following multiple invalid password attempts.
- [Custom UI - Access Control]: Fixed Custom UI visibility for users without access to assigned groups or roles.
- [Custom UI - Localization]: Fixed session termination popup displaying translation keys instead of localized messages.
- [Custom UI - MQTT]: Fixed MQTT broker connection failures when multiple subscription topics were configured.
- [Data Migration - Import/Export]: Fixed RuntimeContext deserialization errors after executing UpdateGlobalVar workflows.
- [Downloads - File Generation]: Fixed intermittent download failures when files were requested before generation completed.
- [Events - UI]: Fixed Created Date Range filter input misalignment in the Events filter panel.
- [Event Processor - Validation]: Fixed invalid condition expression validation when saving duplicated event processors.
- [Import/Export - Custom UI]: Fixed incorrect Custom UI item count displayed in Import/Export.
- [Import/Export - Packages]: Fixed package status changes not updating immediately and requiring multiple clicks to mark packages as Ready.
- [Import/Export - Object Data]: Fixed null attribute values being imported as empty values instead of preserving null values.
- [Import/Export - Object Groups]: Prevented permission reset during object group import when referenced roles do not exist.
- [Import/Export - Object Groups]: Fixed Object Group import stopping subsequent imports and reporting incorrect failed item counts.
- [Import/Export - Object Groups]: Fixed generic validation errors for invalid Object Group column and attribute names.
- [Import/Export - Packages]: Fixed package import failures for Object Groups without icons.
- [Localization - Error Codes]: Fixed inconsistent German translation for Custom Errors in the Error Codes module.
- [Localization - Installation]: Fixed missing translations in fresh database installations.
- [MQTT - Processing]: Fixed concurrent MQTT message processing causing incorrect event identity and inaccurate queue processing status logs.
- [Object Data - Editing]: Fixed empty string values being converted to NULL when updating nullable object attributes.
- [Object Data - UI]: Fixed Object Details displaying date values in UTC instead of the configured local timezone format.
- [Object Data- UI]: Fixed duplicate headings displayed in the Object Details page.
- [Object Groups - Validation]: Fixed object group creation displaying generic errors instead of column name validation messages for invalid attribute names.
- [Object Groups - Deletion]: Fixed object group deletion when associated objects existed.
- [Object Groups - Permissions]: Fixed View button not displaying for users with read-only permissions.
- [Object Group Types - Performance]: Fixed duplicate GET_STOCK_VIEW_PERMISSIONS_FOR_ALLROLES API calls when viewing Object Group Types.
- [Object History - Storage]: Fixed storage location details not displaying in object history after SetGeoLocation and SetStorageLocationById actions.
- [Permissions - Access Control]: Fixed Manage Permission page displaying blank when all Identity and Access Management permissions were removed.
- [Permissions - Session]: Fixed immediate permission updates and forced logout not being enforced when Apply Changes Immediately and Log Out Users options were enabled.
- [Permissions - UI]: Fixed custom permission delete icon displaying as text instead of remove icon in Edit Role popup.
- [Process Templates - Simulation Devices]: Fixed incorrect simulation device configurations being displayed when creating new process templates.
- [Roles - Deletion]: Fixed role deletion failure caused by existing stock view permission references.
- [Scheduler - Audit Logs]: Fixed incorrect date and time values displayed in audit logs for Daily and Specific scheduler frequency updates.
- [Scheduler - Configuration]: Fixed scheduler execution schedules not applying updated execution times until the configuration was saved again.
- [Scheduler - Log Retention]: Fixed event and job log retention cleanup not deleting logs older than the configured retention period.
- [Security - Permissions]: Fixed read-only permission enforcement blocking access to detailed views across Process Templates, Custom UI, Users, Custom Attributes, Log Deletion, Event Trigger, Custom Errors, Custom Map, and External Users modules.
- [Stock View - Loading]: Fixed database errors when loading stock views for object groups without unique key constraints.
- [Stock View - Sorting]: Fixed configured default sort columns not being applied when reopening or refreshing stock views.
- [Stock View - Object Data]: Fixed Integer attribute values not displaying in Stock View after object creation.
- [Stock View - Table Settings]: Fixed configured minimum column widths not being applied in table views.
- [Stock View - Table Settings]: Fixed minimum-width field labels not displaying correctly in table settings.
- [Stock View - Upload]: Fixed object upload failures for date attributes parsed as string values.
- [Storage - UI]: Fixed storage number not displaying in the Storage Location Management breadcrumb and header section.
- [Template Designer - Validation]: Fixed Integer parameter validation blocking values below 0 and changed inline validation to non-blocking warnings.
- [Workflows - Versioning]: Fixed workflow version creation when updating Workflow Execution Settings.
- [Workflow Actions - Context]: Fixed ReadObject action ID values displaying as null in View Context.
- [Workflow Actions - DateTime]: Fixed timezone offset loss when reading date values from Object Groups and casting with CastDateTimeOffset.
- [Workflow Actions - MQTT]: Fixed MQTTChallengeResponse setting IsResultContext to false for RES responses.
- [Workflow Actions - Objects]: Fixed DeleteObject Guid conversion error when using OBJECT_ID returned from GetObjectsOfAttributes.
- [Workflow Actions - Objects]: Fixed SetObjectInstant_V1 and SetObjectInstant_V2 incorrectly handling object updates, attribute persistence, and object history generation.
- [Workflow Actions - Object Updates]: Fixed OBJECT_ID fields being prepopulated with GUID values in SetObjectInstant_V1 and SetObjectInstant_V2.
- [Workflow Actions - Storage]: Fixed GetObjectsOfStorage returning a failed status when Object Group Name was left empty.
- [Workflow Actions - Storage]: Fixed CreateStorageLocation_V1 creating bin entries with area ID and name instead of correct bin ID and bin name, causing CheckStorageExist_V1 to return invalid Bin IDs.
- [Workflow Actions - UI]: Fixed
List<String>parameters displaying key-value input fields instead of string list inputs. - [Workflow Actions - UI]: Fixed custom workflow action names resetting to default values after saving workflows.
- [Workflow Actions - Variables]: Fixed ParameterContext deserialization errors when saving updated Dictionary values in Set Var actions.
- [Workflow Editor - Autocompletion]: Fixed inconsistent parameter autocompletion in Workflow Editor and Event Processor mappings.
- [Workflow Editor - Navigation]: Fixed unsaved changes warnings appearing when no workflow modifications were made.
- [Workflow Engine - Action Loading]: Fixed workflow cleanup unloading action DLLs during workflow execution, causing fallback to unoptimized action DLLs.
- [Workflow Management - UI]: Fixed missing delete action for inactive imported workflows.
- [Workflow - UI]: Fixed cursor focus resetting to the first parameter field while editing workflow parameters.