Skip to main content

SignalSync 2025.12.0 Product Release

Release date: December 2026

Version: 2025.12.0

This release delivers enhancements to the Graphical Workflow Engine, Rule Chains, Facility Maintenance, and platform infrastructure — including drag-and-drop file uploads, document field support in Management Consoles, improved error handling in Rule Chains, and a major automated email processing capability for supplier workflows.

What's New in 2025.12.0

Graphical Workflow Engine (GWE)

Drag & Drop File Upload for GWE Forms

NXT-977

Users filling out GWE forms that include file upload fields can now drag and drop files directly into the upload area — without clicking through the file browser.

Key behaviours:

  • The upload area provides visual feedback (highlighted border, overlay message) when a file is dragged over it
  • Files are validated on drop for size (configurable maximum, default 10 MB) and file type (based on field configuration)
  • On a single-file field, dropping a new file replaces the existing attachment
  • The traditional click-to-browse method remains fully functional alongside drag & drop
  • On mobile and touch devices where drag & drop is unavailable, the standard tap-to-browse experience is preserved without errors
Validation behaviour details
ConditionBehaviour
File exceeds size limitUpload blocked; error shown: "File size exceeds maximum allowed size of [X] MB"
Unsupported file typeUpload blocked; error shown: "File type not supported. Allowed types: [list]"
Single-file field with existing fileNew file replaces existing file on drop
Multiple-file fieldAll valid files are uploaded; invalid ones are individually rejected

Display and Download Document Fields in Management Console

NXT-982

Document fields from published workflow forms can now be included in Management Console grids. Previously, document fields were silently excluded from the field selection interface when configuring a console.

Field selection behaviour:

  • Document fields appear in the field selector with a (DocumentField) type indicator
  • If a document field shares the same name across all selected workflows, it appears in the Common Fields section
  • If it exists in only some workflows, it appears under the relevant workflow tab

Grid display:

  • Document field columns show the original file name (e.g., Contract_2024.pdf), not the internal storage UUID
  • Names are truncated to 10 characters for display; empty fields show a blank cell

Download:

  • Clicking a file name in the grid immediately triggers a browser download with the original file name and extension
  • If the file is no longer available, an appropriate error is shown

Real-Time Comment Indicator on Request Cards

NXT-918 (also covered in NXT-906)

The comment (chat) icon on request cards now reflects comment state in real time:

  • A notification dot appears on the chat icon whenever one or more comments exist on the request
  • The indicator disappears automatically when all comments are deleted
  • Opening and closing the comments panel does not clear the indicator — it reflects actual comment presence, not read status
  • The comment list is always reloaded from the database when the panel is opened, preventing stale data from being shown after another user has added or deleted a comment

Rule Chains


Proper Handling of GWE Error Responses in Rule Chain Execution

NXT-992

GWE endpoints that process multiple requests simultaneously return HTTP 200 even when individual requests within the batch encounter errors (404 Not Found, 400 Bad Request). Previously, Rule Chains interpreted this 200 as a complete success, ignoring per-request error details and continuing execution regardless of the configured error policy.

Rule Chains now inspect the per-request result array returned by GWE endpoints. If any request result contains an error status:

  • When the Rule Chain's error policy is set to Break, execution stops immediately at that node
  • The error is surfaced as if the GWE endpoint itself had returned an error HTTP status
  • Chains configured with Continue policy are unaffected and proceed as before

This ensures Rule Chains react correctly to partial failures in batch GWE operations.

Workflow ID No Longer Required for Request-Scoped Operations

NXT-981

When configuring a Rule Chain node that performs a GWE action or updates request details, the Workflow ID field is now optional. The system automatically infers the workflow from the request_id present in the node's payload, eliminating a redundant configuration step that previously required users to manually specify a workflow that could already be resolved from context.

Rule Chain Support for Workflow Versioning

NXT-956

With the introduction of workflow versioning, Rule Chain nodes that use the Initialize Workflow operation type now automatically target the latest published version of the specified workflow at execution time.

Key behaviour:

  • Rule Chain definitions are not modified when new workflow versions are published
  • Workflow references in nodes are resolved at runtime: Base Workflow → Latest Published Version → Version-specific ID
  • Existing Rule Chains created before versioning was introduced continue to function without any migration or reconfiguration
  • The transition from unversioned to versioned workflows is seamless

Email Processing System for Supplier Responses

NXT-914

SignalSync now includes an automated email processing pipeline that polls a dedicated mailbox for supplier completion emails and automatically advances maintenance requests through their workflow.

The system covers the following end-to-end flow:

  1. Scheduled IMAP polling retrieves unread emails from the inbox on a configurable cron schedule
  2. Request identification via a 10-character Base62-encoded code embedded in the email subject (prefixed with #), which encodes the request_id and tenant_id
  3. Email body parsing extracts and sanitises supplier comments (HTML stripped, signatures removed, max 5 000 characters)
  4. Attachment processing downloads and validates attachments (PDF, DOCX, XLSX; configurable max size)
  5. Rule Chain trigger invokes the configurable Rule Chain (defined by GWE_RulechainProcessEmail) to automatically advance the request status.
  6. Email archiving moves processed emails to an Archive folder; failed emails are routed to error subfolders
  7. Execution logging records every polling run in a dedicated audit log table (statuses: IN_PROGRESS, SUCCESS, FAILED, NO_EMAILS)
Application parameters introduced
ParameterDefaultDescription
GWE_MaxAttachmentsSizeMB10Maximum size per attachment in MB
GWE_MaxTotalAttachmentsSizeMB30Maximum total attachment size per email in MB
GWE_AllowedFileExtensionspdf,docx,xlsxPermitted attachment extensions
GWE_RulechainProcessEmailProcess Supplier ResponseRule Chain executed on valid email
GWE_DocumentFieldIdsactual_doc, supplier_doc_1, supplier_doc_2Target document fields on the request form
GWE_EmailBodyTargetFieldsupplier_commentsTarget text field for parsed email body

Facility Maintenance

Due Date and Estimated Duration on Preventive Maintenance Requests

NXT-473

Requests generated from Preventive Maintenance tasks now include two additional fields automatically populated at generation time:

  • __date_planned — the scheduled date from the pm_tasks record, giving supervisors and technicians visibility into when the work is due regardless of when the request was generated
  • __estimated_duration — the estimated duration from the associated pm_procedures record

This is particularly valuable for organisations that generate PM requests days or weeks in advance (e.g., shift-based or weekly scheduling), as users can now distinguish between requests scheduled for different dates without opening each one individually.

Platform & Infrastructure

Microservices Naming Standardisation

NXT-892

All SignalSync microservices, Docker containers, and Docker images have been renamed to follow a consistent signalsync-{service}-{type} convention. This resolves three separate naming patterns that previously coexisted in the architecture and caused operational confusion.

Renamed services reference
New NameType
signalsync-coreUI + BFF
signalsync-core-apiIntegration API
signalsync-workflow-apiWorkflow Engine
signalsync-rules-apiRule Chains
signalsync-notification-apiNotification Service
signalsync-discoveryService Registry
signalsync-infra-kafkaInfrastructure
signalsync-infra-grafanaInfrastructure
signalsync-infra-prometheusInfrastructure
signalsync-infra-lokiInfrastructure
signalsync-infra-tempoInfrastructure

All services can now be filtered with a single docker ps --filter "name=signalsync-" command, and relationships between services and their databases are self-evident from naming alone.

Details Service Logic Migrated to Core API

NXT-896

The nexty-sync-details-service — a legacy microservice that was created to bridge data access gaps before a centralised API layer existed — has been retired. All its functionality (user/role data sync, data enrichment, Relational Roles queries) has been migrated into signalsync-core-api.

This simplifies the service topology, reduces inter-service communication overhead, and removes a source of maintenance complexity that required separate deployment and configuration.

Next.js Library Compatibility Fixes

NXT-939

Following a Next.js library upgrade, several Tenant Admin views had stopped loading correctly — including White Labeling, Security settings, and System Profile views (which returned 404 errors on click). These issues have been resolved and all affected views are fully functional in this release.

Localization Key Sorting Standardised

NXT-960

Localization JSON files are now sorted lexicographically using Biome, matching the sort order used by Weblate (the translation management platform). This eliminates diff noise in pull requests caused by key ordering mismatches between the development toolchain and the translation platform, and removes the need for a custom pre-commit Git hook in Weblate.