Skip to main content

Changelog

New features and additions to the CXTMS development platform.


2026-03-23

Order Time Buckets GraphQL Query

New orderTimeBuckets query for time-series aggregation of orders. Group orders into configurable intervals (5 min to 1 month), with optional financial summaries and drill-down into individual orders per bucket. Supports native fields (created, lastModified) and JSONB custom value dates.

Order Time Buckets API

DataGrid Inline Cell Editing

Enable inline editing of individual cells directly in the DataGrid. Editable columns render their editor component in the cell with onEdit action pipelines for mutations and notifications. Works with entity field definitions and saved views.

DataGrid — Inline Cell Editing

Timeline Grid: Summary Component & All-Day Events

  • summaryComponent — Custom component for the summary row, replacing the default total display
  • All-day events — Events without specific times render in a dedicated all-day row
  • startDateLocal variable available in event templates

Timeline Grid Component

Workflow dateDiff Function

New dateDiff(start, end, unit) NCalc function calculates date differences in configurable units: years, months, days, hours, minutes, seconds.

Workflow Expressions — dateDiff

Template formatDate Function

New formatDate template function for formatting dates inside {{ }} expressions: {{ formatDate order.created 'yyyy-MM-dd' }}.

Workflow Variables — Template Functions

HTTP Request Circuit Breaker

Per-host circuit breaker for workflow HTTP requests. Automatically opens after 5 consecutive failures, honors 429 Retry-After headers, and protects against cascading failures.

Utilities Tasks — Circuit Breaker

JSONB Range Filters & Filter Syntax Errors

  • JSONB customValues fields now support type-safe numeric and date range filtering
  • Invalid Lucene filter syntax returns FILTER_SYNTAX_ERROR instead of a generic 500

Filter Syntax — JSONB Range Filters


2026-03-18

Business Date Math in Filters

Filter expressions now support business-aware date math with two new time units:

  • BHOUR / BHOURS — Business hours that skip non-working hours and holidays
  • BDAY / BDAYS — Business days that skip weekends and holidays

These units use the organization's configured business calendar (weekly schedule + holiday blocks) to calculate dates. Examples: NOW+4BHOURS, NOW+2BDAYS, dueDate: [NOW TO NOW+3BDAYS].

Requires a business calendar (type business) to be configured for the organization.

Filter Syntax — Business Date Math


2025-02-18

New NCalc Functions

Added 7 new expression functions for use in workflow conditions and mappings:

  • parseDate(string) - Parse date strings to DateTime
  • substring(string, start, length) - Extract substring
  • fromJson(string) - Parse JSON string to object
  • elementAt(list, index) - Get element from list by index
  • addHours(datetime, hours) - Add/subtract hours from datetime
  • addDays(datetime, days) - Add/subtract days from datetime
  • concat(...) - Concatenate strings or collections

Workflow Expressions

New Workflow Task Handlers

  • Order/Copy@1 - Duplicate orders with entities, charges, commodities, and custom values
  • Order/Split@1 - Split orders by quantity or weight ratio
  • Flow/Transition@1 - Programmatically trigger flow state transitions
  • Entity/Change@1 - Modify entity custom values in Before triggers
  • Commodity/Unpack@1 - Unpack container commodities
  • AccountingTransaction/ApplyCredit@1 - Apply credit memos to invoices
  • TrackingEvent/Import@1 - Bulk import tracking events
  • Utilities/MoveFile@1 - Move/rename files in storage
  • Note tasks - Create, Update, Delete, Import, Export, RenameThread
  • FileTransfer tasks - Connect, Disconnect, Download, Upload, ListFiles, DeleteFile, MoveFile
  • StructuredFile/Parse@1, EDI/Parse@1 - Parse structured files and EDI documents

Flow Workflow Enhancements

  • Workflow Configuration Profiles - Profile support for workflow execution
  • Circular Workflow Call Detection - Prevents infinite loops in workflow-to-workflow calls
  • Workflow Execution Logs - Gzip-compressed logs stored in S3 for debugging
  • Before Trigger Entity Changes Tracking - Track entity modifications in Before triggers
  • Async Before triggers forbidden - Before triggers must use Sync execution mode

New Entities

  • CommodityEvent - Bridge table linking tracking events to individual commodities
  • Note / NoteThread - Threaded note system for any entity
  • LinkedOrder - Order-to-order relationships
  • PersonalAccessToken - PAT-based authentication
  • ApiCredential - API credential management
  • WorkflowExecutionLog - Workflow execution history
  • Calendar entities - CalendarEntity, CalendarEvent, CalendarBusinessHour
  • Tag system - Tag, CommodityTag, OrderTag, InventoryItemTag

ObjectPath Parser Enhancements

  • Recursive flatten [**] - Flatten nested collections at all depths
  • Depth-index [-N] - Filter by nesting depth (e.g., leaf nodes only)

Frontend: DataGrid Enhancements

  • Collection view type with dedicated renderer
  • List view renderer with context menu
  • Right-click context menu support (dotsMenu)
  • Page size persistence in saved views
  • Permission-based column filtering
  • Entry name for pagination display
  • Multi-value text filter component

Frontend: New Components

  • viewer-component - PDF and image viewer with download
  • listitem-component - ListItem with menu support
  • select-async - Async pagination on scroll
  • multi-value-text-filter - Multi-value filtering input

Frontend: New Actions

  • downloadFiles - Download files from the server
  • clipboard - Copy text to clipboard
  • submitFormToExternalUrl - Submit form data to external URLs

Frontend: Architecture Changes

  • Migrated GraphQL from RTK Query to TanStack Query
  • Sentry integration with white-label configuration
  • OAuth2 authorize page for third-party integrations
  • Unsaved changes guard (useDirtyGuard hook)

2025-12-12

Markup Component

Added new component for rendering formatted text using Markdown syntax across web and mobile platforms.

What was added:

  • markup component for rendering large blocks of formatted text
  • Markdown syntax support: bold, italic, lists, links, headings, code, blockquotes
  • Cross-platform compatibility (React and React Native)
  • Localized markup content support
  • Dynamic content with variable interpolation
  • content prop for markup text input
  • wrapper option to customize container element (default: "View")
  • Platform-specific rendering: HTML for web, native components for React Native

Files: markup-component.md (new)

Markup Component


2025-12-05

DataGrid Filter Props

Added filtering configuration options for DataGrid columns and entity fields.

What was added:

  • filter prop to enable per-column filtering
  • filterProperty to use alternate property names for filtering
  • fieldName precedence rules for filter component configuration
  • Aliasing behavior documentation for consistent filtering across UI

Files: datagrid-component.md, entities.md, workflow-variables.md

DataGrid Component


2025-12-03

Workflow Recursive Flattening

Added recursive flattening selectors for workflow variables to handle nested data structures.

What was added:

  • [**] selector - Collect all items from self-referencing/nested structures recursively
  • [-N] selector - Pick items by depth (leaf nodes, parents, grandparents)
  • Variable-depth branch examples for nested commodity extraction

Files: workflow-variables.md

Workflow Variables


2025-12-02

Form State Management

Added form dirty state management capabilities.

What was added:

  • resetDirtyState action - Programmatically clear form's dirty flag after custom save operations
  • dirtyGuard prop on Form component - Prevent navigation with unsaved changes
  • Localized dialog fields (title, message, confirmText, cancelText)
  • Confirm/cancel action handlers for discard-changes flows

Files: actions.md, form-component.md

Actions Reference | Form Component

API Credentials (OAuth2)

Added complete OAuth2 client credentials API for programmatic access.

What was added:

  • apiCredential and apiCredentialWithSecret GraphQL types
  • Queries: apiCredential, apiCredentials (with pagination)
  • Mutations: createApiCredential, updateApiCredential, regenerateApiCredentialSecret, deleteApiCredential
  • IP restriction formats: IPv4, IPv6, CIDR notation
  • OAuth2 token endpoint usage (/connect/token)
  • JavaScript and Python code examples
  • Security best practices and error response documentation

Files: api-credentials.md (new), _category_.json

API Credentials Documentation


2025-11-30

Attachments GraphQL API

Added comprehensive file attachment management API.

What was added:

  • attachment GraphQL type with metadata fields
  • Queries: attachment, attachments (paginated)
  • Mutations: uploadAttachment, deleteAttachment
  • Field component options:
    • multiple - Allow multiple file uploads
    • capture - Enable camera capture on mobile
    • accept - File type restrictions
    • autoClearDropZone - Clear drop zone after upload
  • allowOrderBy and orderByProperty for DataGrid/entity sorting

Files: attachments.md (new), overview.md, field-component.md, datagrid-component.md, viewer-component.md, entities.md

Attachments API | Field Component


2025-11-27

List & ListItem Components

Rewrote list component documentation with comprehensive coverage.

What was added:

  • list component with props: data, itemTemplate, emptyTemplate, selectionMode
  • listItem child component with click handlers
  • Selection modes: none, single, multiple
  • Built-in menu support via menu prop
  • Query support for dynamic data loading
  • Comparison guide: List vs Collection components
  • Styling options and CSS class customization

Files: list-component.md, collection-component.md, overview.md

List Component

DataGrid Component Revamp

Major documentation overhaul for DataGrid.

What was added:

  • View types documentation: table, card, list
  • Column configuration: width, minWidth, alignment, sortable, visible
  • Editing modes: inline, dialog, row-level
  • Selection: single, multiple, checkbox column
  • Row styling with conditions
  • Context menu and row actions
  • Export functionality

Files: datagrid-component.md

DataGrid Component


2025-11-19

EmailTemplate Workflow Type

Added new workflow type for email content generation.

What was added:

  • workflowType: "EmailTemplate" configuration
  • Output fields: subject, body, htmlBody, attachments
  • Handlebars template engine integration
  • Variable substitution from workflow context
  • Best practices for reusable email templates

Files: workflow-email-template-type.md (new)

EmailTemplate Workflow


2025-10-31

Viewer Component

Added dedicated component for inline document display.

What was added:

  • viewer component replacing deprecated openDocumentPreview
  • Props: src, type, downloadable, permissions, height, width
  • PDF rendering with zoom and navigation
  • Image preview with pan/zoom
  • Permission-based access control
  • Responsive sizing options

Files: viewer-component.md (new), overview.md, actions.md

Viewer Component

openDocumentPreview Action

Added action for modal document preview.

What was added:

  • openDocumentPreview action
  • Attributes: url, fileName, fileExtension
  • onClose callback handler
  • Auto-detection of file type from extension
  • Conditional logic examples for document types

Files: actions.md

Actions Reference

submitFormToExternalUrl Action

Added action for external HTTP form submission.

What was added:

  • submitFormToExternalUrl action
  • Attributes: url, method, headers, formData
  • excludeFields - Omit specific fields from submission
  • explicitFields - Include only specified fields
  • Lifecycle hooks: onSuccess, onError, onComplete
  • Dynamic URL support with template expressions

Files: actions.md

Actions Reference

formData Pattern

Updated form submission to use new formData pattern.

What was changed:

  • Replaced legacy fieldMapping with formData
  • Template expression support: {{ formData.fieldName }}
  • Override and augment form values in submission
  • Consistent pattern across all form actions

Files: actions.md

Actions Reference


2025-09-22

Dashboard & Widget Components

Added dashboard system for data visualization.

What was added:

  • dashboard component with props: widgets, columns, editMode, onLayoutChange
  • dashboardWidget component with props: title, type, data, config
  • Widget types: chart, metric, table, custom
  • Chart subtypes: bar, line, pie, area, donut
  • Metric cards with value, label, trend, trendDirection
  • Responsive breakpoints configuration
  • Edit mode for drag-and-drop repositioning
  • layout component for widget containers

Files: dashboard-component.md (new), dashboard-widget-component.md (new), layout-component.md (new), overview.md

Dashboard Component | Dashboard Widget

Timeline Components

Added timeline system for chronological display.

What was added:

  • timeline component with props: data, itemTemplate, dateField, groupBy
  • timelineGrid component for tabular scheduling
  • Props: resources, events, startDate, endDate, viewType
  • View types: day, week, month
  • Event handlers: onEventClick, onEventDrop, onEventResize
  • Resource grouping and filtering

Files: timeline-component.md (new), timeline-grid-component.md (new)

Timeline Component | Timeline Grid


2025-09-04

Barcode Scanner

Added barcode scanning capabilities for mobile devices.

What was added:

  • openBarcodeScanner action with attributes:
    • mode: single or multi scan
    • onScan - Handler for each scan result
    • onComplete - Handler when scanning finishes
    • onClose - Handler when scanner closes
  • barcodeScanner component (standalone)
  • Supported formats: Code128, Code39, EAN-13, EAN-8, UPC-A, UPC-E, QR Code, DataMatrix
  • Camera selection: front, back, auto
  • Continuous scanning with batch results

Files: barcode-scanner-component.md (new), actions.md, field-component.md, notes-component.md

Barcode Scanner Component | Actions Reference


2025-08-06

Calendar Component

Added full-featured calendar for scheduling.

What was added:

  • calendar component with props:
    • events - Array of event objects
    • view - day, week, month, agenda
    • selectable - Enable date/time selection
    • editable - Enable drag-and-drop editing
  • Event object fields: id, title, start, end, allDay, color, resourceId
  • Event handlers: onEventClick, onEventDrop, onDateSelect, onViewChange
  • Recurring events with rrule support
  • Resource scheduling with resources prop
  • Localization and timezone configuration
  • Mobile responsiveness best practices

Files: calendar-component.md (new)

Calendar Component


2025-07-30

FTP/SFTP/FTPS Tasks

Unified file transfer task documentation.

What was added:

  • Consolidated FileTransfer/* task namespace
  • Protocol support: FTP, FTPS (FTP over TLS), SFTP (SSH)
  • Tasks: Connect, Upload, Download, List, Delete, Rename, CreateDirectory
  • Connection options: host, port, username, password, privateKey
  • SFTP-specific: Host key verification, key-based authentication
  • FTPS-specific: Implicit/explicit TLS, certificate validation
  • Transfer modes: binary, ascii, auto
  • Passive/active mode configuration
  • Error handling and retry patterns

Files: ftp-tasks.md

FTP Tasks Documentation


2025-07-29

StructuredFile/Parse Task

Added fixed-width flat file parsing for legacy formats.

What was added:

  • StructuredFile/Parse task for fixed-width files
  • Record definitions with position-based field extraction
  • Field types: string, number, date, boolean
  • Computed fields with expressions
  • Conditional fields based on record type
  • Hierarchical output structure for parent/child records
  • Error handling: strict, lenient, skip
  • Support for warehouse and EDI file formats

Files: structuredFile-tasks.md (new), edi-tasks.md

StructuredFile Tasks

Relative Date Filtering

Added dynamic date filtering with Lucene/Solr syntax.

What was added:

  • NOW keyword for current timestamp
  • Time units: YEAR, MONTH, DAY, HOUR, MINUTE, SECOND
  • Operations: + (add), - (subtract), / (round)
  • Examples: NOW-7DAY, NOW/MONTH, NOW-1YEAR/YEAR
  • Range filters: [NOW-7DAY TO NOW], [* TO NOW-1MONTH]
  • Timezone considerations
  • Case sensitivity rules

Files: filter.md (new)

Filter Documentation


2025-07-28

guid() Function

Added unique identifier generation in App Modules.

What was added:

  • guid() function in variable expressions
  • Returns UUID v4 format string

Usage:

variables:
- name: newId
value: "{{ guid() }}"

Files: variables.md

Variables Reference


2025-07-21

Datetime Timezone Options

Enhanced datetime field configuration.

What was added:

  • options.timezone - Display in specific timezone
  • options.storeAsUtc - Store as UTC, display locally
  • options.convertToTimezone - Convert on display
  • Non-timezone datetime for location-independent times
  • Fixed timezone display for departure/arrival times
  • Quick reference table for timezone configurations
  • Use cases: logistics schedules, deadlines, operating hours

What was changed:

  • Default: No timezone conversion, no UTC storage
  • Migrated direct props to unified options object
  • Removed deprecated datetime-local type

Files: field-component.md

Field Component


2025-07-17

Redirect Component

Added automatic navigation component.

What was added:

  • redirect component with props:
    • path - Target URL path
    • params - Query parameters object
    • delay - Milliseconds before redirect
    • condition - Conditional redirect expression
  • Organization path syntax: /org/path
  • System path syntax: /system/path
  • Query parameter preservation

Files: redirect-component.md (new)

Redirect Component

DataGrid Styling & Variable Functions

Enhanced DataGrid styling and added comparison functions.

What was added to DataGrid:

  • Row styling: rowStyle, rowClass with conditions
  • Column styling: cellStyle, cellClass
  • Style options: backgroundColor, color, fontWeight, border
  • Predefined classes: success, warning, danger, info
  • Replaced eval with moreThan for performance

What was added to Variables:

  • lessThan(a, b) - Numeric comparison
  • isEquals(a, b) - Equality check
  • dateDiff(date1, date2, unit) - Date difference
  • daysBetween(date1, date2) - Days between dates
  • daysUntil(date) - Days until future date
  • daysAgo(date) - Days since past date
  • isDateBefore(date1, date2) - Date comparison
  • isDateAfter(date1, date2) - Date comparison

Files: datagrid-component.md, variables.md

DataGrid Component | Variables


2025-06-30

Slot Component

Added dynamic content injection component.

What was added:

  • slot component with props:
    • name - Named slot identifier
    • default - Default content if slot empty
  • Usage for component extensions in dropdowns
  • Priority-based slot ordering
  • Parent/child slot communication

Files: slot-component.md (new), components.md

Slot Component


2025-04-24

EDI Tasks

Added Electronic Data Interchange workflow tasks.

What was added:

  • EDI/Parse - Parse EDI documents to JSON
  • EDI/Generate - Generate EDI from data
  • EDI/Validate - Validate EDI syntax and semantics
  • EDI/Transform - Convert between EDI versions
  • EDI/ExtractData - Extract specific segments/elements
  • EDI/Acknowledge - Generate 997/999 acknowledgments
  • EDI/BatchProcess - Process multiple EDI files
  • Transaction set support: 850, 855, 856, 810, 214, 990
  • Trading partner configuration
  • Delimiter configuration (segment, element, sub-element)

Files: edi-tasks.md (new)

EDI Tasks

FTP/SFTP Tasks (Initial)

Added initial file transfer task documentation.

What was added:

  • FTP/Connect, FTP/Upload, FTP/Download
  • SFTP/Connect, SFTP/Upload, SFTP/Download
  • Basic connection and transfer examples

Files: ftp-tasks.md (new)

FTP Tasks


Quick Reference

DateFeatureWhat Was AddedLink
2025-12-12Markup componentMarkdown rendering for web & mobile
2025-12-05DataGrid filterfilter, filterProperty props
2025-12-03Recursive flattening[**], [-N] selectors
2025-12-02API CredentialsOAuth2 client credentials API
2025-12-02Form stateresetDirtyState, dirtyGuard
2025-11-30Attachments APIGraphQL attachment CRUD
2025-11-27List componentlist, listItem, selection modes
2025-11-27DataGrid revampViews, editing, styling
2025-11-19EmailTemplateEmail content workflow type
2025-10-31ViewerInline PDF/image display
2025-10-31Document previewopenDocumentPreview action
2025-10-31External submitsubmitFormToExternalUrl action
2025-09-22DashboardWidgets, charts, metrics
2025-09-22TimelineEvents, scheduling grid
2025-09-04Barcode ScanneropenBarcodeScanner, multi-scan
2025-08-06CalendarViews, events, drag-drop
2025-07-30File TransferFTP/FTPS/SFTP unified tasks
2025-07-29StructuredFileFixed-width file parsing
2025-07-29Date filteringNOW, date math, ranges
2025-07-28guid()UUID generation function
2025-07-21Datetime timezonestoreAsUtc, convertToTimezone
2025-07-17RedirectNavigation component
2025-07-17Variable functionsdateDiff, daysBetween, etc.
2025-06-30SlotDynamic content injection
2025-04-24EDI TasksParse, generate, validate EDI