В обработчике события OnAfterUserUpdate в массиве $arFields присутствуют все поля UF_*, но отсутствует значение XML_ID. Это создаёт неудобства, если логика обработчика зависит от этого поля.
Решение — получить недостающее поле отдельным запросом через CUser::GetByID():
function OnAfterUserUpdateHandler(&$arFields)
{
# Зато б..дь есть все UF_*
$_ar = CUser::GetByID($arFields['ID'])->Fetch();
$arFields['XML_ID'] = $_ar['XML_ID'];
self::_handler($arFields, 'update');
}Из переданного $arFields['ID'] получаем полный набор данных пользователя и дополняем массив полем XML_ID перед передачей в основной обработчик _handler.
