Release Notes 2/2/26 - 2/15/26
🚀 Enhancements
Auto Re-Audit When Mapping Unknown Accessorial
- Enhanced audit automation to trigger a re-audit when a user maps an Unknown Accessorial
- Previously:
- Re-audits were triggered for updates like copying Vendor or Remit-To from an Order
- Mapping an Unknown Accessorial required users to manually click Re-Audit
- With this update:
- Mapping an Unknown Accessorial now automatically triggers a re-audit
- Saves users time and eliminates unnecessary manual steps
- This is especially important for tenants that enforce an “Unknown Accessorial Exists” exception to prevent issues when sending data back to the TMS
.png?width=670&height=366&name=image%20(58).png)
TAI: Prepare for Cutover
- Added tooling and safeguards to support a smooth TAI integration cutover
- Implemented an endpoint to manually re-ingest Orders that were not yet approved immediately following cutover
- Created a supporting query to help identify affected Orders quickly
- Enables rapid recovery and validation during post-cutover reconciliation
Toggle Visibility of Disabled Rules on Legacy Rules Page
- Added a toggle control at the top of the legacy Business Rules page to show or hide disabled rules
- By default:
- Disabled rules are hidden to reduce clutter and improve usability
- Users can toggle visibility on to view disabled rules when needed
- This change only affects list visibility and does not impact rule execution
.png?width=670&height=389&name=image%20(55).png)
Revenova: Ingest Order Customer Currency
- Enhanced the Revenova integration to properly map Customer Currency during Order ingestion
- Customer Currency from Revenova loads is now correctly stored on the Order
- Ensures accurate financial data and downstream processing
Revenova: Set Accessorial Charges Currency Code in ADO Process
- Enhanced the Revenova integration to ensure Accessorial Charges include a Currency Code during the Audit & Docs Out (ADO) process
- Currency Code is now properly set for all Accessorial Charges in the outbound ADO payload
- Improves financial data accuracy and prevents downstream integration issues
Payment Status Display in Invoice UI
- Added a Payment Status section to the Invoice Details page
- Positioned above Line Items for immediate visibility
- Only displayed for Approved Invoices
- Fields are read-only and populated via integrations
*Snapshot below of an approved Invoice that is currently Unpaid
.png?width=670&height=86&name=image%20(56).png)
Prioritize Rate Confirmation in Order Number Matching
- Updated Order Number matching logic to prioritize Rate Confirmations over other document types
Previous priority order:
- Invoice
- Rate Confirmation
- BOL
- OCR Rate Confirmation
- OCR Invoice
- OCR BOL
New priority order:
- Rate Confirmation
- Invoice
- BOL
- OCR Rate Confirmation
- OCR Invoice
- OCR BOL
- Improves Order matching accuracy and reduces mismatches when multiple document types are present
🐞 Optimizations
Filter Group Fixes
- Fixed multiple UX and state-management issues with Saved Filter Groups:
- Long filter names previously obscured the three-dot menu, preventing edit/delete actions
- “Move Up” and “Move Down” actions failed to persist ordering changes
- Additional fixes addressed filter state inconsistencies across queues:
- Observed while testing Audit and RTB queues
- Filters initially applied correctly, but became mixed after applying/removing combinations
- This caused confusing grid behavior and unreliable filtering
- Filter application logic has been corrected to:
- Maintain consistent state when switching or clearing filters
- Prevent cross-contamination between saved filters and queues
TAI: Duplicate Invoice Charges Not Summed Correctly
- Fixed an issue where invoices containing multiple charges with the same charge code were not aggregated correctly
- Only the first charge was being sent to TAI, causing underreported totals
Impact:
- Incorrect AP, AR, and bill approval amounts were sent to TAI
Fix:
- Charges are now grouped by charge code and summed before transmission
TAI Integration: Bill Amount Mismatch Due to Charge Code Differences
- Fixed a mismatch where valid invoice charges were excluded from TAI bill amounts
- Occurred when:
- Invoice VendorCharge codes differed from shipment AccessorialCodes (e.g.
DTUDvsDTL)
- Invoice VendorCharge codes differed from shipment AccessorialCodes (e.g.
Impact:
- Charges were omitted, leading to incorrect bill approvals
Fix:
- Logic updated to correctly include valid invoice charges even when identifiers differ
Customer Billing: Duplicate Orders Appearing in Pre-Billing
- Fixed an issue where duplicate Orders appeared in Customer Billing:
- One Order remained in Draft even after approval
- This caused confusion when approved Orders still appeared in Pre-Billing
Fix:
- Order lifecycle handling corrected to prevent duplicate Draft records post-approval
Dispute Email: Long TLD Validation Issue
- Fixed an issue where valid email addresses were cleared during Dispute creation
- Root cause was overly strict email validation that rejected long TLDs (e.g.
.money)
Fix:
- Email validation updated to support modern TLDs
Public API Docs: Document Type Enum Values Displayed Incorrectly
- Fixed an issue in public API docs where Document Type enums appeared as numeric values
- Corrected to display string-based enum values for clarity and correctness
Loosen Validation on Composite Vendor Invoice Line Items
- Fixed invoice ingestion failures caused by invalid line item data from IDP/OCR parsing
- Negative or malformed values (e.g.
pieces < 0) caused invoice creation to fail entirely
Impact:
- Invoices landed in Unmatched Documents instead of being ingested
Fix:
- Line item validation is now non-blocking:
- Invalid values are nulled or normalized
- Invoice ingestion always succeeds
Charge Grid: Unknown Accessorials Not Clearing
- Fixed an issue where the “Unknown Accessorial(s)” header remained visible after mapping
- This prevented related exceptions from resolving
Fix:
- Header now clears correctly once all unknown accessorials are mapped
Charge Grid Rate Calculation Bug
- Fixed a Charge Grid issue where saving Vendor Adjusted Rates caused duplicate Base Rate rows
- Resulted in inflated invoice totals
Fix:
- Charge persistence logic corrected to prevent duplication and ensure consistent totals
Create Invoice Validation
- Fixed a validation mismatch between Edge and Core for Create Invoice API
- Edge accepted invalid dates (e.g.
0001-01-01) that Core rejected silently
Impact:
- API consumers received a 202 but invoices failed ingestion
Fix:
- Edge validation and documentation now enforce SQL DateTime limits
MG Integration: Invalid Reference Number Causing Order Creation Failures
- Invalid reference number values caused order creation to fail
- Fix: Skip mapping invalid reference numbers so order creation proceeds successfully
MG Integration: Missing Currency Code in ADO Process
- Missing Currency Code in Audit & Docs results caused outbound MG errors
- Fix: Default Currency Code to USD when not present
Customer Billing: “Return to List” Did Not Respect Active Tab
- “Return to List” always redirected to Pre-Billing regardless of original tab
- Fix: Navigation now returns users to their previously selected tab
INVOICE_CREATED Webhook Not Triggered for Manually Created Invoices
- Invoices created via UI did not trigger INVOICE_CREATED webhook
- Fix: Webhook now fires consistently for manually created invoices
No Navix Submission Found for Ingestion Submission
- Identified an ingestion failure where documents triggered the error:
- "No Navix Submission for this Ingestion Submission ID XXXXXXX"
Root Cause:
- During IDP Entry Point processing:
- A Navix Submission entity is created
- This requires retrieving a token from the Core API
- If an exception occurred while retrieving the token:
- The Navix Submission was not created
- However, the rest of the entry point logic continued
- The submission was still sent to IDP
- When IDP later returned the submission during Document Ingestion:
- The system attempted to locate the Navix Submission
- The entity did not exist
- Ingestion failed and the message was sent to the DLQ
Fix Implemented:
- Improved error handling to ensure:
- Submissions are not sent to Ingestion unless the Navix Submission entity is successfully created
- Proper safeguards prevent orphaned IDP submissions
- Prevents ingestion failures and DLQ routing due to missing submission records
📊 Reports
Customer Billing Timeline Dashboard
- Introduced a new Order-centric dashboard for Customer Billing performance
Metrics included:
- Count of Orders Approved
- % of Orders Approved
- Created → Approved (Days)
- Delivered → Approved (Days) (default)
.png?width=670&height=399&name=image%20(57).png)
Efficiency Extract: Added Source Column
- Added a new “Source” column to the Efficiency Extract report within the main Dashboard
- The Source field is now included for each individual record displayed in the extract
- Provides additional visibility into how records were ingested or created