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 andbriTMS_TransportOrderLineSub(71925957) for proactive cache maintenance.