Executive Summary
Xytech Release 26.5 delivers 42 new features and resolves 40 issues. It includes broad enhancements across REST API v3, Transmission Visualiser and Visual Path, Scheduling, Framework & Fundamentals, and Jobs/Orders/Billing management.
Highlights include:
- A major suite of REST API v3 enhancements advancing standards compliance, performance, and AI-readiness — including:
- Standardized error responses, mandatory result-column and page-size controls, and consistent sub-table response structure for improved performance
- Standardized URL syntax, versioning, and UTC-based datetime formatting for easier middleware and low-code integration
- Expanded document and setup query capabilities, including special-character document lookups and PATCH/JSON PATCH standardization
- Improved Swagger/OpenAPI documentation for AI agent discovery, general performance improvements, and removal of the REST API v3 feature flag ahead of general availability
- A broad set of Visualiser and Visual Path improvements for Transmission scheduling — including:
- Phase 1 usability enhancements and improved session stability to prevent expired-token errors
- Resizable, responsive service pop-up windows and configurable display preferences
- Clearer resource-required indicators, updated resource search behavior, and default spec population after selecting a profile
- Support for duplicating services with cross-dependencies and a new quantity option when adding or duplicating services
- Scheduling enforcement and performance enhancements — including uniform roster time-off restrictions across all scheduling entry points, faster load times across multiple schedule views, and a new meal-break counter penalty rule for labor compliance
- Rapid Update Attachments, allowing users to attach documents to multiple Transmission Orders, MCR entries, and service records at once instead of one at a time
- Unique Primary External Keys, giving administrators the ability to enforce uniqueness on external key and alternate-key fields to prevent duplicate records across the UI and REST API
The resolved issues address:
- Scheduling Reliability: Fixed inconsistent booking edits on the calendar view, blank bookings after changing schedule views, scheduling group save errors, and roster/resource counter evaluation issues
- Framework and UI Polish: Corrected grid and list display issues, filtering and layout inconsistencies across modules, and Notify pop-up and navigation panel display errors
- Transmission and Visualiser Stability: Resolved dropdown and resource compatibility messaging issues, incorrect service description behavior, and Visualiser display and timing issues including ghost bookings and delayed edits
- Jobs, Orders, and Billing Accuracy: Fixed work order search list refresh problems, transaction cancellation, a billing overcharge on surcharge pricing, and row display retention after order duplication
Deprecation Announcements
Smart Client for End Users
Smart Client is no longer supported for normal users in version 11.0 and beyond. Smart Client will still be supported for Layouts and Report Writer until a replacement of equivalent functionality in the web UX is made available in a future release.
Configuration
The Application Server configuration entry for SKY_BROADCAST_CHANGES was deprecated in version 11.0 and beyond. It has been determined that this setting was causing major, unnecessary performance issues in systems with 100 or more users. Going forward the system will not broadcast changes to all user sessions. Users will continue to receive changes from other users upon re-opening a particular Maintenance Document or Search List. This primarily affects refreshing of searches, and the population of dropdown lists when new values are recently added. Broadcasting of booking changes into the Schedule Book will remain active.
REST API V1 (version 1)
The REST API V1 (version 1) has been deprecated as of 11.0 and will NOT be available in the Xytech X2 platform. . The API will not be removed from the X1 product, but we will no longer enhance the capabilities of the deprecated API, and support for the deprecated version may be limited. It is strongly recommended you do not use deprecated APIs for any new development and begin now to port all API usage to the REST API V3 (version 3).
SOAP API
The SOAP API has been deprecated as of 26.5. The API will not be removed from the product, but we will no longer enhance the capabilities of the deprecated API, and support for the deprecated API may be limited. It is strongly recommended you do not use deprecated APIs for any new development and begin now to port all API usage to the REST API V3 (version 3). While porting, we recommend taking advantage of the new Webhooks features available in the REST API V3 for outbound integrations.
Pre-Announcing Deprecations in Future Releases
REST API V2 (version 3)
The REST API V2 (version 2) will be deprecated in a future release and will NOT be available in the Xytech X2 platform. The API will not be removed from the X1 product, but we will no longer enhance the capabilities of the deprecated API, and support for the deprecated version may be limited. It is strongly recommended you do not use deprecated APIs for any new development and begin now to port all API usage to the REST API V3 (version 3).
New Features
API & Webhooks
REST API v3
REST API V3 Categorise Error Responses into the 4xx Status Code Range Instead of '400' - 22202
Provides integrations, developers, and downstream client applications with cleaner, standard REST API error categorization by mapping client-side failures to precise HTTP status codes within the 4xx range rather than defaulting every client exception to a generic 400 Bad Request. This update allows external systems to dynamically handle and route errors based on specific API responses like authentication, authorization, or missing resources.
- Updated the v3 REST API error-handling layer to map validation and client exceptions to precise 4xx-series HTTP status codes matching the standard web protocol specification.
- Refactored internal endpoint responses to distinguish distinct failure scenarios, preventing breaking changes while clarifying client-side integration issues.
REST API V3 System Default Page Size - 28425
Provides integrations and development teams with improved stability and optimized query processing by enforcing a system-wide default page size for all v3 REST API endpoint requests. This prevents large database resource drains caused by queries attempting to retrieve massive datasets in a single payload.
- Introduced a configurable system-level parameter that automatically enforces a default record count limit per page on incoming API queries.
- Updated response payloads to include standard pagination metadata, allowing external applications to cleanly navigate subsequent pages.
REST API v3 Improve Returned 2xx Response Codes That Accurately Represent The Action - 29358
The REST API has been enhanced to provide more precise success indicators when records are created or modified. By adopting standard HTTP status codes, the system now offers clearer communication regarding the specific outcome of an API request.
- Implemented the use of 201 Created status codes when a new record is successfully generated, replacing the generic 200 OK response.
- Updated the OpenAPI documentation to accurately reflect these refined success codes, ensuring clear guidance on expected system behavior for integrations.
- Standardized response logic across POST, PUT, and PATCH methods to ensure consistent behavior when creating or updating data via the API.
REST API v3 GET resultColumns Parameter To Be Mandatory For All Lists - 29359
To improve system performance and efficiency, the REST API now requires users to explicitly define which data columns should be returned for all list-based requests. This change prevents the system from defaulting to returning all available columns, significantly reducing payload sizes and processing time.
- All API GET list calls now require a mandatory
resultColumnsparameter to be included in the request. - If the
resultColumnsparameter is omitted, the API will now respond with only the primary key for the requested records rather than the full data set. - This update encourages optimized API development by requiring developers to identify and request only the specific fields necessary for their integration.
REST API v3 Resolve Sub-Table Response Inconsistency - 29363
The REST API has been updated to ensure a standardized and predictable response structure when retrieving sub-table data. This improvement removes existing format inconsistencies, allowing for more robust integrations by relying on a uniform data hierarchy regardless of the specific sub-table being accessed.
- Standardized the API response logic so that sub-table queries (such as fetching episodes for a specific job) always return the sub-table as the root element of the payload.
- Eliminated variations in JSON nesting levels that previously occurred when navigating between different maintenance documents and their associated child records.
- Optimized the data serialization process to ensure that relationship links and nested data structures follow a consistent pattern across the entire REST API v3 framework.
REST API v3 Detach API Datetime Response Formats From The App Server Time Zone - 29366
The REST API has been updated to provide a more consistent and standardized format for date and time values. By detaching response formats from the specific time zone configuration of the application server, the system simplifies data processing for developers working across different regions.
- Standardized all API datetime responses to use a consistent UTC offset, removing the reliance on the local Windows server time zone.
- Improved the clarity of response payloads by ensuring that all time-related data is presented in a format that is easily interpreted by external systems without additional time zone conversions.
- Simplified the debugging process for API developers by providing predictable timestamp values that remain uniform regardless of the physical location of the host server.
REST API v3 Standardise URL On Key Name / Key Value Syntax - 29499
The REST API v3 has been updated to follow industry-standard URL conventions, making it easier for middleware and low-code integration tools to process requests. By replacing assignment operators with path segments, the API now offers a more intuitive and structured approach to identifying specific records.
- Standardized the URL syntax for all key name and value calls across GET, PUT, PATCH, and DELETE methods.
- Replaced the use of "=" with "/" when specifying keys, transforming requests like
{{server}}/JmJob/job_no=2into the more standard{{server}}/JmJob/job_no/2. - Improved compatibility with modern integration platforms that require standard RESTful path patterns to correctly map and automate data workflows.
REST API v3 Standardise PATCH & JSON PATCH Body Content - 29583
Provides integrations, developers, and downstream client applications with a more predictable and uniform development experience by standardizing the body content requirements for PATCH and JSON PATCH requests across v3 REST API endpoints. This optimization ensures consistent payload structures, simplifies client-side request construction, and aligns API modification behaviors across the platform.
- Standardized the expected body content format for PATCH and JSON PATCH API endpoints to enforce consistent request structures.
- Enhanced internal payload validation layers to uniformly process partial resource updates, reducing integration friction for external systems.
REST API v3 Swagger (OpenAPI) Documentation Improvements For AI Readiness - 31383
The REST API v3 documentation has been enhanced to improve discoverability and comprehension for both developers and AI Agents. These updates provide a clearer understanding of endpoint functionality and technical requirements, facilitating more efficient integrations and automated interactions with the Xytech Platform.
- API endpoint descriptions now use business-centric terminology, ensuring users and AI agents can easily identify the functional purpose of each service.
- Added comprehensive documentation for query parameter options and header requirements, including specific save arguments, to provide a complete reference for API requests.
- Refined the Swagger definitions to accurately reflect mandatory fields and include default values, ensuring technical requirements match system logic.
- Included detailed example calls and clear descriptions of supported authentication methods to streamline the onboarding process and reduce integration errors.
REST API v3 Version Handling - Remove Version From Base Url, Include In Endpoint - 31384
The Xytech Platform API has updated its versioning strategy to provide a more streamlined and scalable integration experience. By removing specific version and database identifiers from the base URL and embedding them directly into the service endpoints, the system now supports more granular updates and simplified connection management.
- The API base URL has been simplified to a unified format that no longer requires specific database or version strings, centralizing service access.
- API endpoints have been updated to include versioning within the path, allowing for minor version increments and fixes without requiring changes to the primary connection string.
- The service architecture has transitioned to a single database per service model, improving consistency and reliability for API interactions.
REST API V3 Ability to GET a Document's Details Where Document Code Includes Special Characters - 38420
Provides integrations and development teams with enhanced flexibility and robustness when retrieving document details via the v3 REST API. This update ensures that document codes containing special characters are correctly handled and resolved by the GET endpoint, preventing routing errors or failed requests due to character encoding issues.
- Updated the v3 REST API GET endpoint for document details to properly support and decode special characters within the document code parameter.
- Enhanced internal parameter validation to ensure seamless lookup and retrieval of document records regardless of character formatting.
REST API V3 Ability to Query Setup Documents - 38422
Provides integrations, developers, and downstream client applications with enhanced query flexibility and optimized performance when interacting with setup documents via the v3 REST API. By enabling support for filter and query parameters, external systems can now retrieve specific subsets of setup records rather than being forced to download an entire dataset at once, significantly reducing payload sizes and network overhead for high-volume datasets.
- Extended the v3 REST API endpoints for setup documents to accept query and filter parameters, matching the robust filtering behavior already supported on standard list documents.
- Enabled targeted data fetching across various configuration records—including TimeCard Activities (
/TcActivity), Phases (/JmPhase), and Media Order Tasks (/MoTask)—allowing client applications to isolate specific data rows efficiently without pulling the entire document structure.
REST API v3 - Make Available from /apidocs Index Page - 40106
Provides integration developers and client applications with a streamlined way to access version-specific documentation by integrating API v3 directly into the master API documentation index. This ensures that users can easily discover and navigate to the interactive Swagger documentation for the latest API endpoints alongside existing legacy versions.
- Updated the
/apidocsindex page to display distinct, version-specific links for both v2 and v3 documentation next to each relevant document section.
REST API v3 General Availability - 41860
Provides developers, integrations, and downstream client applications with immediate, unhindered access to the v3 REST API. External systems can seamlessly leverage the latest API endpoint capabilities out of the box, simplifying deployment workflows and accelerating integration timelines across environments.
Review Code Reuse Options for V3 APIs Between Platform and Orchestration - 43693
Provides engineering and integration teams with a foundational architecture review to parallelize API capabilities across multiple services without creating duplicating business logic or inconsistent system behaviors. By establishing common shared layers and uniform exception filters, this framework reduces ongoing platform maintenance costs and ensures robust API alignment.
- Standardized the v3 API internal service layer to cleanly isolate controllers from platform-specific frameworks, paving the way for smooth code reuse across adjacent repository wrappers.
- Split and refactored core API controllers specifically into v1, v2, and v3 dedicated pathways to support distinct lifecycle enhancements independently.
- Introduced structured global exception filters for the v3 API layer that automatically process runtime failures into uniform, client-friendly error structures with explicit system error codes (such as
XY_MISSING_FIELD,XY_UNAUTHORIZED, orXY_DATABASE_ERROR). - Enhanced core client error responses to cleanly map formatting exceptions—including incorrect request content types—to specific HTTP 4xx-series validation messages instead of exposing generic internal application crashes.
REST API v3 Introduce POST Query Calls for LIST Document Endpoints - 13902
Provides integrations, developers, and downstream client applications with enhanced query flexibility when retrieving document lists via the v3 REST API. By introducing support for POST query calls, external systems can now submit complex query criteria, result column selections, and pagination parameters within the request body. This addresses standard data constraints and limitations associated with URL character lengths in high-volume data lookups.
- Introduced POST body query calls for LIST document endpoints within the v3 REST API to support robust and complex data retrieval.
- Enabled full support for request body parameters including specific query filters, custom result column selections, and advanced paging configurations.
Other API & Webhooks
Visualiser - Default Spec to Populate After Selecting Profile - 41084
Provides transmission and scheduling teams with streamlined workflow automation within the Visualiser interface. By automatically populating and applying default technical specifications when a specific Service Profile is selected, this update eliminates manual data-entry steps, reduces configuration mistakes, and ensures consistent specification mapping across booked services.
- Updated the Add Services drawer logic to automatically populate and respect a profile's default technical specification when the Service Profile is manually selected or updated.
- Fixed a stale data issue where changing profiles would leave previous specification selections intact, ensuring that switching to a profile without a default specification now cleanly clears out the selection field.
- Ensured that manual overrides applied by an operator over an auto-filled specification remain locked in place, and that the finalized specification successfully applies to the active booked Service Row upon clicking add.
API Performance Improvements - 43685
Provides critical backend performance optimizations and system load reductions by refactoring high-volume queries and streamlining automated background data processes. These enhancements drastically lower SQL database memory consumption, eliminate heavy CPU spikes, and significantly reduce network latency during peak operational hours.
- Optimized data retrieval mechanisms across top resource-consuming endpoints—including asset listings (
LibMasterList), service tracking (MoServiceRowList), order sources (MoOrderSourceList), media orders (MOMediaOrderList), and session title lists (ImSessionLibTitleList)—replacing wide, repetitive database scans with targeted, highly efficient queries. - Redesigned the automated service row update process to significantly minimize memory overhead and eliminate recurring automated database statistics rebuilds, preventing heavy network bursts during background executions.
- Refactored a high-frequency background asset maintenance batch loop to evaluate whether data updates are genuinely required, skipping unnecessary full-document save cycles and executing direct data updates to eliminate round-trip processing overhead.
- Enhanced internal query architecture to properly resolve and link Transmission Orders directly to their corresponding parent "Job" records via the Job external key API payload parameters, dramatically accelerating related operational data lookup lookups without structural cross-functional side impacts.
Framework, Dashboards, Fundamentals
Include Document Description on Tab of Maintenance Documents - 23033
Provides maintenance and operations teams with enhanced visibility when managing multiple asset records by displaying the specific document description directly within the layout tabs of Maintenance Documents. This ensures that users can easily identify and navigate between open records without needing to click into each individual tab to review its contents.
- Updated the Maintenance Documents tab display to dynamically include the record's custom description text alongside the standard document identifier.
- Optimized the tab interface to support clear spacing and readable text alignment when multiple maintenance documents are open simultaneously.
Rapid Update Attachments (Add Attachment(s) to Multiple Orders at Once) - 7509
Provides scheduling, MCR, and ingest teams with the capability to efficiently attach documents to multiple records simultaneously from list views. This eliminates the need to manually open each individual entry to upload identical tracking or reference files.
- Added an "Add Attachments" action option and a customizable button to the Transmission Orders, MCR, and Transmission Service Search layouts.
- Introduced a multi-selection attachment window that allows users to progressively upload and queue one or more files (such as PDF, Word, or Excel documents) from their local computer.
- Updated the order list view columns to dynamically refresh and display the updated total attachment count across all selected records upon saving.
Unique Primary External Keys - 32150
Provides site administrators and integration teams with enhanced data integrity controls by allowing the enforcement of uniqueness constraints on a document's external keys and alternate-key fields. This system-wide or per-document configuration ensures that duplicate records are automatically rejected at save time—whether the change is initiated through the user interface or external API calls—preventing data discrepancies with downstream connected systems.
- Introduced an "Enforce Unique" checkbox option on standard document customization layouts, allowing administrators to flag specific fields like
external_keyto mandate unique values for that document type.
- Added a system-level setting that enables site-wide
external_keyuniqueness enforcement across all documents in a single action, eliminating the need to edit every document customization individually.
- Implemented a safe activation pre-check sequence that automatically scans existing records for duplicate values when enforcement is enabled, blocking activation and reporting the affected values so data can be corrected.
- Updated the record-saving logic across both the UI and REST API layers to prevent any create or update action that would introduce a duplicate external key, returning a clear validation error message.
Performance Improvements - Budget Load Actuals and Rates - 43692
Provides financial planners and project managers with enhanced processing speed and data accuracy when tracking actual expenditures and billing rates against a project budget. By optimizing baseline calculations and refining transaction processing logic, the platform drastically cuts down processing latency for large-volume budget reconciliations, preventing application bottlenecks and ensuring that project financial status reports remain fully up to date.
- Updated the budget reconciliation and rate-loading engine to evaluate zero-value transactional tiers, successfully introducing a multi-field check that bypasses redundant data rewrites and dramatically reduces processing overhead.
- Enhanced internal data routing logic within the budget version modules to seamlessly process work-in-progress (WIP) tracking calculations and accurately link pending transactions directly to active budget detail lines.
- Resolved an internal data field assignment bug within the multi-currency calculation framework, ensuring that transaction base currency conversions correctly apply to work-in-progress cost rows without skewing cross-currency totals.
- Enhanced internal query architecture to properly resolve and link Transmission Orders directly to their corresponding parent "Job" records via the Job external key API payload parameters, dramatically accelerating related operational data lookup lookups without structural cross-functional side impacts.
Media Order
Asset Selection (Search/Add Assets): Skip Service Rows with Status=Complete - 30283
Provides operations and scheduling teams with enhanced workflow efficiency when managing large media orders by automatically skipping already completed service rows during asset selection. This ensures that bulk asset assignments are only processed for open service tracks, preventing redundant updates and saving valuable processing time.
- Updated the "Search and Add Assets" multi-row action to dynamically evaluate the status of each selected service row and automatically bypass those marked as complete.
Projects
Associate Existing Job to Project - 28046
Provides project managers and operations teams with the ability to link already existing independent jobs or bids directly to an active project record. This eliminates the need to manually recreate job data and ensures all retroactively tracked workflows can be seamlessly consolidated under a single project umbrella.
- Introduced a new capability within the Project management module to search for and associate existing standalone jobs and bids to a project record.
-
Updated the project structure to ensure newly linked jobs properly inherit parent project tracking rules, financial aggregations, and reporting metrics.
New Assign Job(s) action menu item
Scheduling
Roster Time Off Restrictions by Past/Future Days Apply Outside Resource Maintenance - 27230
Provides resource coordinators and operations teams with enhanced scheduling enforcement by extending roster time-off boundaries to all scheduling entry points across the system. This ensures that past and future day restrictions on time-off modifications are uniformly applied, preventing unauthorized scheduling changes outside of the core Resource Maintenance module.
- Extended time-off validation checks to actively enforce past and future day restriction rules when creating, modifying, or deleting roster entries across all operational layouts and planning gadgets.
- Updated scheduling workflow queries to prevent users from bypassing established roster boundaries, ensuring complete synchronization between localized schedule adjustments and global resource restrictions.
Multiple Schedule Views Performance Optimization - 40688
Provides scheduling coordinators and resource managers with significantly faster load times and smoother navigation when working across multiple schedule views simultaneously. This optimization ensures that high-volume resource grids and calendar layouts remain highly responsive during heavy operational planning.
- Enhanced internal data queries and caching logic to drastically reduce backend processing latency when rendering concurrent timeline views.
Scheduling Counter Penalty - Meal Break Outside Of Specified Time Window - Automated Compensation - 41509
The 'Meal Break Outside Of Specified Time Window' Scheduling Counter Penalty has been enhanced to support automatic compensation for processed timesheets. The system automatically calculates and attaches the configured payroll transaction to the employee's pay records without manual intervention.
Time Card
Create and Assign Public Holidays Based on Country - Part 2 - 39942
Provides regional administrators and operations managers with automated capabilities to establish and manage public holidays tailored to specific geographic regions or countries. This ensures scheduling calendars, compliance tracking, and time card conflict checks automatically adjust based on localized legal holidays, reducing manual schedule auditing.
-
Introduced a dedicated configuration interface to define public holidays and cleanly associate them with specific country profiles.
The ability to designate the Country of the holiday -
Integrated country-specific holiday parameters into the master planning calendar to dynamically reflect local public holidays across schedule views.
Note: In 26.5, holidays are only shown in the Day and Week views - Enhanced scheduling conflict checks to actively flag assignments that overlap with a country's validated holiday list.
Add Manager Multi-Select to Scheduling Resources - 43691
Provides scheduling coordinators and personnel managers with enhanced administrative control within the X2 platform by introducing a native multi-select field on resource profiles. This update allows organizations to map multiple authorizing managers directly to a single operational resource, fulfilling key compliance and tracking requirements for employee time-off requests.
- Introduced a new "Manager" multi-select dropdown field on the resource configuration profile, enabling administrators to seamlessly assign multiple users with active manager status flags to a resource.
- Updated both individual resource configuration layouts and core resource list grids to ensure multi-manager assignments persist across user sessions and display correctly during high-volume data browsing.
Transmission
Default Transmission Order Type on User Feature Request - 27918
Provides operations and scheduling teams with enhanced workflow efficiency by automatically populating a default Transmission Order Type upon creating a new transmission record. This streamlines the request process and reduces manual entry overhead for users who consistently work with specific order types.
- Introduced a transmission configuration setting to define a preferred default Transmission Order Type for new requests.
- Updated the transmission order creation workflow to automatically inherit and apply the specified default order type field value upon initialization.
Visualiser - Resource Search display Bookings Setup/Bumper/Approx Out - 29602
Provides scheduling and operations teams with enhanced clarity when searching for available resources within the Visual Path layout by displaying precise booking timelines. This update ensures visibility into setup windows, bumper allocations, and approximate out times directly during the resource lookup process, preventing scheduling overlaps and improving planning accuracy.
- Updated the Visual Path Resource Search results to dynamically display structural timeline indicators including Setup, Bumper, and Approx Out times for existing bookings.
Visual Path - Duplicate Service Header with Cross Dependency - 29607
Provides scheduling and operations teams with enhanced replication capabilities when duplicating service chains within the Visual Path layout. This update ensures that any cross-dependencies assigned to a service header are automatically parented and mapped to the newly duplicated service, maintaining structural workflow integrity without manual reconfiguration.
- Updated the duplication logic in the Visual Path module to automatically carry over and correctly re-parent cross-dependent links onto the newly created service header structure.
Add Quantity Option When Adding or Duplicating Services in the Visualiser - 29843
Provides scheduling and operations teams with the ability to specify a quantity when adding or duplicating services within the Visualiser interface. This streamlines the booking workflow by eliminating the need to repeatedly add or copy individual services one by one.
-
Introduced a quantity selector field when adding new services to the Visualiser canvas, allowing users to create multiple instances of a service simultaneously.
- Added a quantity prompt when duplicating existing services within the scheduler workflow to rapidly multiply service bookings.
Transmission Preference to Filter Default Specs - 36491
Provides scheduling and transmission teams with an enhanced configuration setting to streamline operational workflows by automatically filtering technical specifications based on user preferences. This optimization reduces manual layout filtering and ensures that operators are presented with the most relevant transmission data fields by default.
- Introduced a new user-level transmission preference option to control the default filtering criteria for specification lists.
- Updated the transmission specification grid to dynamically evaluate and apply the user's filtered default preferences upon initialization.
Visualiser - Avoid Multiple Expired Token Errors - 36613
The Xytech Platform Visualiser has been updated to enhance session stability and prevent unauthorized access issues. By optimizing how security tokens are refreshed, the system ensures continuous operation and eliminates frequent error logging associated with expired credentials during active user sessions.
- Improved the token refresh logic to prevent "Refresh Token has been used already" errors, ensuring that the Visualiser remains active and authorized without manual intervention.
- Enhanced the background communication between the Visualiser and the Application Server to reduce event log volume and improve system performance under high-volume usage.
- Resolved an issue where expired token errors could cause the Visualiser to stop working or display unauthorized access messages unexpectedly.
Visual Path - Indicate 'Resource Required' when adding an operation - 38919
Provides scheduling and operations teams with clearer guidance during the workflow configuration process by visually indicating when a specific resource is mandatory for an operation. This ensures that users are immediately aware of resource constraints and requirements when building out operational sequences.
- Updated the Visual Path operation interface to dynamically highlight and flag operations that have the "Resource Required" parameter set.
Visualiser – Support Responsive and Resizable Service Pop-up Window Feature Request - 40027
Provides scheduling and transmission teams with enhanced visual flexibility by ensuring that the Visualizer Service pop-up window automatically fits within the visible browser viewport upon opening. This optimization prevents interface clipping on lower-resolution screens and removes the need for manual browser zooming.
- Updated the Visualiser Service pop-up logic to automatically adapt its dimensions to the user's visible browser viewport, implementing internal scrolling if the layout content exceeds available screen space.
- Introduced the capability for users to manually resize the Service pop-up window by dragging its outer edges or corners to better suit their active workspace layout.
Visualiser - Display Preferences - 40313
Provides scheduling and operations teams with enhanced workspace customization by introducing a dedicated preferences panel within the Visualiser interface. This allows users to tailor their layout views and display behaviors to match their specific operational workflows.
- Introduced a dedicated Preferences drawer panel within the Visualiser interface to cleanly house user-specific display options.
- Added customizable display preference fields, allowing individual users to toggle layout parameters and save their view behaviors directly to their system profile.
Visualiser - Usability & Cosmetic Enhancements - 41041
A set of usability and cosmetic improvements to the Visualizer that make the canvas cleaner, the toolbar more consistent, and resource selection faster.
- Replaced the blue selection background with a subtle hover border and a thicker selected border, giving node selection a lighter, more modern look.
- Updated the lasso selection tool to automatically hide the encompassing rectangle once a selection completes, leaving just the selected nodes visible.
- Introduced a "Delete All" action capability allowing users to clear all services and nodes from the visualizer canvas simultaneously.
- Added double-click shorthand functionality on nodes to quickly select and update their assigned resources.
- Simplified node modal windows by removing Point and Task options, and cleaned up the interface by omitting internal IDs from the Parent Code and Group Code dropdown menus.
- Updated the capacity field presentation to automatically append the relevant unit directly to the capacity value.
- Enhanced the Resource Search list by selecting resources strictly by description while stripping out the resource code, simplifying field labels to exclude the word "code", and updating the availability indicator to display as grey when a resource is already booked on the active order.
Visualiser - Resource Search Modal Height Consistent Position of Paging Controls - 41569
Provides scheduling coordinators and resource managers with enhanced usability within the Visualiser interface by standardizing the layout constraints of the Resource Search window. This optimization ensures that pagination controls maintain a fixed and predictable position at the bottom of the modal, regardless of the number of search results returned.
- Fixed the layout geometry of the Resource Search modal to ensure a consistent height and stabilize the location of the paging interface components.
Visualiser - Source / Destination Filter to Include Display of Service Header Text - 41571
Visualiser Source & Destination view now includes the ability to display the Service header so that users can easily identify multiple transmission paths.
Visualiser - Assign resources to canvas nodes by drag and double-click on Resource Pane - 43686
Provides transmission planners with a dedicated, dockable workspace layout directly within the Visualiser interface to streamline resource allocation workflows. By offering immediate visibility into resource availability and eliminating the need to navigate through external configuration modals, planners can dynamically orchestrate visual paths with immediate validation.
- Introduced an interactive, dockable Resource Pane that can be toggled open or closed, automatically preserving its visual layout state across user sessions.
- Implemented dynamic Parent Group and Group filtering that automatically pre-fills the resource list with compatible assets based on the structural attributes of a selected canvas node.
- Added full-height timeline availability bars next to each listed resource, featuring high-visibility color indicators to highlight usage conflicts across the order's active span along with proximity warning callouts for adjacent bookings.
- Enabled intuitive drag-and-drop mechanics to let operators drag resources directly onto the canvas, showcasing contextual dropping indicators to assign, branch, add to a service, or insert a resource before or after a node.
- Introduced double-click shorthand assignment to automatically allocate a resource to the selected node, complete with clear status spinners during processing and responsive hints when an item isn't actively selected.
- Enforced automatic read-only restrictions that dynamically disable drag-and-drop and double-click resource assignments when working within locked or finalized orders.
Resolved Issues
API & Webhooks
REST API v3
REST API - XeLayout PATCH Corrupts Layout Description Prompt - 39232
When updating a layout configuration via a PATCH request in the REST API, blank or null fields within the layout description prompt were incorrectly corrupted. This caused valid layout configurations to break or display incorrect parameters, disrupting automated API integrations and layout rendering.
During JSON deserialization for PATCH requests, the system incorrectly auto-generated a negative placeholder key value for any non-foreign key column that contained a null value. This forced fields that were legitimately intended to remain blank to be saved with invalid negative numerical identifiers.
Solution
The REST API deserialization logic has been updated to ensure negative keys are only auto-generated for columns that are part of a table's primary key. Non-primary key columns with null values will now correctly preserve their blank status during updates without corrupting layout data.
Other API & Webhooks
Outbound Connection with Token Auth API Key Not Able to Authenticate Internal - 39883
August 6, 2026
When configuring an outbound connection using the API Key authentication method, the system was unable to authenticate successfully with internal or third-party services. The application incorrectly formatted the authentication credentials, preventing external APIs from recognizing and validating the connection request.
The root cause was an issue within the export adapter's header construction logic, where the API key was improperly nested inside a standard authorization header. Because it was sent using an incorrect syntax, receiving mock services and internal endpoints rejected the payload as unauthenticated.
Solution
The outbound connection logic has been updated to ensure that credentials are sent using the correct header format when the authentication method is set to API Key. The system now properly transmits a dedicated header with the expected key-value structure, allowing external integrations to authenticate successfully.
UPGRADE NOTE:
It's possible to continue with the prior behaviour by saving:
Key Name = 'authorization'
Key Value = 'x-api-key <your api key>' (where there is a space between x-api-key and your key. )
Visualiser - 3 Second Delay After Editing Visualiser - 41553
When performing edit actions within the scheduler canvas using specific resource search modals, the canvas encountered a persistent three-second delay before updating and displaying the changes. This lag disrupted the scheduling workflow by forcing users to wait for the visual timeline to manually refresh after standard operations like replacing or swapping a resource.
The root cause was a dropped event within the visualizer mutation workflow; the update operation failed to properly dispatch the immediate canvas refresh instruction to the event listener interface. As a result, the application was forced to wait for a secondary background synchronization cycle to arrive before the user interface reflected the update.
Solution
The visualizer mutation and modal operation logic have been corrected to ensure the refresh event is dispatched instantly upon a successful update. The scheduler canvas now updates immediately across all edit, replacement, and resource assignment paths without delay.
Bids / Budgets
Deleting Bid Detail Headers and Details Issues - 40112
When attempting to delete rows within a budget tree grid, the system erroneously removed items that should have been preserved by business rules, such as actualized details, details with billing amounts, or mandatory headers. Additionally, deleting a node in the tree grid could cause its remaining sub-items to incorrectly shift and attach themselves to an entirely different header in the hierarchy.
While the system correctly validated the deletion request and blocked restricted rows, two later steps in the workflow failed to reference the filtered list of approved rows. Instead, the final execution phase still cleared the full original row selection, and the sub-item re-parenting routine incorrectly ran for headers whose deletions had been blocked.
Solution
The deletion and re-parenting logic has been updated to strictly utilize the validated set of rows instead of the original request. The system now ensures that only rows passing all business rule verifications are deleted, and sub-items are only moved if their original parent header was successfully removed.
Document Customizations
Unable to See Custom Note Field Text via Order Transactions List - 35815
A known issue affected the Order Transactions List where opening an added custom note field incorrectly displayed the standard Transaction Note instead of the intended custom text. This prevented users from reviewing critical custom details, such as assignment plans or live shots, directly from the transactions list view.
The root cause was an incorrect note source routing configuration within the transaction component's identifier logic, which led the framework to skip loading content when it incorrectly assumed database fetching was not required.
Solution
We updated the note routing and content loading verification logic within the transaction list framework. Custom note fields now properly map to their designated source and reliably display their correct text when opened from the Order Transactions List.
Unable to Default Beyond 5PM for the Order End Field (When Using Master Time Zone) - 38634
A known issue exists where the Order End field in Document Customizations does not correctly support default time values that cross the UTC day boundary when converted to a user's local time zone. When configuring a default time that maps across days based on time zone offsets, the system either resets the time improperly or incorrectly rolls the calendar date backward to the prior day.
The root cause was that the system parsed time-only configuration strings natively without time zone awareness, treating them as raw Master Time Zone or Server Time. When converting this absolute time back to the user's localized time layout, subtraction and layout rules dynamically shifted the business date unexpectedly.
Solution
We updated the configuration and initialization logic to ensure default time elements evaluate correctly against localized user zones rather than rigid master time offsets. Default values that cross day boundaries now properly pin to the correct local business date and display their correct times seamlessly.
Framework, Dashboards, Fundamentals
Package Ratio Column Header Not Fully Visible in Bid Details Grid - 39910
In the bid details grid, the "Package Ratio" column header appeared truncated and was not fully visible or readable to users. This clipping made it difficult to clearly identify the column when reviewing bid details.
The root cause was an issue where an additional clearance width applied to the end of the grid layout effectively reduced the space allocated to the final column, causing its text to be cut off. Furthermore, improper right padding on the grid header element pushed the column resizer outside the grid's viewable boundary, which prevented users from expanding the column manually.
Solution
We updated the grid layout configuration to increase the baseline width of the final column and corrected the header padding alignment. The Package Ratio column header now displays fully without truncation and can be cleanly resized by the user.
Internal Server Error on Entering Text in Email Body and Closing Notify Popup - 39944
When a user entered text into an email body or form field within a notification popup and subsequently chose to close the window by selecting "Abandon Edits," the system encountered a critical internal server error. This sudden application failure disrupted the workflow and prevented users from cleanly canceling out of unintended email actions.
The root cause was an asynchronous race condition during the close sequence. While the application attempted to execute a background text-saving operation to synchronize the state, the underlying data row mapping context was simultaneously being cleared and disposed of by the cancel action, resulting in a null reference exception.
Solution
The window closure logic has been corrected to handle the cancellation process gracefully. The system now properly verifies the initialization and existence of the active data row mappings before performing any background state checks, ensuring that discarding notification edits no longer triggers an internal server error.
Scheduling Group Note Character Count very limited causing errors when saving notes - 39983
Users were unable to save notes on Scheduling Group records if the notes included text formatting such as bolding or underlining. The system would display a saving error even for very short notes, forcing users to truncate their entries or omit important notes entirely.
The root cause was a database limitation on the Scheduling Group Note field, which only allowed up to 255 characters. When text formatting was applied, the hidden HTML markup generated by the framework was included in the character count, quickly exceeding the field's capacity and causing the save operation to fail.
Solution
The Scheduling Group standard layout has been corrected to handle note entries properly. Users can now apply necessary text formatting and save their notes within Scheduling Groups up to the full 255 characters.
A future version (tbd) may expand the character count of the Group Note.
Binding Filter Is Not Properly Filtering Lists Based Where Control Doc Is a Custom Dropdown - 40102
When applying search and filter criteria in the Web UI, binding filter dependencies failed to properly filter list results if the controlling field was configured as a custom dropdown. Users experienced a breakdown in conditional dropdown filtering on list views, where active dependent values either became unavailable or showed inactive options incorrectly.
The root cause was a regression within the search filter criteria logic. The application failed to correctly evaluate and pass binding filter dependencies during list-view queries specifically when interacting with a custom dropdown field type.
Solution
The search filter criteria logic has been corrected to properly process binding filter dependencies for custom dropdown fields in the Web UI. Dependent list views and advanced search filters will now accurately reflect and restrict available dropdown options based on the selected control field value.
Issues with Prompts and Layouts in the Application Throughout Different Modules - 40661
Users encountered multiple layout and display issues across different application modules, including Work Orders and Resources. Specifically, column captions incorrectly displayed raw custom field names or technical placeholders, and critical tracking sections—such as Employee Info, Schedules, and Vacation History tabs—failed to load or appeared entirely blank within custom resource layouts.
The system failed to properly parse overridden description captions and unbound date/time fields within list views. Additionally, the application's underlying user interface engine did not support complex grid column filters containing logical "OR" operations or advanced date functions, causing dependent data blocks and layout tabs to fail to populate.
Solution
The layout rendering engine and filter evaluation logic have been updated to fully support complex grid column filters and advanced date-time expressions. Column captions now reliably display their correct user-friendly labels, and all resource and work order data tabs load completely and accurately across all custom layouts.
Navigation Panel Header Items Are Misaligned and Shifted to the Left - 41873
Following a recent update, the header items within the main navigation panel incorrectly shifted entirely to the left edge of the screen. This layout misalignment caused the interface elements to appear cramped and visually inconsistent, disrupting the standard presentation of the user interface.
The root cause was a global style sheet regression where an inherited padding declaration was inadvertently overridden during a separate layout update. This caused the navigation headers to lose their baseline structural spacing and shift out of alignment across the application.
Solution
The global user interface styling has been corrected to restore the proper padding constraints to the navigation panel headers. The header items now align correctly across all modules and display with consistent visual spacing.
Import Utilities & System Services
Import Spreadsheet Dates Being Offset by -1 Day in the Imported Job Record - 39290
When importing job records from a spreadsheet, dates were incorrectly shifted backwards by one day upon creation. This caused the imported records to display inaccurate tracking and scheduling dates, forcing users to manually correct the date values after every import.
The root cause was a timezone evaluation mismatch when handling spreadsheet imports without a defined timezone. The system defaulted to saving the data in the server's timezone (UTC) without prior translation, which subsequently forced a localized conversion when retrieved by the user, resulting in a day-offset reduction for Western timezones.
Solution
We added a standard "Import Data Time Zone" selection field directly to the standard Import Records from Spreadsheet layout window. The utility now utilizes this specified configuration to align and preserve the incoming spreadsheet dates accurately against the user's localized display settings without experiencing a day shift.
Scheduling Group/Resource Links "Incorrect Syntax Near the Keyword 'WHERE'" - 39731
When using the "Scheduling Group/Resource Links" option within the Import Records from Spreadsheet utility, users encountered a database error message stating "Incorrect syntax near the keyword 'WHERE'." This issue prevented the system from successfully processing the spreadsheet, completely stopping the import and blocking the linking of resources to scheduling groups.
The root cause was an issue within the utility's data-handling mapping where certain spreadsheet columns failed to properly align with their corresponding database parameters. Because the required update parameters were missing during processing, the application constructed an incomplete and malformed database query.
Solution
The utility's data-handling logic has been corrected to ensure that spreadsheet columns map to their appropriate fields. The system now accurately processes resource codes, allowing scheduling group and resource links to be imported successfully without encountering database syntax errors.
Issue Management (IM Sessions)
Issue Attachment Allowed for Session Without Issue and Links to Wrong Session - 35034
When attempting to attach documents to a session that does not have any active issues assigned to it, the system mistakenly allows the attachment action to proceed. Instead of blocking the action, the file is erroneously uploaded and linked to an entirely different session's issue, leading to misplaced documentation and a lack of data integrity across separate sessions.
The root cause was that the session action menu configuration failed to disable issue-related menu actions when a user switched to a session containing no issues. Additionally, the attachment processor did not validate whether the active issue record actually belonged to the currently selected session, causing a stale reference from a previously viewed session to persist and capture the new attachment.
Solution
We updated the session action menu to automatically disable all issue-specific options—including adding attachments, updating statuses, or copying records—whenever a session with no issues is selected. This ensures that attachments can only be added to sessions with valid, existing issues, preventing cross-contamination of files.
Jobs, Orders, Billing (Job Management)
Work Order Search List Does Not Update After Voiding Order - 36609
A known issue exists where the Phase column on the orders search list does not update to "VOID" after an order is canceled via the list actions menu.
The underlying cause is that while the backend data successfully updates in memory during the cancel action, the system lacks the command to tell the UI grid to redraw, leaving the list stale until a manual refresh is triggered.
Solution
We updated the cancellation workflow to include a command that forces the UI grid to redraw. The search list now updates instantly to reflect the "VOID" phase as soon as an order is canceled.
Cannot Cancel a Transaction - 38619
A known issue affected the Work Order Transactions and Order Transactions search lists, where selecting the "Cancel Transaction" option from the Actions menu was completely non-functional. Despite users selecting a cancellation reason and receiving confirmation messages, the transaction phase remained unchanged as "Confirmed" instead of updating to a cancelled or voided state. The root cause was an issue with how the system processed specific cancellation reasons. When a chosen cancellation reason lacked a predefined phase override mapping, the system skipped updating the transaction's phase entirely, leaving the cancellation incomplete despite recording the cancellation user and date details.
Solution
We updated the cancellation processing logic to ensure that executing a transaction cancellation successfully updates and reflects the correct transaction phase, regardless of the individual cancellation reason configuration.
Search Listed Work Orders Only Listing the First One - 40075
When searching for multiple work orders using a semicolon-delimited list, the system incorrectly returned only the first work order in the results. Subsequent items in the list were completely omitted from the search results, preventing users from efficiently reviewing multiple records simultaneously.
The root cause was an overly restrictive search string tokenizer that failed to account for trailing spaces following the semicolon delimiter. The parser treated the leading space of subsequent work order numbers as a literal character, resulting in a mismatch since work order identifiers do not contain leading spaces.
Solution
The search parser logic has been updated to automatically trim leading and trailing whitespace around semicolon delimiters. Entering a space-delimited or semicolon-separated list of work orders will now correctly return all matching items in the search results.
Transactions Billed with an Overcharge When Using Up-to-and-Including Price Type w/Surcharge - 40767
When billing transactions using the "Up-to-and-Including" pricing model combined with a flat surcharge, the system incorrectly applied an unexpected overcharge to the final billing amount. This financial inaccuracy occurred across multiple transaction volumes, causing billing discrepancies that required manual auditing and adjustments. The root cause was a structural conflict within the pricing calculation engine where an unnecessary mathematical offset was hardcoded into the progressive tier formula. Because the flat surcharge is designed to completely cover all volume up to the tier threshold, adding this extra offset forced a fractional portion of that boundary window to be double-billed at the standard hourly rate.
Solution
The backend billing calculation logic has been updated to eliminate the hardcoded offset and execute a clean subtraction of the tier threshold floor. The progressive pricing engine now aligns correctly with surcharge buyout rules, ensuring transaction amounts are computed accurately without generating overcharges.
Row Display Re-Setting Back to Customer on Order Duplication - 41122
Manually customized Row Display descriptions in the scheduling system would unexpectedly revert back to the default customer name when an order was duplicated. This occurred for orders associated with a specific job, forcing users to repeatedly re-enter customized descriptions for copied bookings.
The root cause was an inaccurate state flag within the duplicator window logic; when default job and customer information was initially pulled during duplication, the system incorrectly triggered a reset sequence that overrode the copied row display values.
Solution
We updated the duplicator window's evaluation logic to ensure manually edited Row Display values are properly prioritized and preserved during order duplication. The system now correctly respects the "Copy Row Display" preference alongside scheduling defaults.
Media Order
Operations List Results Missing Source Row Custom Field Values - 34344
When launching the Operations List from a Media Order, custom Source row field values configured to display on the layout were entirely missing from the results. Users were unable to view critical metadata, such as location or division assignments, directly within the returned operations list.
The root cause was an issue in the system's template evaluation logic during data retrieval. When a custom field was included on a layout without explicit search criteria applied to it, the system prematurely exited the data loading sequence and omitted the custom field projections from the final database query.
Solution
The template loading and query evaluation process was updated to ensure that all layout-configured custom fields are properly identified and included. Custom Source row field values now populate accurately in the Operations List results regardless of whether they are being used as active search criteria.
Media Order / Transmission Shared Functionality
Service Header Description Incorrectly Copies to Service Line Description - 41959
When saving and reopening a transmission order, the description from the service header was incorrectly copied over and overwritten onto the individual service line descriptions. This caused unexpected data modification, overwriting distinct row-level details previously entered by the user.
The root cause was a control validation mismatch within the grid edit card interface where an internal refresh event triggered a dropdown value update. The system misevaluated this automated background refresh as an intentional user edit, causing it to bypass standard value protections and overwrite the existing line text.
Solution
The dropdown control logic has been updated to include a system-level flag that distinguishes automated background refreshes from manual user edits. The system now correctly preserves distinct service line descriptions upon saving and reopening without improperly inheriting the header description.
MetaVault Library / Asset & Title Management
Columns & Row Data on Media Assets Search List Audio Tab No Longer Display Post Upgrade - 40215
Following a recent system upgrade to versions 26.2 and 26.3, users encountered an issue where columns and row data completely failed to display on the Audio tab within the Media Assets Search List layout. This prevented users from viewing, reviewing, or interacting with any track position and audio asset details during their standard library workflows.
The root cause was an intentional performance optimization that inadvertently hid the underlying audio search data tables from the asset search layout across all instances, unless a specific localized configuration explicitly re-enabled them.
Solution
The media asset layout engine has been updated to properly restore visibility to the affected data structures. Columns and row data on the Media Assets Search List Audio tab now display completely and correctly following an upgrade.
Payroll Rules, Scheduling Counters & Personnel Rules
Justification Field Disabled and Order Saves Without Mandatory Justification - 38988
When a consecutive-day rule violation occurred, the scheduling conflict window appeared as expected, but the justification field was incorrectly disabled and non-editable. Despite the validation requiring a mandatory explanation, the system improperly allowed users to save the order successfully without entering any text.
The underlying issue was caused by a validation error where the scheduling rules failed to properly link the necessary penalty identifiers to the conflict engine. As a result, the system treated the conflict as automatically resolved, which mistakenly locked the user input field and failed to block the save operation.
Solution
The scheduling validation logic has been corrected to properly handle and pass penalty identifiers during consecutive-day conflict checks. The justification field is now correctly enabled and enforced as mandatory, and the system will successfully prevent the order from being saved until a valid justification is provided.
Scheduling
Booking Durations/Edits Are Not Consistent When Editing on Calendar View - 29620
When multi-day bookings were edited or dragged within the Calendar View of the Schedule Book, users experienced inconsistent duration and rendering behavior. Specifically, dragging bookings across week rows split them into separate fragmented blocks, dragging them backward incorrectly removed an entire day from the total duration, and moving them across week boundaries caused temporary visual mismatches before saving.
The calendar view improperly reused logic designed for the timeline view, which caused multi-segment wrapped bookings to be treated as independent single bars and conflated a booking's week row with its horizontal and vertical screen positions. This led to systematic miscalculations in total booking duration and incorrect rendering coordinates during drag-and-drop actions.
Solution
The schedule book calendar view was updated to correctly handle multi-segment wrapped bookings as a single unified block and accurately calculate layout positioning against the specific week row. The system now preserves the original booking duration during row-to-row moves, ensures smooth dragging across week boundaries, and properly synchronizes the real-time visual preview and date tooltips.
Change View in Schedule Book Shows Blank Bookings - 29646
When utilizing the "Change View" button within the Schedule Book, transitioning between views caused the booking bars to render completely blank, stripping out configured bar text such as Work Order numbers, descriptions, and operational icons. Users experienced a loss of immediate visual context and detail unless they manually reopened the view from the Navigator.
The root cause was that when switching to a new view, the system held onto the old row structures in its memory, and the first view set a filter that did not get cleared for the second view. Because the internal data managers responsible for fetching the data remained linked to the old view and restricted by those stale filters, they failed to pull the necessary new information from the database.
Solution
The view transition logic was corrected to ensure that old row structures and view-specific filters are thoroughly cleared when switching views. The system now properly reinitializes the data managers for the newly selected view, allowing the booking bar text and icons to load and display perfectly every time.
Error Message Pop-up When User Tries to Assign New Order on the Scheduling View If It's Different From the Original Order Type - 32307
When attempting to assign a new order to an existing schedule that differed from the original order type (such as assigning a Work Order or Transmission Order to a Media Order resource), the system triggered a generic, unhelpful error pop-up displaying "Data not found." This prevented users from completing their assignments smoothly and lacked clear guidance on what caused the restriction. The underlying issue was a missing validation step to check if the source and target orders shared matching types before allowing the assignment. Consequently, the system erroneously generated an invalid internal reference key based on the incorrect source type, leading to a failure when attempting to load a non-existent document structure.
Solution
The system was updated to introduce a validation check that enforces order type matching during the assignment process. If a user attempts to mix incompatible order types, the system now safely blocks the action and provides a user-friendly validation message: "You can only assign an Order of the same type. Please select an Order that matches the original type."
Missing Document Field TRX_NO in Both Report and Screen Layout ("Counter Rule Evaluator List") - 34995
Users were unable to add critical transaction tracking numbers to custom screen and report layouts within the Counter Rule Evaluator List. This prevented organizations from viewing or generating reports that properly group and display associated work order, job, and client details.
The transaction tracking identifier was improperly marked as invisible within the global configuration settings. This oversight made the field completely unavailable for selection within the standard layout customization tools for this specific document.
Solution
We updated the configuration tools to ensure this transaction field is fully visible and available for custom screen and report layouts. This allows users to successfully integrate the field into their custom layouts to retrieve and display the expected work order, job, and client information.
Error When Trying to Save a New Scheduling Group - 37699
A known issue exists where users encounter an error stating "Document cannot be saved. Capacity Hours for Table 'Group' is required" when trying to save a newly created Scheduling Group after selecting a Group Type. This prevents the record from saving properly unless a workaround, such as duplicating an existing record, is used.
The root cause is that newly created rows in the Group Types setup default the "Exclude from Capacity Planning" field to "N" (unchecked). As a result, when these Group Types are assigned to a Scheduling Group, the group's Capacity Source automatically maps to "Constant," forcing the system to validate and require data for all seven Capacity Hours fields, which are initially blank.
Solution
We updated the configuration defaults so that newly created Group Types automatically default the "Exclude from Capacity Planning" field to "Y" (checked). This ensures that when a Group Type is assigned to a new Scheduling Group, the Capacity Source correctly initializes as "Exclude," allowing the record to save seamlessly without triggering unnecessary validation errors.
Schedule View/Book: Moving an Item in the 'Items' Window to a New Location Places It at the Bottom of the Items List - 38648
A known issue affected the Schedule Book "Items" window where dragging an item or group using the drag icon to any location other than the bottom of the list would incorrectly place the item at the very bottom on the initial attempt. This required users to perform a secondary drag action to correctly position the item.
The root cause was that the underlying dataset for the select item popup lacked a display sequence column, causing all rows to load with a default sequence value of zero. Consequently, when the system attempted to find the target drop neighbor during the initial drag-and-drop operation, the sequence arithmetic failed to find a match and defaulted to appending the item to the end of the list.
Solution
We updated the popup dataset to include the display sequence column and initialized each row with consecutive, proper sequence markers. The drag-and-drop utility now correctly identifies neighboring rows on the first attempt, ensuring that items immediately land and remain at their newly designated positions.
Resource Counter is Not Re-Evaluated When Editing an Existing Roster to Exceed the Counter Limit - 38718
An existed where modifying an existing roster to exceed a configured resource counter limit (such as maximum hours per week) failed to trigger a conflict or display a counter error. This allowed a user to save the roster with excess hours without receiving any system alert or conflict notification. Additionally, if the roster hours were subsequently reduced back below the limit, stale conflict text would sometimes fail to clear from the view.
The root cause was that the roster update process lacked an explicit conflict checker validation call during modifications, preventing the evaluation engine from running on edits. Furthermore, the evaluation engine would prematurely exit under certain reduction workflows, failing to perform the necessary cleanup logic for outdated conflict messages.
Solution
We updated the roster modification workflow to explicitly execute conflict verification when saving changes. The system now correctly re-evaluates resource counter rules upon editing an existing roster, reliably displaying conflict alerts if thresholds are crossed and cleanly clearing stale warnings when hours are adjusted back within limits.
Not In Roster Conflict Triggered Incorrectly on Non-Rostered Day - 38991
When creating a booking on a non-rostered day, the system incorrectly triggered an erroneous "Not In Roster" conflict warning alongside any expected scheduling penalty rules. This caused confusion for users during scheduling workflows, as the system falsely indicated a roster coverage violation for a date where no roster was defined.
The conflict-detection function compared date values using a baseline UTC timezone instead of the user's localized scheduling timezone. When a booking's start time crossed a midnight boundary relative to UTC, the system incorrectly evaluated the booking as falling on a different day, leading to the false roster violation.
Solution
The conflict evaluation logic has been updated to store and compare scheduling dates using the user's localized timezone rather than the baseline UTC timezone. Bookings created on non-rostered days will now correctly evaluate against the schedule book configuration without triggering false roster conflicts.
Call Sheet Report Unable to Search By Job - 39901
Running a Call Sheet Report filtered by a custom Job Number field override resulted in an internal database error and a system crash. This problem prevented users from successfully generating and viewing their reports when utilizing custom criteria layouts.
The root cause was an execution sequencing error in the backend query processor, which attempted to evaluate search criteria before completing the necessary data table joins required for the custom field override.
Solution
We corrected the backend query processor sequence to ensure all required table joins are fully evaluated before search criteria are applied. The system now correctly processes custom field overrides, allowing the Call Sheet Report to run smoothly without error.
Resource Document Action Buttons Slightly Hidden Behind the Document Tab Header - 40115
When opening a Resource document from the left panel of the Schedule Book view, the page shifted slightly upward under specific conditions, such as when the browser zoom was set to 80%. This shifting caused critical action buttons—including Save & Close, Save, Attachment, Change Request, and Actions—to become partially obscured and hidden behind the document tab header, hindering user interaction.
The root cause was a layout rendering issue where the document tab header shifted slightly upward and failed to properly recalculate its boundary constraints when the interface was viewed under specific zoom scales in the hosted environment.
Solution
The layout rendering logic has been corrected to ensure the application elements remain properly aligned at all zoom levels. The Resource document and its associated action buttons now display fully and clearly without shifting or becoming hidden behind the tab header.
Time Card
Foreign Key Error on Time Card Batch - 41506
When executing "Recalculate Payroll Rules" or "Load Schedule" on time card batches containing zero-hour or corrected entries, the system encountered a critical SQL foreign key constraint violation error. This database error interrupted processing and prevented payroll administrators from successfully completing the batch payroll workflows.
The root cause was a transaction handling flaw where the payroll rules engine would continue to process and generate new payroll transactions for records that were simultaneously marked for deletion within the same operation. This caused the system to attempt to write transaction data referencing a time card detail identifier that no longer existed in the parent batch table.
Solution
The backend payroll processing logic has been updated to automatically detect and exclude any time card detail rows that are scheduled for deletion before running rule calculations. The engine now cleanly skips these placeholder or corrected records, allowing the batch to process and save successfully without triggering database violations.
Transmission
Internal Error When Selecting Transmission Point Dropdown in Service Setup - 38103
An internal error occurs when selecting the Transmission Point dropdown in the services interface without first selecting service details. This prevents users from selecting a transmission point smoothly during order workflows unless they strictly follow a specific sequence.
The underlying cause was a null reference exception triggered when a user interacted with the Transmission Point dropdown before assigning a Service Profile, which left necessary internal service row identifiers unassigned during the retrieval process.
Solution
We updated the dropdown logic to handle unassigned service details gracefully. The system now prevents the application error and displays a "Data Not Found" state until a valid service has been specified.
Resource Compatibility Validation Message - 39205
Users encountered confusing and highly technical error prompts when resource compatibility validation failed. The existing messages displayed dense internal syntax and raw data tokens, making it difficult for users to understand why a document could not be saved or why a resource was deemed incompatible.
The root cause was that the validation error messages were never properly vetted or formatted for end users, resulting in the system displaying raw code-level property paths and brackets directly in the user interface.
Solution
We updated the error message wording to be clear and understandable. The system now displays plain-language notifications specifying exactly which resource is incompatible and which criteria failed, allowing users to quickly identify and resolve the compatibility conflict. We also included additional tokens to allow inclusion of group code and resource code using a siteessages.txt file.
Visualiser - React Scheduler End Time Displayed Incorrectly - 41489
When viewing bookings in the React resource scheduler, the scheduling bars incorrectly extended past their actual end times. This visual stretching caused the booking blocks to run over the bounds of the order's window band, misrepresenting the true duration of scheduled tasks.
The root cause was a layout rendering issue where the resource scheduler booking bars utilized a standard content-box layout with additional padding and border sizes. This forced the visual blocks to render wider than their calculated percentages suggested, shifting the right edge forward by approximately fifteen minutes at standard zoom levels.
Solution
The scheduling layout engine has been updated to apply a border-box sizing model to the booking elements so that padding and borders are calculated within the specified width percentages. The booking bars now cleanly terminate exactly at their scheduled end times flush with the order window boundaries.
Visualiser - Ghost Booking Displayed in Resource Search Before Order Saved - 41589
When changing a resource while multiple services or operations were booked, the resource search window incorrectly displayed uncommitted "ghost" bookings before the order was saved. Re-opening the resource search modal caused these duplicate entries to accumulate, misrepresenting the active schedule state.
The root cause was an issue within the visualizer's booking update function, which directly mutated the shared application state cache in place. As a result, uncommitted tracking modifications leaked into the active view cache and persisted until a manual save operation forced a fresh reload.
Solution
The visualizer state utility has been updated to create a clean clone of the committed bookings before merging active operational changes. The application cache now stays pristine during active resource switches, ensuring ghost bookings no longer accumulate or display before saving.
User Setup, Roles, Security Classes & Login Security
Confidentiality Class Not Being Applied to Bid Details Search Results - 41874
When performing searches within the standalone Bid Details Search screen, confidentiality class security restrictions were not being actively applied to the returned results. This created a security gap where users could search for and view restricted individual line items belonging to confidential bids that they were otherwise unauthorized to see on the main Bids List.
The root cause was that the initial confidentiality framework was only designed to filter main header lists. Standalone line-item query screens like the Bid Details Search were omitted from this check, meaning the underlying detail dataset failed to inherit or validate against the parent record's confidentiality configuration.
Solution
The Bid Details Search query logic has been updated to properly inherit and enforce confidentiality class restrictions. The system now validates line-item search results against header-level confidentiality rules, ensuring unauthorized users are blocked from viewing restricted bid data across all entry screens.
Xytech Release 26.5 — 82 items
HOTFIXES
Release 26.5.7325.1-HF1
August 19, 2026
Executive Summary
Xytech Release 26.5.7325.1-HF1 resolves 9 issues reported across the platform. It delivers targeted corrections spanning Media Order, Scheduling, Jobs / Orders / Billing, Reporting, API & Webhooks, and the application framework.
The resolved issues address:
- Order and Billing Integrity: Corrections to service template dependency handling, unit actualization on service completion, and concurrent invoice batch posting, eliminating lost cross-service links, reset billing units, and duplicate invoice records.
- Schedule Book Accuracy: Fixes to resource row expansion and booking time adjustment so stacked bookings remain legible and time changes cascade correctly across all related transactions on an order.
- API v3 Query Reliability: Alignment of the POST query contract with GET conventions and a rebuilt filter parser, so column selections, operators, and combined OR conditions are honored rather than silently dropped.
- Display and Localization: Correct UTF-8 handling for multi-byte characters in emailed reports and restored text contrast in input fields under the Moonlight theme.
API & Webhooks
API V3 POST /Query Filter Parameter Processing Failure - 44716
When executing POST /query requests against API v3 endpoints, filtering criteria containing $-prefixed operators, multiple conditions on the same field, or combining operators, or sibling OR groups were ignored or overwritten. While the API returned HTTP 200 responses with plausible dataset counts, criteria were dropped silently without throwing validation errors.
The root cause was located in the filter model conversion helper function, which accumulated properties directly into a single JObject by key assignment. This implementation pattern caused duplicate key writes (such as repeated field names or $or keys) to overwrite preceding values, while unrecognized $-prefixed operator strings fell through to default equality assignments.
Solution
We updated the POST /query filter processing logic to properly accumulate multiple field conditions and preserve sibling OR logical groups without key collisions. Additionally, $-prefixed operator names are now correctly parsed and mapped to ensure filter intent is accurately applied.
Framework, Dashboards, Fundamentals
Field Text Color Not Visible with Moonlight Theme - 44728
When using the Moonlight visual theme, text within input fields, textboxes, and multi-select components appeared dark on dark backgrounds, making field content illegible. Users were unable to view typed text or field selections in affected standard layout forms.
The root cause was an explicit background color declaration marked with high CSS priority in the theme's stylesheet, which forcibly overrode control inline background styles and broke expected color contrasts.
Solution
We removed the strict background color override from the Moonlight theme configuration for text inputs. The fields now properly display readable text against high-contrast backgrounds across forms.
Jobs, Orders, Billing (Job Management)
Discrepancy Between Invoice 22056 and Order#1588782-1 - 41616
When posting a large invoice batch, duplicate "ghost" invoice records were created containing valid invoice numbers but no linked order transactions. While these ghost invoice shells appeared in the Invoices list view, their underlying order transactions were assigned to separate, secondary invoice numbers generated within the same batch run.
The root cause was a missing server-side concurrency lock on invoice batch posting operations. When a secondary post request was triggered before an initial high-volume batch execution completed—such as from a client-side timeout retry or user action—both requests ran simultaneously against the database and shared invoice-number sequence, leading to duplicate invoice numbering and missing transaction links.
Solution
We updated the invoice batch posting process to establish proper server-side concurrency locking during execution. The system now prevents concurrent posting operations on the same batch, ensuring invoice numbers and transaction links are generated cleanly without duplicate records.
Media Order
Cross Service Deps Removed After Loading Service Template with Link Sources Ticked - 36568
When loading a Media Order service template that has "Link Sources" enabled, saving the order removed cross-service dependency values from operations. As a result, dependency fields were wiped clean upon save, requiring users to manually re-link sources across complex orders.
The root cause was an issue during the save process where the system evaluated deferred display values against authoritative database dependency records. Because display values were left empty during the template load, the save routine identified the dependency records as invalid and cleared both the database and display columns.
Solution
We updated the service template loading process to properly finalize and populate cross-service operation dependency display values upon loading. This ensures that dependency values are recognized as valid and retained when saving the Media Order.
Actual Units Reset to Default on Service Completion - 41441
When changing a Media Order service status to "Complete" (or bulk completing operations), custom transaction time ranges and saved unit values were overwritten and reset to 1.00. While the scheduled times remained intact, billing units and actual units reverted back to 1.00, resulting in billing discrepancies.
The root cause was located in the transaction actualization process, where the start and end timestamp tracking variables were declared outside the transaction iteration loop. As a result, after processing the first transaction, the stored timestamps failed to refresh for subsequent records, causing later transactions to evaluate against duplicate time windows and merge into a single actualization detail row.
Solution
We updated the actualization logic to properly reinitialize time tracking variables within each transaction iteration loop. Each transaction now accurately maintains its distinct time window, creates its corresponding detail row, and preserves custom unit values upon service completion.
Reporting
[24036] - Arabic Text Displayed as Unreadable Chars in Work Order Scheduled Report - 42071
When sending Work Order Scheduled Reports with the "Append Report to Email Body" option enabled, multi-byte Arabic characters in fields such as the Work Order Description appeared as unreadable text in the received email body.
The issue occurred because the email compilation process for embedded report bodies did not properly decode HTML body content as UTF-8, misinterpreting multi-byte character sequences during string extraction and serialization.
Solution
We updated the email body processing logic to properly decode HTML report content using UTF-8 encoding and strip any Byte Order Marks (BOM), ensuring Arabic characters display legibly in email notifications.
Scheduling
Schedule Book - Expanding Resource Row Height Causes Stacked Bookings to Overlap - 40083
When users expanded a resource row height in the Schedule Book to better view stacked or overlapping bookings, all booking bars expanded to fill the full height of the row rather than maintaining their stacked layout. This caused individual booking bars to overlap and obscure one another, making concurrent bookings illegible and difficult to distinguish.
The issue occurred because dragging a row boundary recalculated the row line count from the raw pixel height without evaluating existing line counts or rendered heights. Additionally, layout calculations relied on a static pixel overlap threshold; as individual booking bar heights grew during row expansion, they exceeded the static threshold and collided visually.
Solution
We updated the Schedule Book layout engine so that row expansion increases booking bar heights strictly in proportion to the incremental dragged distance rather than expanding to fill the entire row. Overlap offset spacing now scales dynamically with the row line count relative to system default preferences, keeping stacked bookings cleanly separated and legible regardless of row height adjustments.
Schedule Book Booking Time Adjustment on Transactions - 43232
When adjusting booking times on a Transmission Order within the Schedule Book using drag-to-move or drag-to-resize, selecting "Update entire order" only updated the specific booking bar that was dragged. Secondary transactions created from service lines remained at their original times or snapped back unexpectedly, causing the Work Order time range to stretch and expand across mismatched times.
The root cause was that the Schedule Book's time change process disabled automatic Work Order time cascading to manually manage transaction times. However, the process skipped service-linked transactions to avoid double-adjustments, leaving them with no active update mechanism when the cascade was disabled.
Solution
We updated the Schedule Book transaction update logic to evaluate whether automatic cascading is active. When "Update entire order" is selected, service-linked transactions are now updated directly by the drag delta along with the primary booking.
APIs & Integrations
API v3 POST Query Field Selection Parameter Synchronization - 44237
In API v3 POST /{document}/query requests, column selection criteria sent via the fields parameter were ignored, causing the API to return all available record columns. While GET endpoints accepted fields for column projections, the POST query model exclusively bound the legacy resultColumns wire contract property. Requests formatted with fields resulted in null selections, falling back silently to full dataset returns without validation errors.
The root cause was an un-updated explicit JsonProperty attribute on the model binding class, which retained resultColumns as the expected JSON key despite internal member refactoring.
Solution
We updated the POST query request model to accept fields for column projections, aligning its wire contract directly with GET request conventions. The resultColumns property is maintained as a backward-compatible alias.
Xytech Release 26.5-HF1 — 9 items
Release 26.5.8619.1-HF2
August 31, 2026
Executive Summary
Xytech Release 26.5.8619.1-HF2 delivers 1 new feature and resolves 5 issues. It spans Scheduling, reporting exports, API and integration behavior, and core platform delivery.
Highlights include:
- Amazon S3 export support for scheduled reports, allowing report output and templates to be configured per report against a shared cloud storage location rather than local file paths.
The resolved issues address:
- Roster Scheduling Accuracy: Corrections to roster editing and Calendar View rendering in the Schedule Book, so moved roster entries keep their scheduled shift times instead of defaulting to a full-day block, and shifts display as visible blocks rather than empty 24-hour rectangles.
- Concurrent Update Reliability: Elimination of intermittent document lease failures during media asset grid edits and API update calls, allowing batch and background operations to complete without interruption.
- Work Order Data Accuracy: A correction to service note retrieval on work orders, ensuring entered service note text is stored and displayed correctly rather than resolving to the spec note.
- Deployment and Asset Delivery: Versioned cache handling for application files, so users receive current application assets immediately after a deployment without manually clearing their browser cache.
New Features
S3 Credentials (shared across all reports) - 39770
3M_EXPORT_S3_ACCESS_KEY = <access-key>
3M_EXPORT_S3_SECRET_KEY = <secret-key>
3M_EXPORT_S3_REGION = us-west-2
Per-report configuration
Configuration Keys Summary Table
| Report | Export Path Config Key | Template Config Key |
|---|---|---|
| Audience Engagement | 3M_AUDIENCE_ENGAGEMENT_EXPORT_PATH |
3M_AUDIENCE_ENGAGEMENT_EXPORT_TEMPLATE |
| Cancelation | 3M_CANCELATION_EXPORT_PATH |
3M_CANCELATION_EXPORT_TEMPLATE |
| Dashboard | 3M_DASHBOARD_EXPORT_PATH |
3M_DASHBOARD_EXPORT_TEMPLATE |
| Facility Usage | 3M_FACILITY_USAGE_EXPORT_PATH |
3M_FACILITY_USAGE_EXPORT_TEMPLATE |
| Monthly Export | 3M_MONTHLY_EXPORT_PATH |
3M_MONTHLY_EXPORT_TEMPLATE |
| Personnel | 3M_PERSONNEL_EXPORT_PATH |
3M_PERSONNEL_EXPORT_TEMPLATE |
| Resource Cost | 3M_RESOURCE_COST_EXPORT_PATH |
3M_RESOURCE_COST_EXPORT_TEMPLATE |
Example: 3M_RESOURCE_COST_EXPORT_PATH = s3://bucket-name/3m/exports/resourcecost 3M_RESOURCE_COST_EXPORT_TEMPLATE = s3://bucket-name/3m/templates/ResourceCost.xlsx
Note: Replace bucket-name with your actual S3 bucket name provided by DevOps. All paths use the /3m/ prefix as configured in the shared bucket.
API & Webhooks
JmWorkOrder: Service Note No Text Returns Spec Note Text (Duplicate Sys Note Spec Join Alias) - 45139
Users experienced an issue where setting or updating the service note text on a work order inadvertently displayed the spec note text instead. When viewing or re-opening a work order after entering a service note, the field either displayed the text of the spec note or appeared empty, giving the impression that the entered note text was not saved.
The root cause was an incorrect join alias declaration on the service note text field within the work order dataset. It was assigned the same join alias as the spec note text field, causing database read operations for service notes to improperly resolve through the spec note record.
Solution
We updated the join alias configuration for the service note field on the work order dataset to use its own unique alias. Read operations now resolve to the correct service note record, ensuring service note text displays accurately across all interfaces.
Scheduling
Roster Edit Defaults to 12a-12a Instead of Scheduled Time - 44981
When users drag and move a roster record to a new time or different resource on the Schedule Book canvas, opening the Edit Roster dialog causes the scheduled start and end times to default to 12:00 AM – 12:00 AM (a 24-hour duration). Saving the record after moving it converts the roster entry into a full 24-hour block, causing unexpected schedule modifications and extra manual adjustments for users managing rosters in bulk.
The root cause was that saved roster entries are composed of the scheduled shift along with full-day filler segments sharing the same reference number. A previous update instructed the edit window during drag operations to combine all segments matching the reference ID into a single time span, causing the background 12:00 AM – 12:00 AM filler range to override the actual roster start and end times.
Solution
We updated the roster edit initialization logic so that moving a roster entry on the Schedule Book canvas retains its original scheduled start and end times. Roster records now preserve their intended shift duration when moved across times or resources without defaulting to a 24-hour block.
Calendar View in Schedule Book Does Not Correctly Display Roster Records - 44983
In the Schedule Book Calendar View, Roster records were displaying as full-day blank transparent blocks spanning 24 hours rather than properly rendered shift blocks. Users were unable to clearly identify scheduled Roster entries or visual shift details when viewing schedules in the Calendar layout.
The root cause was logic introduced to consolidate multi-piece bookings within the same week in Calendar View. For Roster entries—which consist of scheduled shifts alongside background full-day filler segments—the rendering engine retained the invisible filler block and discarded the visible shift block, leaving only an empty full-day rectangle.
Solution
We updated the Calendar View rendering logic for Roster records to ensure active shift segments are correctly preserved and displayed. Scheduled Roster entries now display properly on the Calendar View without defaulting to invisible full-day blocks.
General
Stale Browser Files Issue After Deployment - 44765
Users intermittently received outdated or corrupted application files after a new deployment, resulting in broken interface elements or failing application features until browser caches were manually cleared.
The issue occurred because application static assets lacked appropriate cache control headers, causing intermediate proxy servers and browsers to estimate expiration times and cache files indefinitely, including incomplete copies retrieved during application restarts.
Solution
We updated static asset delivery to explicitly stamp key bundle files with the specific build version number, ensuring browsers always request and load the newest assets immediately after a deployment.
'Document Is Not Up to Date' Lease Failures on LibMaster/MoMediaOrder Updates - 44967
Users encountered intermittent lease errors—such as "The document is not up to date"—when updating media asset records or performing updates via REST API PATCH calls. These unexpected lease failures interrupted grid editing operations across blocks of Media Assets and caused background tasks to fail.
The issue was caused by an asynchronous process incrementing a document's internal generation number on a background thread while an update request was actively reading and attempting to lease the document. In batch updates, background wake processes raised by earlier rows unintentionally incremented the generation numbers of subsequent rows within the same batch before they could be leased.
Solution
We updated the background wake handling to process generation updates inline on the main request thread before re-reading documents, preventing batch updates from invalidating upcoming rows. Additionally, retry and reload mechanisms were introduced during document saving to gracefully handle concurrent modifications without failing the lease.
Xytech Release 26.5-HF2 — 6 items
Release 26.5.8733.1-HF3
September 1, 2026
Executive Summary
Xytech Release 26.5.8733.1-HF3 is a targeted hotfix that resolves 1 issue in the Schedule Book.
The resolved issue addresses:
- Schedule Book Selection Visibility: The column highlight that marks a selected Work Order booking now persists while scrolling through dense schedule grids, so users keep their visual reference to the selected order instead of losing it once the booking moves out of view.
Scheduling
The Column Used to Highlight the Selected Work Order (WO) Booking Is Not Visible in the SchedBook When Scrolled Down - 40076
Resolved an issue in the Schedule Book where selecting a Work Order (WO) booking caused its vertical column highlight to disappear upon scrolling down. Users were losing their visual anchor in high-density grid views, which complicated tracking selected Work Orders and increased the risk of scheduling errors.
The root cause was related to grid optimization logic that only rendered rows currently visible in the active viewport. Because the vertical column shading was tied to drawing the selected booking bar itself, scrolling the bar off-screen wiped the highlight overlay from the canvas without re-applying it.
Solution
We updated the grid rendering sequence so that vertical column shading is re-applied directly after each redraw cycle. The system now maintains the visual highlight based on the booking's known time range regardless of whether the selected booking bar is currently visible in the scroll position.
Xytech Release 26.5-HF3 — 1 items
Release 26.5.9559.1-HF4
September 10, 2026
Executive Summary
Xytech Release 26.5.9559.1-HF4 resolves 5 issues. It delivers corrections across Scheduling, MetaVault Library, Bids and Budgets, and system integrations.
The resolved issues address:
- Schedule Book Usability: Email notifications can now be sent for a selected booking directly from the Schedule Book canvas, and sorting resources within one group no longer reorders resources in every other group.
- Search and Filter Accuracy: Manually chosen and intentionally blank Distribution Center values in Library Movements searches are now respected, instead of being overwritten by the user profile default each time a search or saved filter runs.
- Integration Write-Back Reliability: Export Adaptor response data now saves back to work, media, and transmission order transactions even when the parent order remains open, and integration error logs report specific diagnostic detail rather than generic messages.
- Quote Approval Workflow: Approving a quote and generating a work order for the full quote now completes successfully, rather than halting on a record-protection error after the status had already changed.
Bids / Budgets
Quote (Bid) Error When Approving - 45200
When approving a quote (bid) and selecting the option to create a work order for the entire quote, the system generated an error stating Save failed: 'Bid Details.Occurrence Cost1 Amt' is set to prevent changes. Although the status appeared to be updated to Approved, the process halted before creating the corresponding work order.
The root cause was a system-calculated occurrence totals update running during the work order generation phase after the record lock had already been applied to the quote. Because the background calculation routine lacked the lock-bypass directive on the approval execution path, the column change validation rule blocked the system from writing the updated occurrence cost values to the record.
Solution
We updated the approval workflow to properly handle background total updates on locked records. The system now applies the appropriate lock-bypass during the automatic recalculation phase, allowing the necessary calculated costs to update successfully while keeping the user-facing record permissions intact.
MetaVault Library / Asset & Title Management
Library Movements - Distribution Center Reverting Back to the User Defined Value After Being Changed Manually - 45075
Resolved an issue in MetaVault Library Movements search where changing or clearing the Distribution Center field caused it to revert back to the logged-in user's default Distribution Center ID upon executing a search or reloading a saved filter. When users attempted to filter records by a different Distribution Center or run saved searches with a blank Distribution Center, the system continuously reapplied the user profile default value, resulting in incorrect search results and preventing proper filtering.
The root cause was that the search execution and filter reloading processes continuously force-populated and reapplied the user profile default Distribution Center ID. Consequently, any manually entered parameter or blank saved search filter was overwritten during search execution or filter instantiation.
Solution
We updated the Library Movements search and saved filter logic to ensure manually entered Distribution Center values and saved filter criteria remain authoritative. The user default Distribution Center is now applied only on initial screen load, allowing custom filter selections and intentionally blank Distribution Center searches to load and execute correctly.
Scheduling
Transaction Notify Returns Error on Schedule Book - 44616
An internal error occurred when attempting to use the "Notify" or "Email" function with the "Selected Only" option from a context menu in the Schedule Book. When users tried to send an email notification for a selected booking from the canvas view, the system failed to open the expected email template.
The root cause was a missing null-check for the display context within the email initialization process. Because the Schedule Book is rendered as a canvas rather than a data grid, it does not pass an active grid display context. Selecting the "Selected Only" option caused the application to look for selected grid rows that did not exist in the visual canvas layout, resulting in an unhandled exception.
Solution
We updated the email initialization logic to properly handle non-grid display contexts. The system now correctly processes the selected booking directly from the Schedule Book canvas, allowing the email notification template to launch as expected.
Select Items: Sort Order Resources Is Affecting All Groups - 44869
Resolved an issue in the Schedule Book Items window where sorting the resources for a single group unintentionally updated and resorted the resource order across all groups. Users experienced unexpected sequence changes in unrelated resource groups, which disrupted custom layout organization and visual tracking.
The root cause was that the resource grid sorting logic evaluated all schedule item resources globally across every group rather than filtering by the parent group. As a result, applying a sort re-numbered sequence values flatly across the entire table.
Solution
We updated the resource sorting logic within the Schedule Book Items window to scope sorting strictly to the selected parent group. Sorting resources within one group now preserves the defined resource sequence in all other groups.
(No Product Area)
Export Adaptor Response Parsing Fails to Save Back to Transactions When User Keeps Order Open (Leased) - 45099
When using an Export Adaptor for an INSERT on a Work Order Transaction, Media Order Transaction, or Transmission Order Transaction with a response parsing template, the system failed to save parsed response values back into transaction fields if the user kept the parent order open after saving. Users experienced silent failures where integration response data—such as status updates or IDs from external systems—was not written back to the transaction, and generic error messages were logged.
The root cause was that while the Export Adaptor logic bypassed document lease restrictions for the primary triggered transaction document, it did not bypass lease restrictions for the parent order document brought in during the save cascade. Because the active user session held a lease on the open order, the background process was unable to lease the parent order, causing the co-saving operation to fail with a lease exception. Additionally, an exception handling issue prevented the underlying error details from rendering properly in the Export Adaptor Log.
Solution
We updated the response parsing write-back process to bypass lease restrictions on co-registered parent documents when saving parsed responses. Export Adaptor response parsing now successfully updates transaction fields even while the parent order remains open in an active user session, and error logs now display clear, specific diagnostic details.
Xytech Release 26.5-HF4 — 5 items
Release 26.5.9653.1-HF5
September 14, 2026
Executive Summary
Xytech Release 26.5.9653.1-HF5 resolves 3 issues, all within Scheduling. It focuses on the accuracy of booking times in the Schedule Book and on restoring expected filtering behavior in Time Approvals.
The resolved issues address:
- Timezone Accuracy: The Now button and Quick Copy now work against the timezone of the schedule view rather than the timezone of the user's workstation, so the timeline centers correctly and copied bookings land at the time shown in the drag preview.
- Booking Drag Precision: Moving a booking vertically to a different resource now preserves its original start and end times, instead of shifting them because of slight sideways hand movement during the drag.
- Time Approvals Filtering: The Status field on Roster Time Offs is once again a multi-select, so users can filter on several statuses at once and existing saved layouts with multi-status criteria display correctly.
Scheduling
Schedule Book: "Now" Button and Quick Copy Use the Browser's Timezone Instead of the Schedule View Timezone - 45213
When using the Schedule Book in a timezone different from the workstation or browser's local timezone, using the "Now" button at sub-day zoom levels scrolled the timeline relative to the browser's current time rather than the view's current time. Additionally, using the Quick Copy feature applied an offset difference between the view's timezone and the browser's timezone to copied bookings, causing them to land at incorrect times.
The root cause was that both features processed date and time calculations using local browser time conversions instead of maintaining the naive wall-clock time representation used by the schedule view.
Solution
We updated the Schedule Book to calculate current time and copy coordinates strictly against the view's configured timezone. The "Now" button now centers on the current time in the schedule view's timezone, and Quick Copy places duplicated bookings precisely at the target time displayed in the drag preview regardless of the user's workstation timezone.
Bookings Start/End Times Moving When Dragging to Other Resources on Schedule View/Book - 45255
Resolved an issue in Schedule View/Book where moving a booking vertically to a different resource caused its start and end times to unexpectedly shift. This occurred even though the visual position of the booking appeared unchanged on the schedule grid, leading to risk of schedule errors.
The root cause was that vertical drag operations were incorrectly capturing minor horizontal hand-drift and rounding it up to the nearest grid step. As a result, the saved start and end times were updated using this phantom movement value.
Solution
We updated the dragging logic to accurately verify whether a booking's horizontal time position actually changed before applying updates to the start and end times. Vertical moves across resources now strictly preserve the original booking times across all zoom levels.
Time Approvals Filters Auto-Selected - 45273
The 'Status' field on the Scheduling > Roster Time Offs (Time Approvals) search list and filter dialog unexpectedly changed from a multi-select field to a single-select dropdown. When users upgraded to version 26.4, layouts containing legacy multi-status filter criteria displayed combined values on a single line, and users were unable to select multiple status options simultaneously to filter their records.
The ControlSubtype entry for "MultiDropDown" was missing from the configuration table (P table) for the time_off_status column in the SchRosterTimeOffListDataSet dataset. Without this specification, the application defaulted to rendering the status filter field as a single-select control.
Solution
We restored multi-select capability to the Time Off Status field across both the grid header search row and the search criteria filter window. Users can now select and retain multiple status values concurrently, ensuring multi-status filtering operates as expected without requiring changes to saved layouts.
Xytech Release 26.5-HF5 — 3 items
Release 26.5.10647.1-HF6
Executive Summary
Release 26.5.10647.1-HF6 resolves 8 issues. It delivers corrections across Scheduling, Jobs / Orders / Billing, Media Order, MetaVault Library, and the REST API.
The resolved issues address:
- Order and Invoice Accuracy: Duplicating an order with the same work order template now retains its transactions and resources instead of producing a blank order, and order pre-invoices apply the customer's default invoice form rather than prompting for a layout.
- Scheduling Reliability and Performance: Bulk scheduling updates no longer cause database lock contention that blocked user logins, holiday entries can be created and maintained through the API, and the Weekly Scheduling Report includes late-evening bookings on the first day of the week.
- API and Integration Behavior: Roster updates blocked by an approved timecard activity now name the specific activity and batch responsible, and intermittent document lease failures during media asset grid edits and PATCH calls have been eliminated.
- Media Order Automation: Services configured to auto-complete when ready now complete reliably once their dependencies are met, instead of stalling when the background delivery task stopped processing.
Resolved Issues
API & Webhooks
PATCH API Call to Update a Roster Day With a Linked Approved Timecard Activity Results in Error - 45248
When attempting to update a Roster Day record via PATCH API call while its linked Timecard Activity is approved, the system returned an error. Additionally, the error message incorrectly attributed the restriction to the overall Time Card Batch being posted or approved rather than specifying the approved activity.
The root cause was an unconditional verification check during document update processing that blocked edits across all columns if any linked activity detail line had an approved or posted status. The error handling logic raised a generic batch-level error instead of referencing the specific activity line that triggered the restriction.
Solution
We updated the error handling and messaging logic for Roster updates. When a Roster update is restricted due to an approved activity, the system now provides a clear, specific error message identifying the exact Time Card Activity and Batch number causing the block.
Jobs, Orders, Billing (Job Management)
Duplicating Order With Same W/O Template Removes All Transactions - 41802
Resolved an issue where duplicating an order while selecting the same work order template and enabling the removal of existing transactions resulted in all transactions and resources being removed. As a result, the duplicated order appeared completely blank, and no scheduled items were displayed for the target date.
The root cause was an execution timing sequence where clearing existing transactions from the original order interfered with the process loading the selected template. Because the incoming template matched the existing data, the cleanup sequence suppressed the re-initialization step.
Solution
We updated the order duplication logic to ensure work order templates are cleanly reloaded after clearing previous scheduling transactions and resources. The duplicated order now correctly populates all defined transactions and resources as expected.
Customer Default - Invoice Form Ignored on Order Pre-Invoice - 45267
When viewing an order Pre-Invoice, the system did not apply the Customer Defaults setting for the Invoice Form Type. Instead, users were prompted to select a layout manually or the system defaulted to a single pre-selected layout for all customer profiles, creating a risk of issuing pre-invoices with incorrect layout formats or multi-currency details.
The root cause was that the Order Pre-Invoice generation process failed to perform a customer defaults lookup to determine the designated layout parameter, causing the system to bypass customer setup and trigger a manual layout prompt.
Solution
We updated the Order Pre-Invoice logic to check and apply the customer's default Invoice Form Type layout. Pre-invoices now automatically utilize the appropriate customer-specific layout without requiring manual selection.
Media Order
Auto Complete When Ready Service Not Completing - 45279
Under certain configurations, dependent service rows in a media order set to auto-complete upon reaching a "Ready" status failed to complete as expected after their preceding dependent services were updated.
The root cause was an unhandled null exception during the background processing sequence, which caused the delivery task service to stop processing order updates unexpectedly.
Solution
We updated the background delivery service to properly handle empty and null order sweeps, ensuring background tasks remain active and services set to auto-complete transition smoothly once all dependencies are met.
MetaVault Library / Asset & Title Management
'Document Is Not Up to Date' Lease Failures on LibMaster/MoMediaOrder Updates - 44967
Users encountered intermittent lease errors—such as "The document is not up to date"—when updating media asset records or performing updates via REST API PATCH calls. These unexpected lease failures interrupted grid editing operations across blocks of Media Assets and caused background tasks to fail.
The issue was caused by an asynchronous process incrementing a document's internal generation number on a background thread while an update request was actively reading and attempting to lease the document. In batch updates, background wake processes raised by earlier rows unintentionally incremented the generation numbers of subsequent rows within the same batch before they could be leased.
Solution
We updated the background wake handling to process generation updates inline on the main request thread before re-reading documents, preventing batch updates from invalidating upcoming rows. Additionally, retry and reload mechanisms were introduced during document saving to gracefully handle concurrent modifications without failing the lease.
Scheduling
Bulk Document Updates Resulted in System Lock - 45725
When processing bulk updates or creating multiple scheduling records simultaneously, system lock contention caused severe background queue delays. As a result, active sessions queued for extended periods were preventing users from logging in.
The root cause was unnecessary database header updates triggered during routine scheduling record modifications, alongside synchronous batch processing that locked database connections and created resource contention across multi-user environments.
Solution
We updated the scheduling logic to prevent redundant header updates when underlying data has not changed. Additionally, background batch processing for group resource updates was optimized to process asynchronously using separate database connections, resolving lock contention and maintaining system availability.
API Failed to Create New Holiday Entry - 46037
When creating, updating, or deleting a holiday entry through the REST API or integrated web interfaces, the operation failed and returned an HTTP 500 error. While existing holiday records could still be viewed and listed without issue, new entries could not be saved.
The root cause was an unhandled system prompt call within the background holiday save sequence. When invoked via automated API sessions where interactive UI prompts are unavailable, the system encountered a missing reference error during document processing.
Solution
We updated the holiday save process to check for interactive session capabilities before attempting to display confirmation prompts. Background and API calls now safely bypass these messaging prompts, allowing holiday creations, updates, and deletions to complete successfully across all interfaces.
Weekly Scheduling Report: Bookings Starting Late on First Day of Week Missing When Begin Date Matches Week Start Day - 46038
When running the Weekly Scheduling Report with a designated Begin Date that matches the Week Start Day, bookings scheduled for late in the evening on that initial day do not appear in the report. As a result, report data is offset by a day at the beginning of the week, forcing users to adjust start dates to capture all relevant scheduled items.
The root cause was that the report’s date-range filtering and cell-bucketing calculations evaluated the start of the reporting window using UTC time rather than converting to the report’s local time zone first. This caused late-evening local bookings on the first day to fall across the UTC date boundary and be excluded from the initial reporting period.
Solution
We updated the Weekly Scheduling Report logic to correctly process date boundaries and day/week bucketing in the designated report time zone prior to range evaluation. Bookings starting late on the first day of the week now accurately display under the appropriate date when the Begin Date matches the Week Start Day.
Xytech Release 26.5.10647.1-HF6 — 8 items
Release 26.5.11257.1-HF7
Executive Summary
Release 26.5.11257.1-HF7 resolves 2 issues, both in core framework behavior affecting batch saving and report data access.
The resolved issues address:
- Concurrent Save Reliability: Batch operations such as loading schedules for several employees at once in a Time Card batch no longer fail with a technical save error. Simultaneous saves to the same record are now handled cleanly, and users see a clear message that someone else is editing rather than an error requiring administrative cleanup.
- Report and Integration Data Access: The service text external key is now returned by the PO Media Form Report and available in the layout editor, so integrations and report configurations can reach the key data that previously came back empty.
Resolved Issues
Framework, Dashboards, Fundamentals
Save Failed: Old Generation Must Be Odd Numbered Error - 39925
Users encountered an intermittent "Save failed: Old generation must be odd numbered" error when attempting to perform batch operations, such as loading schedules across multiple employees simultaneously in a Time Card batch. This error interrupted payroll workflows and required manual administrative cleanup to clear.
The issue was caused by concurrent save requests hitting the same document simultaneously. When multiple processes or users updated the document at the same time, the system attempted to read or update a short-lived concurrency lock state, resulting in a technical exception rather than a graceful concurrency notification.
Solution
We updated the concurrency handling and document saving logic to safely manage simultaneous save requests. If multiple users save the same document at once, the system now prevents overlapping saves and displays a clear, actionable message informing the user that the document is currently being edited or saved by another process.
Service Text External Key Not Available on PoMediaFormReport - 44960
When attempting to retrieve external keys for service row text using the PoMediaFormReport API or attempting to configure reports in the user interface, the external key field for service text was unavailable. Users receiving response payloads or attempting layout configurations could not access the required external key data for service text entities, impacting integration workflows.
The issue occurred because the PoMediaFormReport endpoint did not properly bind and map the external key column from the underlying service text records. As a result, the key was either mapped at the parent purchase order header level or omitted from the accessible form fields, returning null values in API payloads.
Solution
We updated the PoMediaFormReport mapping to explicitly include and bind the service text external key field from the service text table. The external key is now properly returned in API payloads and available within the layout editor for configuration.
Release 26.5.11257.1-HF7 — 2 items
Release 26.5.12040.1-HF8
Executive Summary
Release 26.5.12040.1-HF8 resolves 7 issues. It delivers corrections across Bids / Budgets, Jobs / Orders / Billing, Scheduling, Time Card, Media Order, and the application framework.
The resolved issues address:
- Billing and Tax Accuracy: Foreign-currency pre-invoices spanning orders converted at different exchange rates now calculate tax against each line item's own rate, correcting totals, subtotals, and the rounding that was being applied to a single line.
- System Stability: Media Order source changes on service rows that reference each other in a loop no longer crash the application server and disconnect every user on that node.
- Data Entry and Field Availability: The Territory field is selectable again in Jobs layouts so territory data can be grid-updated, and entering a Customer ID on a new Collection no longer overwrites a description the user already typed.
- Personal Settings and Interface Usability: My Schedule honors the Agenda View set on the user record instead of falling back to the division default, Time Card batches save without foreign key or spurious read-only errors, and long multi-select filter lists scroll normally again.
Resolved Issues
Bids / Budgets
Collection Description Overwritten When Customer ID Is Entered - 46084
When creating a new Collection in the Bidding module, entering a Customer ID after typing a description caused the previously entered description to be automatically overwritten with the customer name. Users experienced loss of their typed description details, requiring manual re-entry.
The root cause was an improper field mapping where the customer lookup callback inadvertently targeted and updated the collection description field instead of populating the customer details.
Solution
We updated the customer lookup handling in the Bidding module so that selecting a Customer ID correctly populates the customer name without overwriting the user's existing Collection description.
Framework, Dashboards, Fundamentals
Saved Filters With Several Selections Cannot Be Updated (Visual) - 44807
In multiselect fields across saved filters (such as Time Card > Reports > Time Card Batches > Select Employee(s)), users were unable to scroll through or view the complete list when many items were selected. As a result, tags located further down in the selection list could not be viewed or removed without zooming out the browser window. Additionally, when the field was empty, an unintended scrollbar was visible.
The root cause was a styling conflict introduced during the SASS theme migration. The multi-select clear icon (×) styling was larger than the default empty field height, triggering an auto-scrollbar on empty fields. An subsequent global CSS fix (overflow-y: hidden !important) removed the empty field scrollbar but broke normal vertical scrolling when selections exceeded the maximum field height.
Solution
We resolved the styling issue by restoring the clear icon's original positioning and dimensions so it fits inside an empty field without triggering overflow. The forced hidden overflow rule was removed, allowing the multi-select container to auto-scroll normally when selections exceed the maximum field height.
Jobs, Orders, Billing (Job Management)
Territory (territory_no) Field Not Available to be Added on Jobs - 44675
Users were unable to add or view the Territory (territory_no) field when customizing layout configurations for Jobs (DOC ID 315). Because the field was missing from available layout selections, users could not perform grid updates on territory data without resorting to manual document overrides, which defaulted the field to read-only.
The root cause was an obsolete preference check (using_JmAdv) within JmJobList that inadvertently filtered out and hid the territory field from the job layout field lists.
Solution
We removed the legacy using_JmAdv preference check from the JmJobList logic. The Territory field is now fully accessible in layout options for Jobs, allowing users to configure the field and perform grid updates as expected.
Foreign Currency Pre-Invoice Tax Miscalculation - 46109
When pre-invoices were generated across multiple orders converted at different exchange rates, the tax total was incorrectly calculated. In foreign currency pre-invoices, the system converted base-currency tax using only the exchange rate from the first order's initial transaction. This caused miscalculations in the foreign-currency tax total and subtotal, with rounding errors often being applied incorrectly to the first taxed line item.
The root cause was that JmInvoiceFormReportLiaisonBase.preInvoicePrep computed tax in both base and foreign currency, but discarded the foreign-currency total. The subsequent calculation populated the missing value by converting the total base tax using a single exchange rate (from the first priced transaction), applying an inaccurate exchange rate to any orders in different rate periods.
Solution
We updated JmInvoiceFormReportLiaisonBase.cs to retain the foreign-currency tax total during pre-invoice preparation rather than re-converting it from base currency at a single rate. Additionally, calcTrxTaxAmount was updated to allocate tax based on each line item's foreign-currency share when all orders share a single currency, ensuring accurate line-item and overall tax calculations on pre-invoices.
Media Order
Media Order App Server Crashes on Source Length Loop - 46247
In Media Order management, modifying source properties (such as length or master reference) on certain orders caused the connected MediaPulse application server process to abruptly terminate with an unhandled StackOverflowException. This resulted in immediate disconnection for all active users on that server node and required a manual service restart.
The issue occurred on orders configured with combined-source service rows that recursively referenced each other in a loop. When a source's length was updated, the application attempted to propagate the change to target rows by calling the same calculation function iteratively. Because combined sources calculate total length by summing their inputs, the length value grew continuously with each cycle and failed to stabilize, causing an infinite recursion that exhausted the call stack.
Solution
We updated the source length calculation logic in MoMediaOrderBase to track active source updates during propagation. The process now detects when a source within a dependency loop has already been evaluated and stops further recursion, preventing stack overflow errors and application server crashes.
Scheduling
Agenda View Priority Resolved - 42008
Users experienced an issue where the personalized Agenda View configured under their User Profile was ignored when navigating to Gadgets > My Schedule. Instead, the system fell back to the division-level default configured in Preferences > Scheduling, preventing personalized agenda layouts from displaying as expected.
The root cause was a code refactor that moved the Agenda View lookup logic into a shared helper function. During this update, the check that evaluated and prioritized the per-user setting was inadvertently dropped, leaving only the division preference active.
Solution
We updated the shared helper logic to restore the evaluation order for Agenda Views in My Schedule. The system now correctly checks for and prioritizes the user-level Agenda View setting before defaulting to the division-level configuration.
Time Card
Foreign Key Error and Unintended Read-Only Exceptions on Time Card Batch - 46218
When saving updates to a Time Card batch pane, users encountered unexpected save failures with database error messages regarding foreign key conflicts (fk_tc_pay_trx_bat_dt). Additionally, attempting to edit or reformat specific summary fields (such as billable percentages) triggered user-visible errors stating the column was read-only.
The foreign key error occurred when a Time Card detail was deleted in another active session while the current pane remained open; saving sibling detail updates caused the system to evaluate stale detail references against the database. The read-only error was caused by formatted numeric input controls continuously re-submitting unmodified values during focus loss, which the system incorrectly flagged and attempted to persist as user edits to read-only expression fields.
Solution
We updated the Time Card batch validation process to automatically drop stale payroll transaction references prior to saving changes. We also improved the numeric input fields to accurately detect genuine user edits, preventing unedited read-only fields from triggering unnecessary updates or error alerts.
Release 26.5.12040.1-HF8 — 7 items