IVA ДОКУМЕНТАЦИЯ ОБНОВЛЕНИЯ

Перенос данных

Миграция партии пользователей

Формирование очерёдности

  1. За основу деления принимаются группы связности, построенные по ведомости прав acl_registry.csv (раздел Деление пользователей на партии по связям доступа). Группа связности не разделяется между партиями.

  2. Группы связности распределяются по партиям до достижения целевого размера партии. Размер партии для проекта — до 500 пользователей при трёх воркерах и согласованном окне работ.

  3. В план включаются: пилотная партия (10–20 пользователей из числа сотрудников ИТ-подразделения), приоритетные партии, основные партии. Пилотная партия проходит полный цикл разделов Алгоритм обработки партии--Проверка целостности и консистентности данных первой; результаты пилота подтверждаются до запуска основных партий.

Алгоритм обработки партии

  1. Сохраняется перечень групп рассылки, в которые включены пользователи партии (из выгрузки group_members.csv раздела Сведения об иных объектах).

  2. Выполняется проверка наличия целевых объектов партии (раздел Проверка наличия целевых объектов в IVA Mail).

  3. Для каждого пользователя партии выполняется процедура миграции почтового ящика (раздел Миграция почтового ящика).

  4. После переноса всех ящиков партии заполняется состав групп рассылки IVA Mail, относящихся к партии: члены добавляются командой GroupAddAccount по выгрузке group_members.csv; для динамических групп задаются настройки DynamicMembersUri (раздел Сведения об иных объектах).

  5. Восстанавливаются права доступа и делегирования по партии (раздел Восстановление прав доступа и делегирования).

  6. Выполняется проверка результатов по партии (раздел Проверка целостности и консистентности данных).

  7. Выполняется информирование пользователей партии о завершении перевода (раздел Информирование пользователей).

Миграция почтового ящика

Процедура выполняется для каждого пользователя партии. Основной объём данных копируется до отключения исходного ящика; после отключения досылаются изменения. Порядок действий фиксирован.

Проверка целевого аккаунта и первичное копирование

  1. Подтверждается наличие целевого аккаунта, его псевдонимов и переадресаторов в IVA Mail (раздел Проверка наличия целевых объектов в IVA Mail). Аккаунт создан компонентом MailConnector по записи IVA ID.

  2. Утилитой syncIMAPMail выполняется первичное копирование содержимого почтового ящика при активном исходном ящике Exchange (раздел Перенос содержимого почтового ящика (syncIMAPMail, IMAP)).

Перенос содержимого почтового ящика (syncIMAPMail, IMAP)

  1. На вкладке Users импортируется входной файл партии (формат — раздел Формат входного файла syncIMAPMail (IMAP)). Режим аутентификации — ServiceAccounts: используются сервисные аккаунты из Connections, source и target выбираются через impersonation и --target ~user/.

  2. На вкладке Connections для Source Microsoft Exchange IMAP указывается сервер exchange.domain.ru без порта: подключение выполняется на порт 993 через remote stunnel (сервер без явного порта или с :993 идёт через TLS-туннель). Для Destination указывается iva.domain.ru:143.

  3. Устанавливается Parallelism = 3 — по количеству включённых SSH-раннеров. Один SSH-раннер выполняет обработку одного пользователя за раз; очередь пользователей одна, каждый раннер берёт следующего пользователя из общей очереди.

  4. На вкладке Mail migration queue проверяется preview команды, нажимается Start. Контроль выполнения ведётся на вкладке Migration log (live stdout/stderr и строки per-user журналов) и на вкладке Logs and failures.

Журналирование и порог ошибок

Для каждого пользователя в журнале фиксируются дата и время запуска, идентификатор пользователя, результат, количество перенесённых объектов и сведения об ошибках. Для проекта устанавливается порог допустимого числа непереносимых элементов: 10 на ящик. При ошибке в пределах порога обработка пользователя завершается с фиксацией элементов в журнале; при превышении порога либо при сбое подключения пользователь помечается как проблемный, вносится в реестр исключений (раздел Реестр исключений), обработка очереди продолжается со следующего пользователя.

Завершение перевода пользователя

  1. В Microsoft Exchange создаётся внешний контакт пользователя, указывающий на адрес доставки в промежуточном домене (команды — раздел Настройка механизмов маршрутизации).

  2. Проверяется маршрутизация: с действующего ящика Exchange отправляется контрольное письмо на адрес контакта; доставка в аккаунт IVA Mail подтверждается входом в веб-интерфейс IVA Mail под целевым аккаунтом.

  3. Почтовый ящик пользователя в Microsoft Exchange отключается:

    Disable-Mailbox -Identity user01@domain.ru -Confirm:$false
  4. Утилитой syncIMAPMail повторным запуском по данному пользователю досылаются изменения, накопившиеся в исходном ящике с момента первичного копирования: утилита переносит только отсутствующие в целевом ящике сообщения.

  5. Внешний контакт включается в группы рассылки, членом которых являлся пользователь (по перечню шага 1 раздела Алгоритм обработки партии):

    Add-DistributionGroupMember -Identity "sales-team" `
    -Member "User 01 (IVA)"
  6. Клиентское приложение IVA Mail разворачивается пользователю групповой политикой; параметры подключения включаются в уведомление о переводе (раздел Информирование пользователей).

При невыполнении шага 5 пользователь после перевода не получает сообщения, направляемые на адреса групп рассылки Exchange, членом которых он являлся: при отключении ящика пользовательский объект удаляется из состава групп.

Перенос календарей и контактов (ivatool_ews2imail, EWS)

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

  1. В GUI задаются Tool (путь к исполняемому файлу CLI) и Mode = migrate.

  2. Заполняется Connections → Servers and admin accounts: Exchange Server = exchange.domain.ru (утилита обращается к https://exchange.domain.ru/EWS/Exchange.asmx); Exchange version = Auto; Admin = migrator@exchange.example.com с паролем; IVA Server = iva.domain.ru, Admin = migrator, Port = 8106, Use TLS включён; Use HTTPS for JUMP включён, JUMP port = 443.

  3. Включается Use EWS impersonation — доступ к календарям и контактам пользователей выполняется под сервисной учётной записью с правом ApplicationImpersonation.

  4. Задаются параметры миграции: Migrate calendars и Migrate contacts включены; устанавливается All dates — переносятся все элементы календаря независимо от даты; Calendar Bulk Size = 50; Calendar Max Bulk Bytes = 4194304; Contacts Bulk Size = 200. Include empty folders выключен: целевые папки для пустых исходных папок не создаются.

  5. В режиме Accounts file (list) указывается CSV партии (формат — раздел Формат входного файла ivatool_ews2imail (EWS)), выполняется Load / preview list, затем Preflight checks.

  6. Нажимается Start. Контроль ведётся на вкладке Users Progress: статус каждого ящика в реальном времени, сводка Total / Done / Failed / In progress / Pending над таблицей.

Параллелизм. Утилита обрабатывает пользователей списка в 5 потоков (значение по умолчанию). Журнал по каждому пользователю фиксирует дату и время запуска, идентификатор, результат, количество перенесённых объектов и сведения об ошибках; при ошибке на отдельном пользователе обработка продолжается со следующего.

Восстановление прав доступа и делегирования

Восстановление выполняется по ведомости acl_registry.csv (раздел Выгрузка прав) через CMD-интерфейс IVA Mail под сервисным аккаунтом после переноса данных партии. Обе стороны каждого права принадлежат одной партии (раздел Деление пользователей на партии по связям доступа), поэтому на момент восстановления объект и субъект доступа существуют в IVA Mail.

Соответствие прав Exchange правам IVA Mail

Права IVA Mail: права аккаунта (i — отправка от имени, s — отправка по поручению с указанием отправителя в Sender, r — чтение, w — администрирование, даёт все права на все папки), права папки (строка из символов l, r, s, w, i, p, k, x, t, e, a по стандарту IMAP ACL), права календаря (уровни чтения r0–r3, чтения приватных p0–p3, записи w0–w3).

Право Exchange Право IVA Mail Команда назначения

FullAccess

ACL аккаунта: w

ObjectSetSetting … AccountACL

SendAs

ACL аккаунта: i

ObjectSetSetting … AccountACL

SendOnBehalf

ACL аккаунта: s

ObjectSetSetting … AccountACL

Делегат (Editor календаря + SendOnBehalf)

ACL аккаунта: iw

ObjectSetSetting … AccountACL

Папка: Reviewer

ACL папки: lr

MailboxUpdateACL

Папка: Author

ACL папки: lrswi

MailboxUpdateACL

Папка: Editor

ACL папки: lrswipkxte

MailboxUpdateACL

Папка: Owner

ACL папки: все права (*)

MailboxUpdateACL

Календарь: AvailabilityOnly

Календарный ACL: r1

CalendarUpdateACL

Календарь: LimitedDetails

Календарный ACL: r2

CalendarUpdateACL

Календарь: Reviewer

Календарный ACL: r3

CalendarUpdateACL

Календарь: Editor

Календарный ACL: r3w3 + ACL папки lrswite

CalendarUpdateACL, MailboxUpdateACL

Порядок восстановления

  1. Выполняется подключение к CMD-интерфейсу IVA Mail (iva.domain.ru:8106, TLS) под сервисным аккаунтом IVA Mail.

  2. Ведомость acl_registry.csv фильтруется по пользователям текущей партии.

  3. Права уровня аккаунта (FullAccess, SendAs, SendOnBehalf) назначаются записью ключа AccountACL владельца. Словарь формируется по всем субъектам данного владельца из ведомости и записывается одной командой:

    # ассистент assistant: FullAccess + SendOnBehalf к ящику user01
    ObjectSetSetting "domain.ru" "user01" "AccountACL" {"assistant": "sw"}
  4. Права на папки назначаются по каждой строке типа Folder; идентификатор без доменной части относится к домену владельца ресурса:

    # colleague: Reviewer на папку Inbox ящика user01
    MailboxUpdateACL "domain.ru" "user01" "Inbox" "colleague" "+lr"
  5. Права на календари назначаются по каждой строке типа Calendar:

    # secretary: Editor календаря user01
    CalendarUpdateACL "domain.ru" "user01" "Calendar" "secretary" "r3w3" MailboxUpdateACL "domain.ru" "user01" "Calendar" "secretary" "+lrswite"
  6. Назначение проверяется контрольным чтением по каждому владельцу партии:

    MailboxGetACL "domain.ru" "user01" "Inbox"
    CalendarGetACL "domain.ru" "user01" "Calendar"
    ObjectGetSetting "domain.ru" "user01" "AccountACL"
  7. Строки ведомости, назначение которых завершилось ошибкой, вносятся в реестр исключений с текстом ошибки CMD и обрабатываются до завершения партии.