Отпуска в CRM: как мы убрали ручную работу и что из этого вышло
Каждое лето у компаний с большим штатом одна и та же боль: как понять, кто из сотрудников на месте, а кто в отпуске? Формально отпуска согласованы, но в операционке это не видно. Менеджер смотрит в CRM, видит задачу на сотруднике — и не знает: человек отвечает или уже две недели на пляже.
Можно решать руками: HR ведёт список, менеджеры спрашивают в чате, кто-то обновляет статусы. На 100+ сотрудников это сотни ручных действий в месяц и вечный человеческий фактор — про кого-то забыли, кому-то не вернули доступ.
Мы пошли другим путём — автоматизировали процесс так, что люди вообще перестали о нём думать. Расскажу, как это устроено и какие грабли встретились по пути. Возможно, кому-то сэкономит пару месяцев экспериментов.
Как устроен процесс
Отпуска у нас живут в смарт-процессе CRM. Выглядит цепочка так:
- Сотрудник подаёт заявку на отпуск — создаётся запись с датами.
- Руководитель согласовывает. Пока нет согласования — отпуска не существует.
- Наступает дата начала. Важный момент: никто вручную ничего не переключает. CRM настроена так, что по наступлению даты запись сама переходит в статус «В отпуске».
- На этом статусе срабатывает автоматизация: система делает запрос во внешний сервис.
- Сервис сохраняет текущее фото сотрудника в архив и ставит вместо него картинку-табличку «В отпуске».
- Отпуск заканчивается — запись сама переходит в статус «Вышел из отпуска».
- Снова срабатывает автоматизация — и оригинальное фото возвращается.
Вся цепочка — без участия человека. Ни HR, ни сотрудник, ни менеджер не думают о статусах и фотографиях. Система делает это сама.
Казалось бы, простая задача. Но на пути нашлось три подводных камня, о которых не пишут в документации.
Камень №1: «очевидный» способ не работает
Первая мысль была простой: загрузить картинки-таблички на диск CRM, получить их идентификаторы и по команде подставлять нужный. Логика железная: файл же на месте, осталось только указать «используй вот этот».
CRM ответила отказом с формулировкой «неверный тип файла». При этом файл валидный, идентификатор правильный. В документации об этом — ни слова. Перебрали все мыслимые методы — нужных просто не существует в API.
Решение оказалось неожиданным: CRM принимает аватарку не по номеру файла, а целиком — картинка передаётся в запросе, запакованная в текстовый формат. Система сама разворачивает и ставит.
Если на пальцах: вместо «забери посылку со склада №5» (что не работает) приходится самому приносить посылку и говорить «доставь эту».
Камень №2: ложное ощущение поломки
После успешной замены мы решили проверить результат — и увидели, что CRM возвращает ту же ссылку на фото, что и до замены. Первая реакция: не сработало. Но если скачать файл по этой ссылке — внутри уже новая картинка.
Оказалось, CRM не меняет адрес аватарки — она меняет содержимое файла по тому же адресу. Поэтому проверять «сменилось ли» по ссылке бесполезно. Надёжный способ — скачать файл и сравнить его контрольную сумму.
Камень №3: мы чуть не потеряли оригиналы
Самая опасная ловушка. Логика сервиса: при старте отпуска сохраняем оригинальное фото в архив, ставим табличку. При возврате — достаём из архива и ставим обратно.
И вот баг: если на сотрудника прилетел повторный сигнал «старт» (автоматизация дёрнулась дважды или запись перевели на ту же стадию ещё раз) — сервис видел, что архив уже есть, но всё равно перезаписывал его текущим фото. А текущее фото в этот момент — уже табличка «В отпуске»!
Итог: оригинальное фото затиралось табличкой в архиве. После отпуска система «возвращала» человеку... табличку. Оригинал потерян безвозвратно.
Лечится просто: если архив уже существует — не трогать его, только обновить картинку. И не удалять архив сразу после возврата: система обновляет изображения с задержкой, и если удалить раньше времени — оригинал опять потеряется.
Что в итоге
Рабочая схема получилась такой:
- Согласование отпуска → автоматический переход по дате → сигнал сервису → фото заменено
- Возврат → автоматический переход → сигнал сервису → фото восстановлено
- Архив оригинала живёт до следующего отпуска и не перезаписывается повторными сигналами
- Каждая операция логируется: видно, кто, когда и что менял
Люди перестали думать об отпусках как об операционной задаче. Отпуска стали просто... отпусками.
Вместо вывода
Три «камня» — это не про отпуска и фото. Это про то, как устроена автоматизация бизнес-процессов вообще: «очевидное» часто не работает, документация молчит, а единственный надёжный способ — проверять результат по факту, а не по ожиданиям.
Если у вас в компании есть процесс, который делается руками каждую неделю — скорее всего, он автоматизируется. Вопрос не в том, «как», а в том, чтобы начать с одной маленькой задачи.
А у вас что автоматизировали в этом году — и что до сих пор делаете руками, хотя могли бы не делать? Делитесь в комментариях 👇