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.
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
startDateLocalvariable available in event templates
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
customValuesfields now support type-safe numeric and date range filtering - Invalid Lucene filter syntax returns
FILTER_SYNTAX_ERRORinstead 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 holidaysBDAY/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 DateTimesubstring(string, start, length)- Extract substringfromJson(string)- Parse JSON string to objectelementAt(list, index)- Get element from list by indexaddHours(datetime, hours)- Add/subtract hours from datetimeaddDays(datetime, days)- Add/subtract days from datetimeconcat(...)- Concatenate strings or collections
New Workflow Task Handlers
Order/Copy@1- Duplicate orders with entities, charges, commodities, and custom valuesOrder/Split@1- Split orders by quantity or weight ratioFlow/Transition@1- Programmatically trigger flow state transitionsEntity/Change@1- Modify entity custom values in Before triggersCommodity/Unpack@1- Unpack container commoditiesAccountingTransaction/ApplyCredit@1- Apply credit memos to invoicesTrackingEvent/Import@1- Bulk import tracking eventsUtilities/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 serverclipboard- Copy text to clipboardsubmitFormToExternalUrl- 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 (
useDirtyGuardhook)
2025-12-12
Markup Component
Added new component for rendering formatted text using Markdown syntax across web and mobile platforms.
What was added:
markupcomponent 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
contentprop for markup text inputwrapperoption to customize container element (default:"View")- Platform-specific rendering: HTML for web, native components for React Native
Files: markup-component.md (new)
2025-12-05
DataGrid Filter Props
Added filtering configuration options for DataGrid columns and entity fields.
What was added:
filterprop to enable per-column filteringfilterPropertyto use alternate property names for filteringfieldNameprecedence rules for filter component configuration- Aliasing behavior documentation for consistent filtering across UI
Files: datagrid-component.md, entities.md, workflow-variables.md
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
2025-12-02
Form State Management
Added form dirty state management capabilities.
What was added:
resetDirtyStateaction - Programmatically clear form's dirty flag after custom save operationsdirtyGuardprop 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:
apiCredentialandapiCredentialWithSecretGraphQL 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:
attachmentGraphQL type with metadata fields- Queries:
attachment,attachments(paginated) - Mutations:
uploadAttachment,deleteAttachment - Field component options:
multiple- Allow multiple file uploadscapture- Enable camera capture on mobileaccept- File type restrictionsautoClearDropZone- Clear drop zone after upload
allowOrderByandorderByPropertyfor 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:
listcomponent with props:data,itemTemplate,emptyTemplate,selectionModelistItemchild component with click handlers- Selection modes:
none,single,multiple - Built-in menu support via
menuprop - 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
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
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)
2025-10-31
Viewer Component
Added dedicated component for inline document display.
What was added:
viewercomponent replacing deprecatedopenDocumentPreview- 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
openDocumentPreview Action
Added action for modal document preview.
What was added:
openDocumentPreviewaction- Attributes:
url,fileName,fileExtension onClosecallback handler- Auto-detection of file type from extension
- Conditional logic examples for document types
Files: actions.md
submitFormToExternalUrl Action
Added action for external HTTP form submission.
What was added:
submitFormToExternalUrlaction- Attributes:
url,method,headers,formData excludeFields- Omit specific fields from submissionexplicitFields- Include only specified fields- Lifecycle hooks:
onSuccess,onError,onComplete - Dynamic URL support with template expressions
Files: actions.md
formData Pattern
Updated form submission to use new formData pattern.
What was changed:
- Replaced legacy
fieldMappingwithformData - Template expression support:
{{ formData.fieldName }} - Override and augment form values in submission
- Consistent pattern across all form actions
Files: actions.md
2025-09-22
Dashboard & Widget Components
Added dashboard system for data visualization.
What was added:
dashboardcomponent with props:widgets,columns,editMode,onLayoutChangedashboardWidgetcomponent 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
layoutcomponent 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:
timelinecomponent with props:data,itemTemplate,dateField,groupBytimelineGridcomponent 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:
openBarcodeScanneraction with attributes:mode:singleormultiscanonScan- Handler for each scan resultonComplete- Handler when scanning finishesonClose- Handler when scanner closes
barcodeScannercomponent (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:
calendarcomponent with props:events- Array of event objectsview-day,week,month,agendaselectable- Enable date/time selectioneditable- Enable drag-and-drop editing
- Event object fields:
id,title,start,end,allDay,color,resourceId - Event handlers:
onEventClick,onEventDrop,onDateSelect,onViewChange - Recurring events with
rrulesupport - Resource scheduling with
resourcesprop - Localization and timezone configuration
- Mobile responsiveness best practices
Files: calendar-component.md (new)
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
2025-07-29
StructuredFile/Parse Task
Added fixed-width flat file parsing for legacy formats.
What was added:
StructuredFile/Parsetask 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
Relative Date Filtering
Added dynamic date filtering with Lucene/Solr syntax.
What was added:
NOWkeyword 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)
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
2025-07-21
Datetime Timezone Options
Enhanced datetime field configuration.
What was added:
options.timezone- Display in specific timezoneoptions.storeAsUtc- Store as UTC, display locallyoptions.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
optionsobject - Removed deprecated
datetime-localtype
Files: field-component.md
2025-07-17
Redirect Component
Added automatic navigation component.
What was added:
redirectcomponent with props:path- Target URL pathparams- Query parameters objectdelay- Milliseconds before redirectcondition- Conditional redirect expression
- Organization path syntax:
/org/path - System path syntax:
/system/path - Query parameter preservation
Files: redirect-component.md (new)
DataGrid Styling & Variable Functions
Enhanced DataGrid styling and added comparison functions.
What was added to DataGrid:
- Row styling:
rowStyle,rowClasswith conditions - Column styling:
cellStyle,cellClass - Style options:
backgroundColor,color,fontWeight,border - Predefined classes:
success,warning,danger,info - Replaced
evalwithmoreThanfor performance
What was added to Variables:
lessThan(a, b)- Numeric comparisonisEquals(a, b)- Equality checkdateDiff(date1, date2, unit)- Date differencedaysBetween(date1, date2)- Days between datesdaysUntil(date)- Days until future datedaysAgo(date)- Days since past dateisDateBefore(date1, date2)- Date comparisonisDateAfter(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:
slotcomponent with props:name- Named slot identifierdefault- 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
2025-04-24
EDI Tasks
Added Electronic Data Interchange workflow tasks.
What was added:
EDI/Parse- Parse EDI documents to JSONEDI/Generate- Generate EDI from dataEDI/Validate- Validate EDI syntax and semanticsEDI/Transform- Convert between EDI versionsEDI/ExtractData- Extract specific segments/elementsEDI/Acknowledge- Generate 997/999 acknowledgmentsEDI/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)
FTP/SFTP Tasks (Initial)
Added initial file transfer task documentation.
What was added:
FTP/Connect,FTP/Upload,FTP/DownloadSFTP/Connect,SFTP/Upload,SFTP/Download- Basic connection and transfer examples
Files: ftp-tasks.md (new)
Quick Reference
| Date | Feature | What Was Added | Link |
|---|---|---|---|
| 2025-12-12 | Markup component | Markdown rendering for web & mobile | → |
| 2025-12-05 | DataGrid filter | filter, filterProperty props | → |
| 2025-12-03 | Recursive flattening | [**], [-N] selectors | → |
| 2025-12-02 | API Credentials | OAuth2 client credentials API | → |
| 2025-12-02 | Form state | resetDirtyState, dirtyGuard | → |
| 2025-11-30 | Attachments API | GraphQL attachment CRUD | → |
| 2025-11-27 | List component | list, listItem, selection modes | → |
| 2025-11-27 | DataGrid revamp | Views, editing, styling | → |
| 2025-11-19 | EmailTemplate | Email content workflow type | → |
| 2025-10-31 | Viewer | Inline PDF/image display | → |
| 2025-10-31 | Document preview | openDocumentPreview action | → |
| 2025-10-31 | External submit | submitFormToExternalUrl action | → |
| 2025-09-22 | Dashboard | Widgets, charts, metrics | → |
| 2025-09-22 | Timeline | Events, scheduling grid | → |
| 2025-09-04 | Barcode Scanner | openBarcodeScanner, multi-scan | → |
| 2025-08-06 | Calendar | Views, events, drag-drop | → |
| 2025-07-30 | File Transfer | FTP/FTPS/SFTP unified tasks | → |
| 2025-07-29 | StructuredFile | Fixed-width file parsing | → |
| 2025-07-29 | Date filtering | NOW, date math, ranges | → |
| 2025-07-28 | guid() | UUID generation function | → |
| 2025-07-21 | Datetime timezone | storeAsUtc, convertToTimezone | → |
| 2025-07-17 | Redirect | Navigation component | → |
| 2025-07-17 | Variable functions | dateDiff, daysBetween, etc. | → |
| 2025-06-30 | Slot | Dynamic content injection | → |
| 2025-04-24 | EDI Tasks | Parse, generate, validate EDI | → |