Using the below job you can update dimension values on an item.
</pre> static void UpdateDepartmentMISC_Items(Args _args) { InventTable inventTable; DimensionAttributeValueSetStorage dimStorage; DimensionAttribute dimAttDept, dimAttMisc; DimensionAttributeValue dimAttributeValueDept, dimAttributeValueMisc; DataAreaId company; str misc, dept; ItemId itemId; int counter = 0; #define.DepartmentDimensionToUpdate('Department') #define.MISCDimensionToUpdate('MISC') info(strFmt('Start time: %1', time2StrHM(timeNow()))); changeCompany(company) { inventTable = null; dimStorage = null; dimAttMisc = null; dimAttDept = null; dimAttributeValueDept = null; dimAttributeValueMisc = null; while select forUpdate inventTable where inventTable.ItemId == itemId && inventTable.dataAreaId == curext() { counter++; try { ttsBegin; dimStorage = DimensionAttributeValueSetStorage::find(inventTable.DefaultDimension); dimAttDept = DimensionAttribute::findByName(#DepartmentDimensionToUpdate); dimAttMisc = DimensionAttribute::findByName(#MISCDimensionToUpdate); dimAttributeValueDept = DimensionAttributeValue::findByDimensionAttributeAndValue(dimAttDept, dept, true, true); if (misc) { dimAttributeValueMisc = DimensionAttributeValue::findByDimensionAttributeAndValue(dimAttMisc, misc, true, true); dimStorage.addItem(dimAttributeValueMisc); } dimStorage.removeDimensionAttributeValue(dimAttributeValueDept.RecId); inventTable.DefaultDimension = dimStorage.save(); inventTable.doUpdate(); ttsCommit; } catch(Exception::Error) { error(strFmt("Error to update dimension for item %1", inventTable.itemid)); } } } info(strFmt("Records updated: %1", Counter)); info(strFmt('End time; %1', time2StrHMS(timeNow()))); } <pre>