Утилита миграции SPToMPMigrateApp позволяет переносить папки и файлы созданные в системе Vitro SP в систему Vitro MP с сохранением даты создания, авторства, версионности и прочих кастомных атрибутов системы.
Для работы утилиты нужны решения Migration, которые надо разместить в Solutions на сервере VitroMP:
Windows - C:\Program Files\Vitro Software\Vitro\Server\Solutions\Migration
Linux - /etc/Vitro/Server/Solutions/Migration
Все режимы состоят из 2 этапов - подготовка данных (Init) и обработка подготовленных данных.
Scripts\init.sql. Создает таблицу Migration используемую в режимах Folder, File, Reference.issue_init.sql. Создает таблицу IssueMigration используемую в режиме Issue.member_init.sql. Создает таблицу MemberMigration используемую в режиме Member.| Параметр | Пример значения | Описание |
|---|---|---|
| WebUrl | http://sp.vitrocad.ru | Адрес Vitro SP |
| Url | https://mp.vitrocad.ru | Адрес Vitro MP |
| Login | admin_user | логин технической учетной записи Vitro MP |
| Password | admin_password | пароль технической учетной записи Vitro MP |
| ConnectionString | Integrated Security=false;Data Source=SP2013\\SQLEXPRESS;Database=Vitro; User Id=vdbuser; Password=vdbpassword | строка подключения к БД Sharepoint |
| SkipFieldMapError | true | флаг пропуска ошибок маппинга лукапов. Если в Vitro SP есть значения лукапов справочников, которые не получилось сопоставить в VitroMP, то они выводятся в лог утилиты. Если флаг стоит false, то утилита закончит работу в случае наличия таких записей. |
| SkipUserMapError | true | флаг пропуска ошибок маппинга пользователей. Если в Vitro SP есть пользователи, которых нет в Vitro MP, то они выводятся в лог. Если флаг = false, то утилита завершает работу. Критерий сопоставления пользователей - email |
| DefaultUserId | 00000000-0000-0000-0000-000000000001 | Guid пользователя, который подставляется в случае не нахождения пользователя в Vitro MP. Критерий сопоставления пользователей - email |
| SwitchOffIriParsing | false | флаг отключения обработки ссылок от скрытых символов. Может быть полезен, если в Vitro SP есть файлы или папки, названия которых содержат скрытые символы, и не могут быть перенесены из-за ошибки получения файла. |
| ThreadNumber | 2 | количество потоков для переноса файлов в режиме File. Все остальные режимы работают в 1 поток всегда. |
| MigrateAllFileVersion | true | флаг переноса всех версий файлов. Если true, то переносятся все версии, если false, то только последняя |
| LibraryMap |
| - параметр для указания переносимых папок из SP в MP. В формате { “spUrl1”: “MP guid родительской папки или списка ”, “spUrl2”: “MP guid родительской папки или списка” } |
| Mode | Init | режим работы утилиты. Если не указан, то утилита работает последовательно в следующих режимах Init – Folder – File – Reference.Остальные режимы запускаются вручную при необходимости. Или если нужно пропустить некоторые режимы, то нужно запускать их вручную с указанием параметра. |
| ContentTypeMap |
| параметр маппинга Типов Контента SP в Тип Элемента MP. От SP нужно указывать Название ТК; от MP нужно указывать Guid ТЭ. Типы элементов, которые не указаны в данном маппинге, будут передаваться как Папка – для папок, Файл проекта – для файлов, Элемент – для элементов справочников. |
| FieldMap | [[ "VitroBaseDocumentRevisionNum", "approval_count" ], | параметр маппинга Столбцов SP в Атрибуты MP. С обеих сторон используется internal name столбца или атрибута. 3-ий параметр нужен только для столбцов типа Лукап. Дефолтное значение sp_id. |
| ListMap | { "url-sharepoint": "parentId - MP", | параметр для заполнения справочников. |
| ListMapCriterion | [ "SP InternalName", "MP InternalName", "SP ID InternalName(default sp_id)" ] | критерий проверки для заполнения справочников. Если элемент с SP InternalName найден в справочнике, то ему проставится поле SP ID InternalName. Если не найден, то в зависимости от параметра CreateListMapItem будет ошибка или создастся новая запись в справочнике. |
| CreateListMapItem | false | параметр работы режима List. Если false, то в данном режиме не будут создаваться новые записи а только пытаться проставить sp_id на текущих записях. Если true, то при отсутствии сопоставления будут создаваться новые записи (подходит для полного переноса справочников с 0). Записи создаются по маппингам ContentTypeMap и FieldMap, если нужно переносить заполненные атрибутами ТК, их необходимо указать там. |
/item/{uniqueId}init.exclude_root_folder.sql. Если нужно переносить только внутреннюю структуру без верхнеуровневой папки, то нужно переименовать в init.sql и подменить.