Release: Quality Requirements and Specifications – 26.3.9662.50808
This release introduces new integration events in the QRS Validation module, enabling external developers to intercept and override standard Minimum Shelf Life and Previous Expiration Date checks. Two key procedures (CreateQRSDeviationBufferEntry and ApplyFEFOPolicy) have been opened for external use, improving extensibility for Food & Beverage scenarios where custom shelf life validation rules are required (e.g., using <= instead of < comparison operators).It also finalizes the fix initated on previous release (26.3.9646.41511) regarding QRS Expected value field.
User Stories
| Title |
Description |
Setup Instructions |
Impact on previous version |
| [24145] – Add events to alter Minimum Shelf Life check |
Introduces integration events (OnTestMinimumExpirationDate, OnTestPreviousExpirationDate) to allow external developers to override the standard Minimum Shelf Life and Previous Expiration Date checks in QRS validation. Opens CreateQRSDeviationBufferEntry (Codeunit 8086893 – briQRS_QRSValidationHelper) and ApplyFEFOPolicy (Codeunit 8086874 – briQRS_QRSValidationMgt) for external extensibility. |
No specific setup required. Developers can subscribe to the new integration events to customize shelf life validation behavior. |
Low breaking risk. Two procedures changed from internal/local to public visibility: CreateQRSDeviationBufferEntry (Codeunit 8086893) and ApplyFEFOPolicy (Codeunit 8086874). Local temporary variable names were normalized with a Temp prefix (cosmetic, no functional impact). Existing event subscribers are not affected. |
Bugs
| Title |
Description |
Impact on previous version |
| [24061] – Users are blocked when shipping if an attribute value in the order’s QRS is longer than 250 characters |
When a QRS contains an attribute of type Option with multiple selected values totaling more than 250 characters, the system threw a runtime error (“The filter … is not valid for the Health stamp field on the Lot No. Information table. The right side of ‘|’ operators cannot be empty.") during lot number assignment or inventory pick operations, effectively blocking all shipping for the affected orders. The fix extends the “Expected Value” field from Text[250] to Text[2048] in both briQRS_QRS Deviation Buffer (Table 8086869) and briQRS_QRS Deviation Entry (Table 8086868), matching the capacity of the source variable. The ObsoleteState=Pending annotation was also removed from these fields, restoring them to active status. |
Breaking change risk: Low. The field length increase is backward-compatible for standard read/write operations. However, any extension code that filters on or validates the “Expected Value” field with a 250-character assumption should be reviewed. Extensions that previously avoided these fields due to their ObsoleteState=Pending marking should verify compatibility now that the fields are active again. Existing data shorter than 250 characters is unaffected. |
Events
| Status |
Type |
Object Name |
Event Name |
Description |
| New |
IntegrationEvent |
briQRS_QRSValidationMgt (Codeunit 8086874) |
OnTestMinimumExpirationDate |
Fires inside CheckMinimumExpirationDate before the standard minimum shelf life comparison. Subscribers can set IsHandled to true to skip default deviation entry creation and/or alter MinimumExpectedExpDate. Parameters include QRSDeviationBuffer, MinimumExpectedExpDate (var), SourceType, SourceSubtype, SourceId, SourceRefNo, ItemNo, VariantCode, LotNo, ExpirationDate, PostingDate, MinimumShelfLife, and IsHandled (var). |
| New |
IntegrationEvent |
briQRS_QRSValidationMgt (Codeunit 8086874) |
OnTestPreviousExpirationDate |
Fires inside CheckPreviousExpirationDate before the standard FEFO comparison. Subscribers can set IsHandled to true to skip the standard call to ApplyFEFOPolicy. Parameters include QRSDocumentLine, ItemNo, SourceType (Analysis Source Type), SourceNo, ExpirationDate, ExistingExpirationDate, and IsHandled (var). |