Настройка Битрикс

Ищем человека для постоянного сотрудничества, проектов очень много.
Требования
У каждого сотрудника есть свойство множественного выбора Специализация
У каждого сотрудника есть свойство чекбокс "Исключить из проф. опроса"
Сотрудник может иметь несколько специализаций, каждая специализация может иметь привязку к нескольким Курсам.
Создаются одиночные тесты для вопросов, которые не имеют таких тестов
Каждую неделю в случайный день сотрудник получает 1 вопрос из тех, которые относятся к его специализации. Кроме тех сотрудников, у которых выставлена галка "Исключить из проф. опроса".
Требования родительской задачи о добавлении результата опроса в Досье и возможность запроса по API
Каждый день с понедельника по пятницу срабатывает следующий алгоритм (именно в такой последовательности):
Осуществляется проверка наличия по каждому Курсу привязанному к Специализациями, что все Вопросы имеют Одиночный тест. Если такого теста нет, он создаются. В названии теста ID вопроса, в самом тесте только один этот вопрос.
Каждому сотруднику, если не установлено свойство "Исключить из проф. опроса", назначается один из Одиночных тестов, если в течении этой недели не было назначено тестов. День когда будет назначен тест на неделе определяется случайным образом.
Для определения того, какой Одиночный тест назначить необходимо проанализировать список Специализаций сотрудника, найти по ним все связанные курсы и полуить набор Одиночных тестов.
Из выбранных Одиночных тестов исключаются те, которые сотрудник уже успешно прошел.
Среди оставшихся Одиночных тестов выбирается случайным образом один и назначается сотруднику.
Сотруднику приходит уведомление о назначении теста и ссылки для перехода и проходения теста. (в идеале этот пункт звучит как "В уведомлении ссылка на прохождение теста, при клике на которую открывается модальное окно с вопросом теста. После ответа на вопрос, модальное окно показывает результат ответа и его можно закрыть").
Результаты публикуются в Досье (инфоблок №59 "События сотрудника") отдельным сообщением той датой, которой был пройден тест. В сообщении должно быть указано успешно ли был пройден тест и ссылка на результат прохождения теста.
Результаты прохождения тестов доступны по API в формате json, в рамках задачи необхдимо опубликовтать интерфейс и приложить к задаче описание этого интерфейса - поля, пример запроса и ответа.
Специализации (список можно расширять, привязкой к курсам можно управлять из административной панели):
Разработчик php (COURSE_ID=14)
Разработчик symfony
Разработчик yii
Разработчик java (COURSE_ID=15)
Разработчик spring
Разработчик swift
Разработчик kotlin
Разработчик golang
Разработчик javascript
Разработчик react
Тимлид
Тестировщик
Системный администратор
DevOps
Руководитель проектов