SharePoint 2010: мигрируем интранет с 2007, поднимаем BCS и наконец чиним поиск
Миграция корпоративного интранета с SharePoint 2007 на 2010: выравниваем контент-базы, пересматриваем веб-парты, настраиваем BCS-коннекторы к 1С и CRM. Поиск по интранету теперь работает быстро.
SharePoint 2010 с улучшенным поиском и Business Connectivity Services - основа корпоративного интранета в 2011 году
Клиент жил на SharePoint 2007 три года. Для небольшой компании - достаточно долго, чтобы накопить библиотеки документов с семисотлетней историей версий, два десятка кастомных веб-парт от разных подрядчиков и устойчивое мнение, что «поиск по интранету не работает». Второй пункт был буквально правдой: поиск в MOSS 2007 при такой кормовой базе выдавал результаты за несколько секунд, а то и падал в таймаут.
Решение о переходе на SharePoint 2010 зрело полгода. Финальным аргументом стало то, что 2010 идёт с Business Connectivity Services вместо старого BDC - а клиент хотел встроить данные из 1С и CRM прямо в карточки сотрудников и списки задач, не через костыль с выгрузкой в Excel.
Предварительная работа
Перед тем как трогать prod, мы прошлись по базе данных контента утилитой stsadm -o preupgradecheck. Отчёт дал примерно то, что и ожидалось:
- Несколько устаревших шаблонов сайтов. Один сайт-отдел жил на шаблоне, которого в 2010 нет - пришлось договариваться с владельцем отдела о ручном переносе контента.
- Кастомные веб-парты. Из семи нестандартных парт четыре собраны под SharePoint 2007 SDK и без перекомпиляции не поднимутся. Ещё две - простые XSLT-трансформации, которые переезжают без проблем. Одна - интеграция с внутренней справочной системой через COM-объект, и это отдельная история.
- Orphaned features. Штук пять фич задеплоены, но деактивированы ещё при установке 2007. Убираем перед миграцией - меньше мусора.
Переход выбрали database attach: поднять новую ферму 2010 на отдельных серверах, присоединить контент-базы из 2007 и апгрейдить их. Это безопаснее in-place upgrade - если что-то пойдёт не так, prod продолжает работать.
Веб-парты: где страшно, а где просто
Четыре парты, которые не компилировались, разделились на две категории. Две были написаны внутри компании - исходники нашлись, перебилдили под .NET 3.5 SP1 (SharePoint 2010 не принимает .NET 2.0 сборки без оговорок), задеплоили снова. Ещё две - от внешнего подрядчика, который уже не существует. Исходников нет. Функциональность обеих - отображение RSS-лент с новостных сайтов. Заменили стандартным RSS Viewer веб-партом из коробки SharePoint 2010, клиент не заметил разницы.
COM-парта с внутренней справочной системой повисла отдельно. Договорились выкатить её позже - сейчас она живёт в изолированной зоне на старом 2007, пока справочную систему не переведут на нормальный API. Для миграции это не блокер.
BCS: коннекторы к 1С и CRM
Business Connectivity Services в SharePoint 2010 - это переосмысленный BDC из MOSS 2007. Принципиальное отличие: можно писать данные обратно во внешнюю систему, не только читать. Это нам и нужно было.
Для подключения к 1С использовали WCF-сервис, который команда 1С-разработчиков клиента уже держала для других нужд. BCS подцепили через внешний тип контента (External Content Type) в SharePoint Designer 2010:
- Указали WSDL-адрес сервиса
- Определили операции: Read Item, Read List, Update (для записи обратно статуса задачи)
- Настроили маппинг полей
Трудности были с аутентификацией - 1С-сервис принимал только Basic Auth по HTTP, а SharePoint 2010 хотел Kerberos или NTLM для Secure Store. Обошли через специальный application pool с явно заданными credentials и Secure Store Application с целевым приложением. Решение не идеальное с точки зрения безопасности, но в рамках внутренней сети и задокументировано.
CRM (Microsoft Dynamics CRM 4.0 у клиента) подключился чище - там есть нативный OData-эндпойнт, BCS с ним работает напрямую через встроенный коннектор. Карточки контрагентов из CRM появились в SharePoint как внешние списки.
Поиск
Вот где реальная разница между 2007 и 2010. В 2010 поиск переработан серьёзно - улучшен crawler, переработан индекс, появился Query Server отдельно от Index Server. На практике: полное переобходение (full crawl) всего контента при тех же объёмах занимает заметно меньше времени, чем в 2007.
Мы настроили Content Sources отдельно для разных частей интранета и для внешних источников через BCS - чтобы можно было управлять расписанием обхода независимо. Документы, данные из 1С и CRM-записи теперь попадают в единый индекс и ищутся из одной строки.
Первый тестовый запрос, который клиент раньше использовал как эталон «поиск не работает» (название приказа из 2009 года), в SharePoint 2010 дал результат за полтора секунды. Сотрудники, которые подходили посмотреть на «новый портал», реагировали примерно одинаково: «это что, правда ищет?»
Итог на сейчас
Ферма SharePoint 2010 поднята и работает вторую неделю. Основная часть контента перенесена, поиск индексирует, BCS-коннекторы к 1С и CRM живые. Осталось разобраться с COM-партой и справочной системой - это следующий шаг, но он не блокирует ежедневную работу.
Вся интеграционная часть - BCS, коннекторы, маппинг данных - потребовала значительно больше времени, чем сам переезд контента. Это не сюрприз: документация по BCS достаточная, но нюансы с аутентификацией и нестандартными типами данных всплывают только в живой системе.
- Аудит по 152-ФЗ у ритейлера: инвентаризация ИСПДн и пакет оргдокументов · 15 марта 2011
- RD Gateway на Windows Server 2008 R2: SSL-туннель для RDP без VPN · 13 апреля 2011