...
- Init – режим подготовки данных файлов и папок. Вызывает скрипт
Scripts\init.sql. Создает таблицу Migration используемую в режимах Folder, File, Reference. - Folder – режим обработки таблицы Migration - перенос папочной структуры.
- File - режим обработки таблицы Migration - перенос файлов.
- Reference - режим обработки таблицы Migration – перенос связей между файлами и папками. Переносятся связи с типом:
- 1 - Внешняя ссылка (вставка) на, Является внешней ссылкой (вставка) для,
- 2 - Внешняя ссылка (наложение) на, Является внешней ссылкой (наложение) для,
- 3 - Связано с.
- IssueInit – режим подготовки данных замечаний. Вызывается скрипт
issue_init.sql. Создает таблицу IssueMigration используемую в режиме Issue. - Issue – режим обработки таблицы IssueMigration – перенос замечаний к файлам и папкам. Маркапы переносятся.
- MemberInit - режим подготовки переноса прав Vitro Участники. Вызывается скрипт
member_init.sql. Создает таблицу MemberMigration используемую в режиме Member. - Member - режим обработки таблицы MemberMigration – перенос прав к файлам и папкам. Создается в VitroMP элемент в списке Разрывы прав, с участником указанном в SP у полей VitroProjectEditRole и VitroProjectFullControlRole с правом доступа Изменить.
- List – режим работы со справочниками. Позволяет переносить данные справочников в VitroMP или заполнять служебную информацию sp_id на текущих справочниках в VitroMP.
...
Параметры утилиты
| Параметр | Пример значения | Описание |
|---|---|---|
| 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 | { "http://sp2013/TempLibrary/Project1": "966e62c5-a803-49a0-a1be-e680d130c481", "http://sp2013/TempLibrary/Project2": "966e62c5-a803-49a0-a1be-e680d130c481"<br> | - параметр для указания переносимых папок из SP в MP. В формате<br>{ <br>“spUrl1”: “MP guid родительской папки или списка ”,<br>“spUrl2”: “MP guid родительской папки или списка” // и т.д.<br>}<br><br> |
| Mode | Init | режим работы утилиты. Если не указан, то утилита работает последовательно в следующих режимах Init – Folder – File – Reference.Остальные режимы запускаются вручную при необходимости. Или если нужно пропустить некоторые режимы, то нужно запускать их вручную с указанием параметра. |
| ContentTypeMap | <br>[<br> [ "Проект", "540ff572-4a29-4d8e-8dfb-8eda093c583a" ],<br> [ "Стадия", "64a15f4c-083e-420b-b54e-fc75d44f31b7" ],<br> [ "Комплект", "28a48961-35e0-43ae-ad6b-8f159cfd7202" ],<br> [ "Файл проекта", "6065b2ae-63e3-44aa-a92d-2d414c30f808" ],<br> [ "Папка", "09ad2c16-6047-4dfb-8274-6c4a5f1edbe5" ]<br>]<br> | параметр маппинга Типов Контента SP в Тип Элемента MP. От SP нужно указывать Название ТК; от MP нужно указывать Guid ТЭ. Типы элементов, которые не указаны в данном маппинге, будут передаваться как Папка – для папок, Файл проекта – для файлов, Элемент – для элементов справочников. |
| FieldMap | <br>[<br> [ "VitroBaseDocumentRevisionNum", "approval_count" ],<br> [ "VitroBaseStatus", "document_status", “sp_id_list” ]<br>]<br> | параметр маппинга Столбцов SP в Атрибуты MP. С обеих сторон используется internal name столбца или атрибута. 3-ий параметр нужен только для столбцов типа Лукап. Дефолтное значение sp_id. |
| ListMap | <br>{<br> "url-sharepoint": "parentId - MP",<br> "http://sp2013/Lists/seStatusList": "9618f977-0447-4010-88f7-76d8edca255c"<br>}<br><br> | параметр для заполнения справочников. |
| ListMapCriterion | <br>[ "SP InternalName", "MP InternalName", "SP ID InternalName(default sp_id)" ]<br> | критерий проверки для заполнения справочников. Если элемент с SP InternalName найден в справочнике, то ему проставится поле SP ID InternalName. Если не найден, то в зависимости от параметра CreateListMapItem будет ошибка или создастся новая запись в справочнике. |
| CreateListMapItem | false | параметр работы режима List. Если false, то в данном режиме не будут создаваться новые записи а только пытаться проставить sp_id на текущих записях. Если true, то при отсутствии сопоставления будут создаваться новые записи (подходит для полного переноса справочников с 0). Записи создаются по маппингам ContentTypeMap и FieldMap, если нужно переносить заполненные атрибутами ТК, их необходимо указать там. |
...
Принцип работы
- Определяется список ТК и Полей (столбцов) которые необходимо перенести из SP в MP.
- Создаются соответствующие Типы элементов и атрибуты в системе Vitro MP.
- Задается конфигурация утилиты по определенным маппингам ТК и полей.
- Создаются необходимы для лукапов справочники в Vitro MP. Каждый справочник на который ссылается файловая структура должен содержать служебное поле «sp_id». SP ID = ID (число) в системе Vitro SP, которое можно вывести в табличных или посмотреть на каждом элементе справочника. SP ID проставляется у каждой записи справочника Vitro MP для сопоставления ее с записью Vitro SP. Справочники заполняются с помощью утилиты или руками. Все отсутствующие сопоставления будут выведены в логе утилиты.
- С помощью утилиты создается таблица миграции, позволяющая отслеживать прогресс работы утилиты, переносимый объем, ошибки переноса
- Запускается утилита в режиме обработки папок Folder. Периодически отслеживается таблица миграции и лог утилиты на отсутствие ошибок. Особо критичны могут ошибки на папках, так как не перенесённая верхнеуровневая папка Проект повлечет за собой ошибки во всех дочерних элементах. При наличии они все должны быть устранены или вручную затерты в таблице миграции на усмотрение администратора системы. Утилита повторно обрабатывает все элементы с ошибками при повторном запуске
- Запускается утилита в режиме обработки файлов File. В данном режиме утилита может работать в несколько потоков. Но стоит учитывать, что утилита запускается на рабочей площадке Vitro SP и может замедлить работу системы. Оптимальное количество потоков настраивается индивидуально.
- Запускается утилита в режиме переноса связей Reference.
- Запускаются дополнительные режимы переноса Прав участников и Замечаний при необходимости.
...
- При тестировании нет процедуры очистки от смигрированных данных. Нельзя перенести данные, удалить их Vitro MP и повторно пробовать перенести. Перенос данных в данном случае не гарантирован и будут возникать ошибки.
- Значения лукапов оргштатной структуры типов: Подразделение, Функциональная группа – не переносятся.
- Нельзя размножать значения из одного поля в параметре FieldMap. Значение в левой части маппинга должны должно быть уникально.
- При переносе данных работают все Вычисления/Валидаторы/Автоматизации. Если нужен перенос данных 1 в 1, то необходимо удалить все вычисления/автоматизации переносимых типов элементов из списка. Затем восстановить из корзины. Или нужно проводить анализ, что текущие вычисления/автоматизации не повредят переносу данных.
...