Finally I found a solution, but I had to rewrite almost all the code: $color = 'color'; $fit = 'fit'; //get the attribute instance $colorAttribute = Mage::getModel('eav/config')->getAttribute('catalog_product', $color); $fitAttribute = Mage::getModel('eav/config')->getAttribute('catalog_product', $fit); //if this attribute exists if ($colorAttribute->getId()){ //make the attribute apply to al types of products in case it's not $colorAttribute->setApplyTo(null); $colorAttribute->save(); $fitAttribute->setApplyTo(null); $fitAttribute->save(); $resource = Mage::getSingleton('core/resource'); //get an object with access to direct queries $connection = $resource->getConnection('core_write'); //get all configurable products - you can specify additional filters here $collection = Mage::getModel('catalog/product')->getCollection() ->addAttributeToFilter('type_id', 'configurable'); foreach ($collection as $product){ echo("configurable product sku: " . $product->getSku() . '<br>'); //the configurable attributes are stored in the table 'catalog_product_super_attribute' //remove the attribute references from that table. //The constraints will take care of the cleanup. $q = "DELETE FROM {$resource->getTableName('catalog_product_super_attribute')} WHERE attribute_id = {$colorAttribute->getId()} AND product_id = {$product->getId()}"; $connection->query($q); $q = "DELETE FROM {$resource->getTableName('catalog_product_super_attribute')} WHERE attribute_id = {$fitAttribute->getId()} AND product_id = {$product->getId()}"; $connection->query($q); //get the simple products in the configurable product $usedProducts = Mage::getModel('catalog/product_type_configurable') ->getUsedProducts(null,$product); $product_sku = $product->getSku(); $color_to_compare = substr($product_sku, -3); foreach ($usedProducts as $p){ $child_sku = $p->getSku(); $child_sku_color = substr($child_sku, -5); $child_sku_color = substr($child_sku_color, 0, 3); //identify the first simple product that has a sku value color like the configurable one //set propper color and fit values to the configurable product. if ($color_to_compare == $child_sku_color){ Mage::getSingleton('catalog/product_action') ->updateAttributes(array($product->getId()), array($fit=>$fitValue), 0); Mage::getSingleton('catalog/product_action') ->updateAttributes(array($product->getId()), array($color=>$colorValue), 0); break; } } } } This code is tested and it's working, to assign the colors I used some characters of the sku as they are coincident with my needings. This code is inside some other bunch of code, I copied only the part that answer the question, but I did not count the closing '}', so maybe they do not match the opening ones. It took me a while, I hope this code will help somebody in the future.