lotoseu, полностью код файла файла покажи.
Что такое $enum_fields['XML_ID']=='true', логично же, что раз элемент обновляется (ниже в комментах прочитал, что дата изменения обновляется), то неправильно условие срабатывает
XML_ID в битриксе это внешний код (используется при интеграции с 1с например и обычно содержит uuid) и не содержит булевое значение тем более в строчном виде
Условие неверное.
Принт $enum_fields покажи, вряд ли там может быть текст true))
LAST_ERROR ничего не покажет, код отрабатывает как нужно, только по условию не проходит.
Тут всего два варианта:
1 Неверное условие и $enum_fields['XML_ID'] никогда не равно 'true' (было бы странно если бы было равно).
2 Условие верное и товар с XML_ID== 'true' есть, но на событии АфтеАпдейт, стоит обработчик который меняет значение на N, деактивируя товар.