Advanced Attributes Management

Release: Advanced Attributes Management – 26.0.9754.60374

Description

This release delivers a critical performance optimization for the Advanced Attributes Management extension. Users experienced significant slowness (up to two minutes) when navigating back from a Lot No. Category record to the list page. The root cause was identified as an N+1 database query pattern in the attribute value usage-check logic. The fix replaces per-row database round-trips with a single bulk query and in-memory dictionary lookup, drastically reducing I/O and improving response times on large datasets. This improvement is particularly relevant for Food & Beverage environments where Lot No. Categories are heavily used.

User Stories

No User Story developed in this release.

Bugs

Title Description Impact on previous version
[24524] – Slowness Category lot Users experienced slow response times (up to 2 minutes) when navigating back from a Lot No. Category record to the list page. The root cause was an N+1 query pattern in RemoveUnusedArbitraryValues (table briAAT_Attribute, object 8120600) where HasUsage() issued one SQL query per attribute value. Fix: (1) In briAAT_Attribute.RemoveUnusedArbitraryValues, all used Value IDs are now preloaded via a single query into a Dictionary of [Integer, Boolean], and each value is checked against the in-memory dictionary via the new HasUsageInSet procedure. (2) In briAAT_AttributeValue.HasUsage(), an additional SetRange("Attribute ID") filter was added before SetRange("Value ID") so SQL Server performs an index seek on the clustered key instead of a full table scan. Impacted objects: Table 8120600 briAAT_Attribute, Table 8120602 briAAT_AttributeValue. Low breaking risk. No functional change — pure performance optimization. The OnAfterHasUsage integration event is now also raised from the new HasUsageInSet procedure in addition to the existing HasUsage procedure. Subscribers relying on side effects that were expected to run only during database-backed usage checks may be affected.

Events

Status Type Object Name Event Name Description
Updated IntegrationEvent briAAT_AttributeValue OnAfterHasUsage Event signature is unchanged. However, this event is now also raised from the newly added HasUsageInSet procedure (bulk in-memory check path), in addition to the existing HasUsage procedure. Subscribers will now fire in both single-record and bulk check scenarios.
Previous