Добавление собственных событий в битрикс(d7)

Для инициализации события в любом месте кода используется конструкция вида

$event = new \Bitrix\Main\Event('module.name', 'OnModuleEventName', [
 'PARAM1' => $param1value,
 'PARAM2' => $param2value,
 'PARAM3' => $param3value,
]);
$event->send();

$param1value = $event->getParameter("PARAM1");

module.name - код модуля, от которого выполняется событие
OnModuleEventName - имя события
PARAM1, PARAM2, PARAM3 - передаваемые в событие значения
последняя строчка означает, что мы будем использовать измененное в процессе выполнения события значение 

Инициировать обращение к событию можно следующим образом
Main\EventManager::getInstance()->addEventHandler(
 'module.name',
 'OnModuleEventName',
 'OnModuleEventNameHandler'
);
function OnModuleEventNameHandler(Main\Event $event) {

 // получение значений передаваемых атрибутов
 $PARAM1 = $event->getParameter("PARAM1");
 $PARAM2 = $event->getParameter("PARAM2");
 $PARAM3 = $event->getParameter("PARAM3");
 
 // операции над параметрами
 ..........
 
 // сохраняем новые значения переменных, изменения которых должны быть переданы дальше
 $event->setParameter("PARAM1",$PARAM1);
 
}