I’ll walk you through the complete solution based on what we’ve identified. The problem has three layers that all need addressing.
Layer 1: UOM Mapping Table
Your warehouse-specific UOM mappings are incomplete. The transfer API validates against ITMWHSUOM, which stores item-warehouse-UOM combinations. Even though ‘EA’ exists globally, each warehouse needs explicit item-UOM associations for transfer validation.
To fix this, use the bulk approach mentioned earlier. Export current ITMWHSUOM data, identify missing entries for your 3,000 items, and prepare an import file with these required fields:
ITEM_NUMBER,WAREHOUSE_ID,UOM_CODE,CONVERSION_FACTOR,BASE_UOM
IM-4782,WH01,EA,1.000,EA
IM-4782,WH02,EA,1.000,EA
Import through ION Data Lake using the Item Warehouse UOM template.
Layer 2: Master Data Alignment
Verify that your base UOM in the item master matches what you’re using in transfers. The API performs a two-step validation: first checks if the UOM exists in ITMWHSUOM, then validates the conversion path from transaction UOM to base UOM. Mismatches here cause the “Invalid UOM” error even when the mapping exists.
In Item Master Maintenance, confirm the base UOM field for affected items. If items show different base UOMs across warehouses, standardize them before proceeding.
Layer 3: Payload Validation
Your API payload needs both transaction and base UOM for proper validation. Update your integration code:
transferPayload.put("transactionUOM", "EA");
transferPayload.put("baseUOM", "EA");
transferPayload.put("conversionFactor", 1.0);
The API uses this to validate the conversion path exists in the mapping table.
Testing Strategy
After implementing these fixes, test with items that previously failed. Monitor the API response - if you still see UOM errors, check the ION message logs for the specific validation rule triggering. Common remaining issues include case sensitivity in UOM codes (EA vs ea) or missing conversion factors in the mapping table.
The UI works because it applies default conversion rules and auto-populates missing warehouse mappings on-the-fly. The API requires explicit configurations to ensure data integrity across automated integrations. This design prevents invalid UOM combinations from entering the system through API calls that bypass UI validation.