Утилита миграции Vitro.Server.SPToMPMigrate (Vitro.Server.SPToMPMigrate.exe) переносит папки и файлы, созданные в системе Vitro SP, в систему Vitro MP с сохранением даты создания, авторства, версионности и прочих настраиваемых атрибутов.


Предварительные действия

Для работы утилиты нужны решения Migration, которые надо разместить в Solutions на сервере Vitro MP:

WindowsC:\Program Files\Vitro Software\Vitro\Server\Solutions\Migration
Linux/etc/Vitro/Server/Solutions/Migration

Утилита запускается на машине с Vitro SP с доступом к SQL Server (база Vitro и контентная база SharePoint WSS_Content). Строка подключения к SQL читается из Conf\vitro.config сервера Vitro MP (объект SqlConnectionString), а не из config.json.

Рядом с исполняемым файлом должны находиться config.json и каталог Scripts\ с SQL-процедурами. Логи пишутся в каталог logs\ (файлы SPToMPMigrate-YYYYMMDD-HHmm.log).


Режимы работы утилиты

Режимы задаются массивом ModeList в config.json и выполняются в указанном порядке.

Перед обработкой каждого режима утилита автоматически:

  1. Разворачивает SQL-процедуры procMigration_Table и procMigration_{Mode} (из Scripts\ или Scripts\{Customer}\).
  2. Выполняет procMigration_Table — создаёт или обновляет служебную таблицу Migration.
  3. Выполняет procMigration_{Mode} — заполняет таблицу Migration данными из Vitro SP.
  4. Обрабатывает подготовленные записи через API Vitro MP.

Обязательные режимы (базовая миграция структуры и связей):

Дополнительные режимы (подключаются в ModeList при необходимости):

Пример обязательной цепочки:

"ModeList": [ "Folder", "File", "Reference" ]

Пример с дополнительными режимами:

"ModeList": [ "Folder", "File", "Reference", "Member", "Sign", "Issue" ]

При повторном запуске режима повторно обрабатываются записи с ошибками, а также элементы, у которых в SP изменилась дата (FinishDate пустая или меньше ModifiedDate).


Параметры утилиты

Параметры задаются в файле config.json в каталоге с исполняемым файлом.

ПараметрПример значенияОписание
Customer"Default"Имя заказчика для кастомных SQL-скриптов в Scripts\{Customer}\. Если скрипт не найден, используется Scripts\procMigration_{Mode}.sql.
WebUrlhttp://sp.vitrocad.ruАдрес Vitro SP
Urlhttps://mp.vitrocad.ruАдрес Vitro MP
Loginadmin_userЛогин технической учётной записи Vitro MP
Passwordadmin_passwordПароль технической учётной записи Vitro MP
ModeList[ "Folder", "File", "Reference" ]Список и порядок режимов работы утилиты
SkipFieldMapErrortrueФлаг пропуска ошибок маппинга лукапов. Если в Vitro SP есть значения справочников, которые не сопоставились в MP, они выводятся в лог. При false утилита завершит работу при наличии таких записей
SkipUserMapErrortrueФлаг пропуска ошибок маппинга пользователей. Если в Vitro SP есть пользователи, которых нет в MP, они выводятся в лог. При false утилита завершает работу. Сопоставление — по email
DefaultUserId00000000-0000-0000-0000-000000000001GUID пользователя MP, подставляемый при отсутствии сопоставления по email
SwitchOffIriParsingfalseОтключение обработки ссылок от скрытых символов. Полезно, если в SP есть файлы или папки с «невидимыми» символами в имени и из-за этого не удаётся получить файл
ThreadNumber2Количество потоков. Параллельно работают все режимы, кроме Folder (всегда 1 поток)
MigrateAllFileVersiontrueПри true переносятся все версии файла, при false — только последняя
QrCodeReplacefalseПри true и установленном поле QR в SP тело файла формируется заново (PDF с QR-кодом), иначе файл читается из SP или внешнего хранилища
LibraryMap{ "http://sp2013/TempLibrary/Project1": "966e62c5-a803-49a0-a1be-e680d130c481" }Переносимые корни: URL библиотеки или папки SP → GUID родительской папки или списка в MP
ContentTypeMap[ [ "Проект", "540ff572-..." ], [ "Папка", "09ad2c16-..." ] ]Маппинг типов контента SP (название) → тип элемента MP (GUID). Не указанные: папка → «Папка», файл → «Файл проекта», элемент справочника → «Элемент»
FieldMap[ [ "VitroBaseStatus", "document_status", "sp_id_list" ] ]Маппинг столбцов SP → атрибутов MP (internal name). Третий параметр — только для лукапов (поле sp_id в справочнике MP, по умолчанию sp_id)
ListMap{ "http://sp2013/Lists/seStatusList": "9618f977-0447-4010-88f7-76d8edca255c" }Справочники для режима List: URL списка SP → GUID списка MP
ListMapCriterion[ "Title", "name", "sp_id" ]Критерий сопоставления в режиме List. При совпадении проставляется поле SP ID; иначе — ошибка или создание записи (см. CreateListMapItem)
CreateListMapItemfalseВ режиме List: при false только проставление sp_id на существующих записях; при true — создание новых по ContentTypeMap и FieldMap

Принцип работы

  1. Определяется список типов контента и полей (столбцов), которые необходимо перенести из SP в MP.
  2. Создаются соответствующие типы элементов и атрибуты в Vitro MP.
  3. Задаётся конфигурация утилиты: маппинги ТК, полей и LibraryMap.
  4. Создаются справочники для лукапов в MP с полем sp_id (числовой ID элемента в SP). Заполняются утилитой (режим List), вручную или комбинированно. Несопоставленные значения выводятся в лог.
  5. Утилита создаёт и заполняет таблицу Migration — по ней отслеживаются прогресс, объём и ошибки.
  6. Запускается режим Folder. Контролируются таблица Migration и лог. Ошибки на верхнеуровневых папках критичны: неперенесённый проект повлечёт ошибки у всех дочерних элементов. Ошибки устраняют или вручную корректируют запись в Migration; при повторном запуске режим обработает их снова.
  7. Запускается режим File. Утилита может работать в несколько потоков (ThreadNumber). Учитывать нагрузку на Vitro SP — оптимальное число потоков подбирается на площадке.
  8. Запускается режим Reference (обязательный этап после файлов).
  9. При необходимости запускаются Member, Sign, Issue (добавить в ModeList после Reference).
  10. При ошибках — анализ лога и Migration, исправление и повторный запуск нужного режима.

Текущие ограничения


Возможные ошибки


Дополнительная информация