You may have encountered the error “Inventory dimension changes for table [table name], [field name] may be required. Please ensure that a handler is implemented to determine if changes are required.” at some point in Dynamics 365, especially when trying to change the storage dimension group for items.
Tracing the error back to its source takes us to the class method InventItemInventoryDimensionStorageDimConversionTaskInitiatorDelegateHandlers.tableWithInventDimIdDiscoveredStorageConversionDelegateHandler(). In this method, the code checks all of the tables that have a field set to the InventDimId extended data type.
In this example, a table was created with an InventDimId field. When running Warehouse management > Setup > Enable warehouse management processes > Change storage dimension group for items, the batch job fails with the following message from the batch job’s log:
To resolve this, create a new class. The new class for this example will be called BKDItemStorageDimGroupHandler. Copy the event handler for the delegate method tableWithInventDimIdDiscoveredDelegate in the class InventItemInventoryDimensionConversionTaskInitiator, and paste it into your class. Inside of this method, add the code shown below, but for your custom table with the InventDimId field, return false to the EventHandlerResult parameter (if using a custom model, you’ll have to add a reference to the InventoryDimensionConversion model):
We return false in our custom delegate to skip the inventory dimension value handling in InventItemInventoryDimensionStorageDimConversionTaskInitiatorDelegateHandlers.tableWithInventDimIdDiscoveredStorageConversionDelegateHandler(), which initially throws the error. That way we can suppress the error while still updating storage dimensions for an item.