Отпуска в CRM: как мы убрали ручную работу и что из этого вышло

Каждое лето у компаний с большим штатом одна и та же боль: как понять, кто из сотрудников на месте, а кто в отпуске? Формально отпуска согласованы, но в операционке это не видно. Менеджер смотрит в CRM, видит задачу на сотруднике — и не знает: человек отвечает или уже две недели на пляже.
Можно решать руками: HR ведёт список, менеджеры спрашивают в чате, кто-то обновляет статусы. На 100+ сотрудников это сотни ручных действий в месяц и вечный человеческий фактор — про кого-то забыли, кому-то не вернули доступ.

Мы пошли другим путём — автоматизировали процесс так, что люди вообще перестали о нём думать. Расскажу, как это устроено и какие грабли встретились по пути. Возможно, кому-то сэкономит пару месяцев экспериментов.

Отпуска в CRM: как мы убрали ручную работу и что из этого вышло

Как устроен процесс

Отпуска у нас живут в смарт-процессе CRM. Выглядит цепочка так:

  1. Сотрудник подаёт заявку на отпуск — создаётся запись с датами.
  2. Руководитель согласовывает. Пока нет согласования — отпуска не существует.
  3. Наступает дата начала. Важный момент: никто вручную ничего не переключает. CRM настроена так, что по наступлению даты запись сама переходит в статус «В отпуске».
  4. На этом статусе срабатывает автоматизация: система делает запрос во внешний сервис.
  5. Сервис сохраняет текущее фото сотрудника в архив и ставит вместо него картинку-табличку «В отпуске».
  6. Отпуск заканчивается — запись сама переходит в статус «Вышел из отпуска».
  7. Снова срабатывает автоматизация — и оригинальное фото возвращается.

Вся цепочка — без участия человека. Ни HR, ни сотрудник, ни менеджер не думают о статусах и фотографиях. Система делает это сама.

Казалось бы, простая задача. Но на пути нашлось три подводных камня, о которых не пишут в документации.

Камень №1: «очевидный» способ не работает

Первая мысль была простой: загрузить картинки-таблички на диск CRM, получить их идентификаторы и по команде подставлять нужный. Логика железная: файл же на месте, осталось только указать «используй вот этот».

CRM ответила отказом с формулировкой «неверный тип файла». При этом файл валидный, идентификатор правильный. В документации об этом — ни слова. Перебрали все мыслимые методы — нужных просто не существует в API.

Решение оказалось неожиданным: CRM принимает аватарку не по номеру файла, а целиком — картинка передаётся в запросе, запакованная в текстовый формат. Система сама разворачивает и ставит.

Если на пальцах: вместо «забери посылку со склада №5» (что не работает) приходится самому приносить посылку и говорить «доставь эту».

Камень №2: ложное ощущение поломки

После успешной замены мы решили проверить результат — и увидели, что CRM возвращает ту же ссылку на фото, что и до замены. Первая реакция: не сработало. Но если скачать файл по этой ссылке — внутри уже новая картинка.

Оказалось, CRM не меняет адрес аватарки — она меняет содержимое файла по тому же адресу. Поэтому проверять «сменилось ли» по ссылке бесполезно. Надёжный способ — скачать файл и сравнить его контрольную сумму.

Камень №3: мы чуть не потеряли оригиналы

Самая опасная ловушка. Логика сервиса: при старте отпуска сохраняем оригинальное фото в архив, ставим табличку. При возврате — достаём из архива и ставим обратно.

И вот баг: если на сотрудника прилетел повторный сигнал «старт» (автоматизация дёрнулась дважды или запись перевели на ту же стадию ещё раз) — сервис видел, что архив уже есть, но всё равно перезаписывал его текущим фото. А текущее фото в этот момент — уже табличка «В отпуске»!

Итог: оригинальное фото затиралось табличкой в архиве. После отпуска система «возвращала» человеку... табличку. Оригинал потерян безвозвратно.

Лечится просто: если архив уже существует — не трогать его, только обновить картинку. И не удалять архив сразу после возврата: система обновляет изображения с задержкой, и если удалить раньше времени — оригинал опять потеряется.

Что в итоге

Рабочая схема получилась такой:

  • Согласование отпуска → автоматический переход по дате → сигнал сервису → фото заменено
  • Возврат → автоматический переход → сигнал сервису → фото восстановлено
  • Архив оригинала живёт до следующего отпуска и не перезаписывается повторными сигналами
  • Каждая операция логируется: видно, кто, когда и что менял

Люди перестали думать об отпусках как об операционной задаче. Отпуска стали просто... отпусками.

Вместо вывода

Три «камня» — это не про отпуска и фото. Это про то, как устроена автоматизация бизнес-процессов вообще: «очевидное» часто не работает, документация молчит, а единственный надёжный способ — проверять результат по факту, а не по ожиданиям.

Если у вас в компании есть процесс, который делается руками каждую неделю — скорее всего, он автоматизируется. Вопрос не в том, «как», а в том, чтобы начать с одной маленькой задачи.

А у вас что автоматизировали в этом году — и что до сих пор делаете руками, хотя могли бы не делать? Делитесь в комментариях 👇