Содержание
- Дисклеймер о текущих ограничениях и известных ошибках
- 1. Подготовка к миграции
- 2. Работы для интеграции на Корпоративном сервере 2019
- 3. Работы для интеграции на Корпоративном сервере 2024
- 4. Пересобираем контейнеры после внесения изменений
- 5. Запускаем миграцию
Дисклеймер о текущих ограничениях и известных ошибках
Настоящий документ содержит информацию о текущих ограничениях и известных ошибках, обнаруженных при использовании инструмента миграции данных из Корпоративного сервера 2019 (далее - КС2019) в Корпоративный сервер 2024 (далее – КС2024). Мы стремимся обеспечить высокий уровень качества нашего продукта, однако на данный момент выявлены следующие проблемы, которые могут повлиять на функционирование и предупреждаем о возможных рисках его использования:
1. Интерфейс и настройки доступа:- В интерфейсе настроек доступа в КС2024 не отображаются права пользователей на документы, наследуемые от прав папок: Некоторые права пользователей могут не отображаться в интерфейсе КС2024, что может вводить в заблуждение при работе с делегированием прав на документы. При просмотре прав на документ отображаются только права выданные непосредственно на документ, права наследованные от папок не отображаются.
- Не мигрирует встроенная УЗ Администратора КС2019: Возможно отсутствие доступа к важному функционалу для отдельных групп пользователей.
- Не мигрируют права администратора, выданные пользователю портала: Права администратора, выданные пользователям для работы с модулями портала, не переносятся в КС2024. Возможно отсутствие доступа к важному функционалу для отдельных групп пользователей.
- Не мигрируют права на документы, добавленные в папку Общие с правами на Чтение: Возможна потеря доступа к отдельным документам.
- Некорректно мигрируют даты создания пользователей: Даты создания учетных записей могут быть неправильно перенесены, что может искажать некоторую личную информацию пользователей.
- Не мигрируют руководители пользователей: Информация о руководителях пользователей может быть потеряна. Необходимо ручное восстановление атрибутов пользователей.
- Не мигрируют должности пользователей: Информация о должностях пользователей может быть потеряна. Необходимо ручное восстановление атрибутов пользователей.
- Некорректно мигрирует телефонный код: Телефонные коды могут быть неправильно перенесены. Необходимо ручное восстановление атрибутов пользователей.
- При миграции УЗ с правами Гость получает права на редактирование к некоторым документам: Учетные записи с правами только на чтение могут получать непредусмотренные права на редактирование к некоторым документам, что может нарушать политику прав доступа к корпоративной информации. Под «некоторыми документами» понимаются документы КС2019 из папки «Общие», полный доступ к которым был выдан группе «Все». Для обхода данной ошибки перед выполнением миграции требуется исключить все УЗ с правами Гость из группы «Все».
- Не мигрируют внешние ссылки на документы и папки: Возможно отсутствие доступа к определенным документам для отдельных групп пользователей.
Примечание: Обращаем внимание, что инструмент миграции находится в стадии активной разработки. В связи с этим просим не проводить миграцию без предварительного тестирования на непродуктивном контуре. Мы активно работаем над исправлением указанных ошибок и улучшаем функциональность инструмента миграции. Рекомендуем вам следить за обновлениями и устанавливать последние версии для получения исправлений и улучшений.
Приносим извинения за возможные неудобства и благодарим за ваше понимание и терпение. Для получения дополнительной информации или помощи, пожалуйста, обращайтесь в нашу службу поддержки.
1. Подготовка к миграции
1.1. Останавливаем сервер документов и создаем пользователя на сервере с Корпоративный сервер 2024
Смотрим container id контейнера с названием downloads.r7-office.ru:9011/r7office/ds/ds-app:
docker ps
Для остановки сессий с документами выполняем скрипт внутри контейнера:
docker exec container_id_ds-app bash /usr/bin/documentserver-prepare4shutdown.sh
Проверяем, что файлы не открываются на редактирование.
1.2. Создаем пользователя для миграции и добавляем его в группу docker
useradd -u 1999 -G docker cddisk
Посмотреть uid и gid созданного пользователя:
id cddisk
2. Работы для интеграции на Корпоративном сервере 2019
2.1. Создаем пользователя cddisk с правами SELECT
2.1.1. Узнаём пароль от root MySQL командой
grep -oP 'Password=\K[^;]+' /var/www/r7-office/WebStudio/web.connections.config
2.1.2. Подключаемся к MySQL
mysql -u root -p
2.1.3. Создаем пользователя cddisk с правами SELECT
CREATE USER 'cddisk'@'ip_docker_cs24' IDENTIFIED WITH mysql_native_password BY 'StrongSecurityPassword'; GRANT SELECT ON `r7-office`.* TO 'cddisk'@'ip_docker_cs24'; FLUSH PRIVILEGES; \q
Где:
ip_docker_cs24— IP-адрес Корпоративного сервера 2024;StrongSecurityPassword— пароль пользователяcddiskcddisk— пользователь, с доступом к БД;r7-office— имя базы данных.
2.2. Предоставляем доступ к файлам
2.2.1. Устанавливаем nfs сервер
# .deb apt install nfs-kernel-server -y # .rpm yum install nfs-utils nfs4-acl-tools # ALT Linux apt-get install nfs-server
2.2.2. Запускаем службу nfs
systemctl start nfs-server systemctl enable nfs-server
2.2.3. Открываем файл /etc/exports
nano /etc/exports
2.2.4. Добавляем строку в файл /etc/exports
/var/www/r7-office/Data/Products/Files ip_docker_cs24/32(rw,nohide,all_squash,anonuid=1999,anongid=995,no_subtree_check)
Где:
ip_docker_cs24— IP-адрес сервера с докер версией Корпоративного сервера 2024;anonuid=1999— указываем id, если выполнялось создание нового пользователяcddiskanongid=995— указываем id группыdocker
2.2.5. Применяем изменения
exportfs -ra
3. Работы для интеграции на Корпоративном сервере 2024
3.1. Проверьте доступ к БД и NFS Корпоративного сервера 2019
telnet ip_address_cs19 3306 telnet ip_address_cs19 2049
Где:
ip_address_cs19— IP-адрес сервера с Корпоративный сервер 2019;3306— порт для MySQL;2049— порт NFS.
3.2. Настройка доступ к файлам
3.2.1. Установите клиент nfs
# для deb apt install nfs-common -y # для yum yum install nfs-utils # ALT Linux apt-get install nfs-utils
3.2.2. Создайте каталог для монтирования файлов с Корпоративного сервера 2019
mkdir /mnt/cs19
3.2.3. Внесем изменения в services.json
nano /opt/r7-office-docker/configs/processing/services.json
Внесите имя каталога созданного в пункте 3.2.2 в "folder":
{
"name": "CS.UserImport",
"handlers": [
{
"name": "ExportDataFromCsMessageHandler",
"type": "ExportDataFromCsMessageHandler",
"subscriptionEndpoint": "Export.Data.From.Cs",
"folder": "/mnt/cs19",
"customer": 1,
"useExchange": true,
"degreeOfParallelism": 1
},
3.2.4. Настройте автоматическое монтирование сетевой папки при загрузке сервера
nano /etc/fstab
Добавьте в файл содержимое:
ip_address_cs19:/var/www/r7-office/Data/Products/Files /mnt/cs19 nfs defaults 0 2
Где:
ip_address_cs19— IP-адрес сервера с Корпоративный сервер 2019;/var/www/r7-office/Data/Products/Files— имя каталога, который сделали сетевым;/mnt/cs19— куда монтируется.
3.2.4. Примонтируйте сетевой каталог
systemctl daemon-reload mount -a
3.3. Проверяем порты RabbitMQ
Перед внесением изменений cкопируйте файл template.yaml в каталоге /opt/r7-office-docker/:
cp template.yaml template.yaml.old
3.3.1. Откройте файл template.yaml, расположенный в каталоге /opt/r7-office-docker/
Проверяем в конфигурации cs-rabbitmq что порт 5672 публичный:
cs-rabbitmq:
container_name: cs-rabbitmq
environment:
RABBITMQ_DEFAULT_PASS: guest
RABBITMQ_DEFAULT_USER: guest
RABBITMQ_NODE_PORT: '5672'
r7_team_rabbit_pass: team
hostname: cs-rabbit
image: downloads.r7-office.ru:9011/r7office/cs/cddisk-rabbitmq:2025.3.12.15877
networks:
- net-cs
ports:
- mode: host
protocol: tcp
published: '5672'
target: '5672'
restart: unless-stopped3.3.2. Добавляем RabbitMQ management plugin (опционально)
Для мониторинга прогресса миграции добавляем RabbitMQ management plugin публичный порт 15672 и включаем отображение метрик:
cs-rabbitmq:
container_name: cs-rabbitmq
environment:
RABBITMQ_DEFAULT_PASS: guest
RABBITMQ_DEFAULT_USER: guest
RABBITMQ_NODE_PORT: '5672'
r7_team_rabbit_pass: team
RABBITMQ_SERVER_ADDITIONAL_ERL_ARGS: "-rabbitmq_management_agent disable_metrics_collector false"
hostname: cs-rabbit
image: downloads.r7-office.ru:9011/r7office/cs/cddisk-rabbitmq:2025.3.12.15877
networks:
- net-cs
ports:
- mode: host
protocol: tcp
published: '5672'
target: '5672'
- mode: host
protocol: tcp
published: '15672'
target: '15672'
restart: unless-stopped
command: >
sh -c "
rabbitmq-plugins enable rabbitmq_management &&
docker-entrypoint.sh rabbitmq-server
"3.4. Добавляем файл appsettings.json и директорию внутрь контейнера
Смотрим container id контейнера с названием downloads.r7-office.ru:9011/r7office/cs/cddisk-processing:
docker ps
3.4.1. Извлекаем файл из контейнера командой, находясь в директории r7-office
docker cp container_id_cddisk-processing:/opt/r7-office/Processing/appsettings.json ./
Или заменив ./ на путь к директории r7-office.
Откроем файл appsettings.json на редактирование и приводим строку CommunityRepository к виду:
"ConnectionStrings": {
"R7StorageServerUserActions": "Database=postgres;Username=postgres;Password=pg_pass;Host=postgres;Port=5432;",
"R7StorageServer": "Database=postgres;Username=postgres;Password=pg_pass;Host=postgres;Port=5432;",
"CommunityRepository": "Server=ip_address_cs19;UserID=cddisk;Password=StrongSecurityPassword;Database=r7-office"Где:
ip_address_cs19— IP-адрес сервера с ПО Корпоративный сервер 2019;cddisk— пользователь и его пароль, созданный в пункте 2.1.3.
3.4.2. Добавляем volumes в файле template.yaml в блок cs-processing
cs-processing:
container_name: cs-processing
depends_on:
- cs-registry
- cs-searchapi
- cs-filestorage
- cs-rabbitmq
- cs-postgres
environment:
r7_db_host: cs-psql
r7_db_name: postgres
r7_db_pass: pg_pass
r7_db_port: '5432'
r7_db_user: postgres
r7_filestorage_host: cs-filestorage
r7_filestorage_tcp_port: '11581'
r7_rabbitmq_host: cs-rabbit
r7_rabbitmq_pass: guest
r7_rabbitmq_user: guest
r7_registry_addr: http://cs-registry:7777
r7_searchapi_addr: http://cs-search:2664
hostname: cs-processing
image: downloads.r7-office.ru:9011/r7office/cs/cddisk-processing:2025.3.12.15877
networks:
- net-cs
- net-ds
- net-mail
restart: unless-stopped
volumes:
- source: /opt/r7-office-docker/configs/processing/filestorage.json
target: /opt/r7-office/Processing/filestorage.json
type: bind
- source: /opt/r7-office-docker/configs/processing/filestorage_temp
target: /var/r7-office/filestorage_temp_proc/
type: bind
#- source: /opt/r7-office-docker/configs/processing/appsettings.json
# target: /opt/r7-office/Processing/appsettings.json
# type: bind
- source: /opt/r7-office-docker/configs/processing/services.json
target: /opt/r7-office/Processing/services.json
type: bind
- source: /opt/r7-office-docker/configs/processing/nlog.config
target: /opt/r7-office/Processing/nlog.config
type: bind
- source: ./support_logs/processing
target: /var/log/r7-office/CDDisk/R7.Storage.Server.Processing.Host
type: bind
- source: /mnt/cs19
target: /mnt/cs19
type: bind
read_only: true
- source: /opt/r7-office-docker/appsettings.json
target: /opt/r7-office/Processing/appsettings.json
type: bind4. Пересобираем контейнеры после внесения изменений
4.1. Пересобираем контейнеры после сохранения изменений внесенных template.yaml
docker compose -f template.yaml up -d && docker restart container_id_ds-app
5. Запускаем миграцию
5.1. Запускаем миграцию в браузере
Авторизуемся на портале и открываем в браузере адрес:
https://cddisk.domain.ru/api/v1/ExportFromCs/Start
Где:
cddisk.domain.ru— адрес модуля Р7 Диск у Корпоративный сервер 2024.
5.2. Используем мониторинг прогресса миграции с помощью RabbitMQ
Открываем адрес в браузере и авторизуемся с помощью данных из пункта 3.3.2:
http://ip_docker_cs24:15672

Где:
ip_docker_cs24— IP-адрес Корпоративного сервера 2024;Import.User.From.Cs— очередь экспорта пользователей;Количество сообщений— это количество пользователей которые в процессе переноса;Export.Data.From.Cs— очередь экспорта файлов.













