На очереди кусок кода для миграции пользовательских свойств. Есть поддержка обновления значения свойств типа «Список».

Всё, что вам остаётся — описать массив $aUserFields с нужными свойствами для миграции.

//<?php
 
/**
 * Добавление/обновление пользовательских свойтв
 * @param array $aUserFields Массив свойств
 * @doc https://dev.1c-bitrix.ru/api_help/main/reference/cusertypeentity/index.php
 * @doc https://dev.1c-bitrix.ru/api_help/main/reference/cuserfieldenum/index.php
 */
 
global $APPLICATION;
 
$info = array();
 
function oGetMessage($key, $fields) {
    $messages = array(
        'USER_TYPE_UPDATE' => 'Пользовательское свойство #FIELD_NAME# [#ENTITY_ID#] успешно обновлено',
        'USER_TYPE_UPDATE_ERROR' => 'Ошибка обновления пользовательского свойства #FIELD_NAME# [#ENTITY_ID#]: #ERROR#',
        'USER_TYPE_ADDED' => 'Пользовательское свойство #FIELD_NAME# [#ENTITY_ID#] успешно добавлено',
        'USER_TYPE_ADDED_ERROR' => 'Ошибка добавления пользовательского свойства #FIELD_NAME# [#ENTITY_ID#]: #ERROR#',
        'USER_TYPE_ENUMS_SET_ERROR' => 'Ошибка установки значений пользовательского свойства #FIELD_NAME# [#ENTITY_ID#]: #ERROR#',
    );
    return isset($messages[$key])
        ? str_replace(array_keys($fields), array_values($fields), $messages[$key])
        : '';
}
 
// @TODO edit
$aUserFields = array(
    array(
        'ENTITY_ID' => 'USER',
        'FIELD_NAME' => 'UF_HOODS',
        'USER_TYPE_ID' => 'enumeration',
        'SORT' => 500,
        'MULTIPLE' => 'N',
        'MANDATORY' => 'N',
        'IS_SEARCHABLE' => 'N',
        'SETTINGS' => array(
            'DEFAULT_VALUE' => '',
            'SIZE' => '40',
            'ROWS' => '3',
        ),
        'EDIT_FORM_LABEL' => array(
            'ru' => 'Вытяжки',
            'en' => 'Hoods',
        ),
        'LIST_COLUMN_LABEL' => array(
            'ru' => 'Вытяжки',
            'en' => 'Hoods',
        ),
        'LIST_FILTER_LABEL' => array(
            'ru' => 'Вытяжки',
            'en' => 'Hoods',
        ),
        'VALUES' => array(
            array(
                'VALUE'     => 'К1',
                'XML_ID'    => 'К1',
                'DEF'       => 'N',
                'SORT'      => 100,
            ),
            array(
                'VALUE'     => 'К2',
                'XML_ID'    => 'К2',
                'DEF'       => 'N',
                'SORT'      => 200,
            ),
        ),
    ),
);
 
$oUserTypeEntity = new CUserTypeEntity();
 
foreach ($aUserFields as $aUserField) {
 
    $resProperty = CUserTypeEntity::GetList(
        array(),
        array('ENTITY_ID' => $aUserField['ENTITY_ID'], 'FIELD_NAME' => $aUserField['FIELD_NAME'])
    );
 
    if ($aUserHasField = $resProperty->Fetch()) {
        $idUserTypeProp = $aUserHasField['ID'];
        if ($oUserTypeEntity->Update($idUserTypeProp, $aUserField)) {
            $info[] = oGetMessage('USER_TYPE_UPDATE', array(
                '#FIELD_NAME#' => $aUserHasField['FIELD_NAME'],
                '#ENTITY_ID#' => $aUserHasField['ENTITY_ID'],
            ));
        } else {
            if (($ex = $APPLICATION->GetException())) {
                throw new \Bitrix\Main\SystemException(oGetMessage('USER_TYPE_UPDATE_ERROR', array(
                    '#FIELD_NAME#' => $aUserHasField['FIELD_NAME'],
                    '#ENTITY_ID#' => $aUserHasField['ENTITY_ID'],
                    '#ERROR#' => $ex->GetString(),
                )));
            }
        }
    } else {
        if ($idUserTypeProp = $oUserTypeEntity->Add($aUserField)) {
            $info[] = oGetMessage('USER_TYPE_ADDED', array(
                '#FIELD_NAME#' => $aUserField['FIELD_NAME'],
                '#ENTITY_ID#' => $aUserField['ENTITY_ID'],
            ));
        } else {
            if (($ex = $APPLICATION->GetException())) {
                throw new \Bitrix\Main\SystemException(oGetMessage('USER_TYPE_ADDED_ERROR', array(
                    '#FIELD_NAME#' => $aUserField['FIELD_NAME'],
                    '#ENTITY_ID#' => $aUserField['ENTITY_ID'],
                    '#ERROR#' => $ex->GetString(),
                )));
            }
        }
    }
 
    $obEnum = new CUserFieldEnum;
 
    $valuesEnums = array();
    foreach ($aUserField['VALUES'] as $arUserFieldEnum) {
        $valuesEnums[] = $arUserFieldEnum + array('USER_FIELD_ID' => $idUserTypeProp);
    }
 
    $userTypeEnumsIterator = CUserFieldEnum::GetList(array('SORT' => 'ASC'), array('USER_FIELD_ID' => $idUserTypeProp));
    if ($userTypeEnumsIterator->SelectedRowsCount()) {
        $valuesEnumsNews = array();
        foreach ($valuesEnums as $idValueEnum => $valueEnum) {
            $userTypeEnumsHasIterator = CUserFieldEnum::GetList(array(), array('USER_FIELD_ID' => $idUserTypeProp, 'VALUE' => $valueEnum['VALUE']));
            if ($arTypeEnumsHasIterator = $userTypeEnumsHasIterator->Fetch()) {
                $valuesEnumsNews[$arTypeEnumsHasIterator['ID']] = $valueEnum;
            } else {
                $valuesEnumsNews['n' . $idValueEnum] = $valueEnum;
            }
        }
    } else {
        $valuesEnumsNews = array();
        foreach ($valuesEnums as $idValueEnum => $valueEnum) {
            $valuesEnumsNews['n' . $idValueEnum] = $valueEnum;
        }
    }
 
    if (!$obEnum->SetEnumValues($idUserTypeProp, $valuesEnumsNews)) {
        $strError = '';
        if ($ex = $APPLICATION->GetException()) {
            $strError = $ex->GetString();
        }
        throw new \Bitrix\Main\SystemException(oGetMessage('USER_TYPE_ENUMS_SET_ERROR', array(
            '#FIELD_NAME#' => $aUserField['FIELD_NAME'],
            '#ENTITY_ID#' => $aUserField['ENTITY_ID'],
            '#ERROR#' => $strError,
        )));
    }
}
 
echo implode("<br>\n", $info);

Список миграций доступен по тегу Миграции для 1С-Битрикс