Transport Management

Release: Transport Management – 27.0.9761.56678

Description

This release enhances extensibility of the Transport Management application by introducing 11 new Integration Events across time-management codeunits and a new centralized Source Entity validation codeunit. It also resolves 3 bugs: a performance optimization on Sales Order / Purchase Order / Transfer Order / Sales Return Order / Purchase Returen Order list pages, a French-language format-string crash in the “Delete Completely Received Transfer Orders” report, and a Pickup Date validation error occurring during Purchase Invoice posting. Translation files for all supported languages have been updated accordingly.

User Stories

Title Description Setup Instructions Impact on previous version
[24520] – New Event Publishers for Time Management Codeunits New IntegrationEvents have been added to allow subscribers to override the Location record or RecordRef used when calculating departure/delivery time windows on Sales, Purchase, and Transfer documents. This enables partners to dynamically adjust earliest/latest times in Location depending on document-specific information. Sales: OnAfterGetDepartureRecRef in Codeunit 71925941. Purchase: OnAfterGetDeliveryRecRef in Codeunit 71925942. Transfer: 8 new events in Codeunit 71925943 (OnGetLocationEarliestDeparture, OnGetLocationLatestDeparture, OnGetLocationEarliestDelivery, OnGetLocationLatestDelivery, OnAfterGetLocEarliestDeparture, OnAfterGetLocLatestDeparture, OnAfterGetLocEarliestDelivery, OnAfterGetLocLastestDelivery). No setup required. Partners can subscribe to the new events to customize time-window calculations. Impacted objects: Codeunit 71925941, Codeunit 71925942, Codeunit 71925943. No breaking change. Additive events only.
[24523] – Extensible Source Entity Validation for Instructions The hard-coded validation logic in briTMS_EntityInstruction (Table 71925902) and briTMS_DocumentInstruction (Table 71925898) that previously restricted “Source Sub No.” to only Ship-to Address and Order Address has been refactored. A new codeunit briTMS_SourceEntityValidation (71925956) now centralizes this validation and exposes three IntegrationEvents (OnValidateSourceSubNo, OnBeforeValidateEntityInstructionSourceSubNo, OnBeforeValidateDocumentInstructionSourceSubNo) so partners extending the briTMS_TrnsportOrderSourceType enum can support additional Source Entity types with Sub No. values. No setup required. Partners who extended the Source Type enum can now subscribe to the new events to allow their custom entity types. Impacted objects: Table 71925898, Table 71925902, Codeunit 71925956 (new). Medium risk: The validation logic has moved from inline FieldError to a delegated codeunit. Existing subscribers relying on the old error behavior should verify compatibility.

Bugs

Title Description Impact on previous version
[24529] – French Language Crash in Delete Completely Received Transfer Orders Report The report briTMS_DeleteCompltlReceivedTO (71925881) raised a runtime error (“No parameter with index 1 found in format string”) when run in French. The root cause was a label using @ placeholders incompatible with Dialog.Update(). The label has been corrected to use # placeholders. Impacted object: Report 71925881. Low risk. Label variable renamed from TransferOrderNoMsg to ProcessingTransferOrdersLbl. No functional regression expected.
[24535] – Performance optimization on Sales Order / Purchase Order / Transfer Order / Sales Return Order / Purchase Return Order list pages After upgrading to BC 28.5, read-only users received a permission error (“TableData 36 Sales Header Modify”) when opening Sales Order List, Purchase Order List, Purchase/Sales Return Order Lists, and Transfer Orders list. The root cause was OnAfterGetRecord triggers that called Rec.Modify(false) to refresh cached transport fields. This has been replaced by a new proactive subscriber codeunit briTMS_TransportOrderLineSub (71925957) that maintains the cache fields via event subscriptions on Transport Order Line and source document line insert/modify/delete events. An upgrade step (BRI-TMS-24535-BackfillTranspCache-20260918) backfills existing records. Impacted objects: PageExt 71925905, 71925906, 71925907, 71925904, 71925890, Codeunit 71925957 (new), Codeunit 71925905, Codeunit 71925953, Codeunit 71925954. Medium risk: The OnAfterGetRecord triggers have been completely removed from 5 page extensions. The cache is now maintained proactively. One-time upgrade backfill runs automatically. Partners who subscribed to events in those OnAfterGetRecord triggers should verify.
[24547] – Pickup Date Validation Error on Purchase Invoice Posting The briTMS_Pickup Date field OnValidate trigger in briTMS_PurchaseHeader (TableExt 71925885) previously called TestField("Document Type", Order), which raised an error when Purchase Invoice posting routines triggered field validation. The check has been replaced with a silent exit when Document Type is not Order. French translations have also been improved. Impacted object: TableExt 71925885. Low risk. The validation now silently exits for non-Order document types instead of raising an error. No regression expected for Order documents.

Events

Status Type Object Name Event Name Description
New IntegrationEvent briTMS_SalesTimeManagement (71925941) OnAfterGetDepartureRecRef Fired after the departure RecordRef is resolved from a Sales Header or Sales Line. Allows subscribers to replace the RecordRef to override the location used for departure time calculation.
New IntegrationEvent briTMS_PurchTimeManagement (71925942) OnAfterGetDeliveryRecRef Fired after the delivery RecordRef is resolved from a Purchase Header or Purchase Line. Allows subscribers to replace the RecordRef to override the location used for delivery time calculation.
New IntegrationEvent briTMS_TransfTimeManagement (71925943) OnGetLocationEarliestDeparture Fired after Location.Get() in Transfer Header earliest departure time calculation. Allows modifying the Location record before time is read.
New IntegrationEvent briTMS_TransfTimeManagement (71925943) OnGetLocationLatestDeparture Fired after Location.Get() in Transfer Header latest departure time calculation. Allows modifying the Location record before time is read.
New IntegrationEvent briTMS_TransfTimeManagement (71925943) OnGetLocationEarliestDelivery Fired after Location.Get() in Transfer Header earliest delivery time calculation. Allows modifying the Location record before time is read.
New IntegrationEvent briTMS_TransfTimeManagement (71925943) OnGetLocationLatestDelivery Fired after Location.Get() in Transfer Header latest delivery time calculation. Allows modifying the Location record before time is read.
New IntegrationEvent briTMS_TransfTimeManagement (71925943) OnAfterGetLocEarliestDeparture Fired after Location.Get() in Transfer Line earliest departure time calculation. Allows modifying the Location record before time is read.
New IntegrationEvent briTMS_TransfTimeManagement (71925943) OnAfterGetLocLatestDeparture Fired after Location.Get() in Transfer Line latest departure time calculation. Allows modifying the Location record before time is read.
New IntegrationEvent briTMS_TransfTimeManagement (71925943) OnAfterGetLocEarliestDelivery Fired after Location.Get() in Transfer Line earliest delivery time calculation. Allows modifying the Location record before time is read.
New IntegrationEvent briTMS_TransfTimeManagement (71925943) OnAfterGetLocLastestDelivery Fired after Location.Get() in Transfer Line latest delivery time calculation. Allows modifying the Location record before time is read.
New IntegrationEvent briTMS_SourceEntityValidation (71925956) OnValidateSourceSubNo Fired during Source Sub No. validation. Subscribers can reject or allow extended Source Entity types by setting IsValid and ErrorMessage.
New IntegrationEvent briTMS_SourceEntityValidation (71925956) OnBeforeValidateEntityInstructionSourceSubNo Fired before default validation for briTMS_EntityInstruction. Setting IsHandled := true skips default logic.
New IntegrationEvent briTMS_SourceEntityValidation (71925956) OnBeforeValidateDocumentInstructionSourceSubNo Fired before default validation for briTMS_DocumentInstruction. Setting IsHandled := true skips default logic.

Notes

  • Upgrade step: An automatic one-time data migration (BRI-TMS-24535-BackfillTranspCache-20260918) will run on upgrade to backfill cached transport fields on all open Sales Orders, Sales Return Orders, Purchase Orders, Purchase Return Orders, and Transfer Orders.
  • Translation updates: All 16 supported language translation files (.xlf) have been updated to reflect new labels and French translation fixes.
  • New codeunits: Two new codeunits were introduced — briTMS_SourceEntityValidation (71925956) for extensible validation and briTMS_TransportOrderLineSub (71925957) for proactive cache maintenance.
Next
Previous