image

В 2017 году компания Зетта Страхование приняла решение отказаться от Microsoft SharePoint в пользу Битрикс24. Зачем, почему и как — под катом.

Среди предпосылок были:

  • высокая стоимость владения MS SharePoint в сравнении с доступной моделью лицензирования Битрикс24;
  • мультифункциональность Битрикс24;
  • общий тренд к импортозамещению (но это не точно).

Сроки были весьма сжатыми, а SharePoint (SP) был брендирован. Он включал в себя пару кастомных доработок и содержал гигабайты данных, которые ни в коем случае не должны были потеряться при переезде:

  • новостной портал с лайками и комментариями к новостям;
  • отдельные сайты для подразделений компании (инструкции, регламенты и тд);
  • десятки файловых библиотек;
  • обучающие материалы для сотрудников;
  • несколько автоматизированных бизнес-процессов (которые сразу было решено вынести за рамки миграции — всё равно руками создавать заново).

Новый портал на Битрикс24 задумывался брендированным, интегрированным с AD с настроенным SSO и удобным для пользователей. В идеале пользователи вообще не должны были ощутить эффект от перехода.

Итак, ударили по рукам (спасибо Хабру за то, что познакомил нас). Начался упорный труд, фрагменты которого мы предаем огласке, дабы последователи не упоролись в поисках решений, порой весьма и весьма изысканных. Ведь это не просто два конкурирующих продукта, а две недружественные друг другу экосистемы.

image

Чтобы продать что-нибудь ненужное, нужно сначала купить что-нибудь ненужное. (с) Дядя Фёдор


Первым делом для миграции нужно получить выгрузку данных с SharePoint в удобоваримом формате. Часть информации (новости, данные пользователей, метаданные файлов) мы просто забрали из БД SP в виде XML. Сложнее пришлось с файлами — их выгрузили в отдельный архив, а в упомянутый выше XML, кроме метаданных, записывали путь к файлу от корня архива. Однако, контент страниц портала таким образом забрать не удалось: мало того, что информация размазана на десятки сайтов, она еще и хранится в таблицах в непригодном виде, со сниппетами в формате SP.

Для переноса контента страниц мы отважились на парсинг боевого портала, собирая с них сформированный HTML — такой путь показался оптимальным. Для этого взяли crawler, и в первый же день столкнулись с проблемой: он не принимает символ @ в NTLM авторизации (пришлось просить заказчика сменить пароль для учетной записи). Дальше дело за малым — определяем точки входа, исключения (чтобы не собирать лишнее, например профили пользователей) и контентную область (нет смысла парсить всю страницу, так как в Битрикс24 свой шаблон с хедером и футером). Содержимое области сохранялось в PHP файл с тем же именем и адресом относительно корня сайта, что упрощало работу по восстановлению работоспособности ссылок между страницами и давало возможность пользоваться штатным визуальным редактором в Битрикс24. В полученном контенте встречались вызовы файлового менеджера SP (заменили на вызов компонента для вывода соответствующей папки Диска Битрикс24), вызов Flash player (заменили средствами HTML5) и многочисленные ссылки на другие страницы (приводили к виду относительно корня сайта, убирая из ссылки доменное имя).

AD: магия из коробки или чистилище интегратора?


Выгрузка готова и отдана на согласование заказчику, а мы тем временем переходим к самой миграции. Начнем с пользователей, которые изначально создаются из Active Directory, а после обогащаются данными из SP посредством заготовленной XML.

image

Среди заказчиков и молодых интеграторов — всех, кто не сталкивался на практике с интеграцией Битрикс24 с AD, принято считать, что это из коробки. Все так, если коробкой называть ящик Пандоры. Дело совсем не в том, что это связка технологий, работающих на разных платформах — Linux и Windows. И не в понимании работы samba, без которого шаг в сторону от штатного мастера настройки равносилен шагу в топкое болото. И даже не в тех двух неделях, за которые реально наладить сетевое взаимодействие (во время последней интеграции наши сисадмины порвали бубен).

Уже когда были настроены соответствия полей и забрали пользователей, вскрылась проблема со структурой компании. У заказчика были отделы с одинаковыми названиями, находящиеся в различных филиалах компании. Битрикс24 считал, что это один и тот же отдел и объединял их. Из предложенных вариантов решения (модификация ядра Битрикс24, модификация передаваемых данных “на лету”, модификация структуры в AD под требования Битрикс24) в этот раз был выбран самый правильный, что позволило поставить в этом вопросе точку.

Дерево разделов


Следующий шаг — перенос данных страниц департаментов и файлов. С помощью парсера мы подготовили дерево разделов и страниц, соответствующее путям на SharePoint. Ввиду обнаруженных конфликтов с некоторыми служебными разделами Битрикс24, мы разместили его в разделе /content/, а чтобы все внутренние ссылки заработали, организовали редирект для apache:

RewriteRule ^(.*)\.aspx$ /content$1\.php [R=301,L]

Файлы после выгрузки у нас также размещены древовидно и находятся в многогигабайтном архиве, который мы распакуем в /upload/sp/. “Оживит” их пробежка скриптом с добавлением на Диск (для нужных разделов) и правило nginx для существующих ссылок:

location ~* \.(doc|docx|jpeg|jpg|pdf|png|ppt|pptx|rar|txt|xls|xlsx|zip)$ {
try_files $uri /upload/files$uri = 404;
}

Про браваду, брендирование и бюджет


Остались новости и внешний вид — то самое брендирование, которое нередко отнимает сотни часов и километры нервов интеграторов, а стоит заказчику чуть меньше, чем вывод на орбиту фалькона с возвращением первой ступени. Результатом таких титанических усилий обычно служит новый переработанный шаблон Битрикс24, затраты на обслуживание которого сопоставимы с затратами на создание: любое обновление интерфейсов Битрикс24 потребует изменения шаблона со всеми вытекающими.

image
Нам было по душе отказаться от мартышкиного труда и сэкономить бюджет заказчика: мы ограничились цветовой гаммой и добавлением нескольких элементов вроде слайдера и кастомного меню. Эконом-вариант с сохранением возможностей обновлений. Кстати, вышло вполне достойно. Для новостей сделали отдельный шаблон, адаптируя верстку оригинала.

Вместо эпилога


Для закрытия задачи оставалось еще несколько штрихов вроде настройки меню и прочей косметики, настройки кластерной архитектуры для обеспечения отказоустойчивости, однако про это уже не сегодня. А сегодня мы хотели отдать хвалу инженерам русским, и на живом примере в очередной раз показать, что возможно всё. Не так страшен волк, если в лесу не первый раз, да и с Михалычем на уазике едешь.

Всем хороших интеграций!

Комментарии (24)


  1. Alexsandr_SE
    15.02.2018 09:25

    Судя по описанию, процесс шёл очень сложно и местами упрощенно. Что получилось с производительностью в результате? Сам переход как я понял можно признать условно удачным, типа работает как-то и ладно, большего не выжать.


    1. funtiwe Автор
      15.02.2018 10:02

      Судя по описанию, процесс шёл очень сложно и местами упрощенно.

      Все так. В ряде мест можно выжать и больше, а где остановиться решает бизнес и правило Парето.

      С производительностью все хорошо. Если интересно, можем рассказать отдельной статьей.


  1. quantum
    15.02.2018 09:33
    +2

    Мне кажется, что маркетологам битрикса нужно было обождать некоторое время, пока бы не забылся последний факап. Ведь сейчас половина комментариев будет об этом


    1. funtiwe Автор
      15.02.2018 10:07
      +2

      Мы не 1С-Битрикс, а партнеры. И здесь про миграцию в коробку. Один факап (который и нам нервы потрепал достаточно) — на наш взгляд не повод откладывать публикацию.



    1. wispoz
      15.02.2018 10:24

      Можно поподробнее про факап?


      1. quantum
        15.02.2018 10:35

        1. wispoz
          15.02.2018 10:42

          А в чем там факап битрикса ?:) Там жеж хостер упал…


          1. quantum
            15.02.2018 10:52
            +2

            Продавая сервис, ты уже не можешь отмазаться, что упал хостер


  1. BigD
    15.02.2018 09:34

    Не очень понял, речь о коробочной версии Битрикс 24 (корпоративный портал, который ставится на мощностях заказчика), или полностью облачной?

    Как в итоге интегрировали с AD? И как решили проблему с департаментами, о которой пишете?


    1. funtiwe Автор
      15.02.2018 10:03

      Коробка. Изменили структуру в AD.


      1. BigD
        15.02.2018 10:25

        А как интегрировали с AD — SimpleSAML?


        1. funtiwe Автор
          15.02.2018 11:01

          В коробке Битрикс24 есть коннектор, и при соблюдении ряда условий он заводится. Его и применили.


          1. BigD
            15.02.2018 12:37

            А. Я понял. Вы с AD напрямую связали. Без Federation. Ну это не так сложно. :)


  1. Kolegg
    15.02.2018 09:55

    Из предложенных вариантов решения (модификация ядра Битрикс24, модификация передаваемых данных “на лету”, модификация структуры в AD под требования Битрикс24) в этот раз был выбран самый правильный, что позволило поставить в этом вопросе точку.

    Интрига. Из контекста можно догадаться, что переработали AD, но для того пришлось пару раз перечитать абзац.


    1. funtiwe Автор
      15.02.2018 10:05

      Хотелось передать немного эмоций. Сами не ожидали хэппиэнда.


  1. paranoya_prod
    15.02.2018 10:37

    Куда ставили коробочный Битрикс? Если в облако, то чьё? Или в «ЦОД» заказчика?
    Так-же интересует финансовая составляющая: на сколько меньше стали расходы после перехода? Какой тарифный план использовался с sharepoint?


    1. funtiwe Автор
      15.02.2018 10:58

      ЦОД заказчика. Детали финансовой составляющей сообщить не можем (да и каждый случай индивидуален), но в данном конкретном случае расходы удалось сократить в несколько раз.


      1. paranoya_prod
        15.02.2018 12:07

        ЦОД расширяли или сразу был с нужными мощностями?
        Купили энтерпрайз редакцию?


        1. funtiwe Автор
          15.02.2018 14:11

          ЦОД заказчик готовил, мы не в курсе деталей. Редакция Энтерпрайз.


          1. paranoya_prod
            15.02.2018 14:58

            Жаль, что не в курсе, придётся ставить под сомнение выгодность перехода. Заказчик мог забыть включить капитальные расходы на коробки, затраты на железо, операционные на электричество, поддержку свою и вашу, при сравнении выгодности перехода.
            Ох, как не хватает финансовой части в статье, чтобы она плюсом для Битрикса пошла. :)



  1. funtiwe Автор
    15.02.2018 14:10

    [перенесено в нужную ветку]


  1. dineck
    16.02.2018 11:11

    Ой как много вопросов про этот переход возникают. Рад что у Вас получилось.