I discovered that I failed to include code to copy product extra field values when doing a product duplicate copy (Copy Method: Duplicate Product) when using Copy To in categories.php. I've updated the instruction files to account for this now. The complete install package is enclosed.

For those who have already installed version 2.21 all you need to do to fix the problem with product duplication is the following:

In admin/categories.php find somewhere around line 460 under case 'copy_to_confirm' in the part underneath elseif ($HTTP_POST_VARS['copy_as'] == 'duplicate') the following section of code:

$description_query = tep_db_query("select language_id, products_name, products_description, products_url from " . TABLE_PRODUCTS_DESCRIPTION . " where products_id = '" . (int)$products_id . "'");
while ($description = tep_db_fetch_array($description_query)) {
tep_db_query("insert into " . TABLE_PRODUCTS_DESCRIPTION . " (products_id, language_id, products_name, products_description, products_url, products_viewed) values ('" . (int)$dup_products_id . "', '" . (int)$description['language_id'] . "', '" . tep_db_input($description['products_name']) . "', '" . tep_db_input($description['products_description']) . "', '" . tep_db_input($description['products_url']) . "', '0')");
}

and REPLACE it with the following:

// description copy modified to work with Extra Product Fields
$description_query = tep_db_query("select * from " . TABLE_PRODUCTS_DESCRIPTION . " where products_id = '" . (int)$products_id . "'");
while ($description = tep_db_fetch_array($description_query)) {
$description['products_id'] = $dup_products_id;
$description['products_viewed'] = 0;
tep_db_perform(TABLE_PRODUCTS_DESCRIPTION, $description);
}
// end Extra Product Fields

More...