Changelog
New features and additions to the CXTMS development platform.
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 | → |