У Вас вопрос "как скопировать инфоблок?" или "как это повесить на событие?":
Если нужно повесить на событие, то делается например так:
код в init.php
$eventManager = \Bitrix\Main\EventManager::getInstance();
$eventManager->addEventHandler(
"main",//код модуля из которого это событие
"EventName",//Нужное Вам событие
array('Vendor\Iblock\Copy', "copyIblock")//Класс и имя функции копирования
);
Если же надо еще написать копирование, то стоит учесть что перед копированием элементом, вам необходимо скопировать в новый инфоблок:
- Свойства инфоблока.
- Разделы инфоблока
- UF Свойства разделов
- Элементы (вместе со значением полей и свойств, а так же информацией из вкладки SEO если такая есть)
Если это каталог, то еще и информацию из модуля catalog:
- CatalogProduct
- Цены
- Остатки на складах
Если это каталог с торговыми предложениями, то соответсвенно все выше перечисленное и для торговых предложений.
Как выполняется часть из того что написано выше можно посмотреть в модуле с маркетплейса - asd.iblock.
В итоге основная проблема как раз в копировании инфоблока, а повесить функцию на событие минутное дело.