Миграция данных из Active Directory

Данный раздел необязателен, если необходима лишь работа с персональными адресными книгами или планируется импортировать адресную книгу CSV-формата.

Для того, чтобы импортировать данные из Active Directory (служба каталогов корпорации Microsoft для операционных систем семейства Windows Server), необходимо:

1. Остановите сервис Address Book:

./ecss-address-book.sh down

2. Отредактируйте файл .env.override:

nano address-book/stable/.env.override

Задайте параметры авторизации в файле, а также путь для выгрузки данных из Active Directory в Address Book:

AD_PORT=389
AD_SERVER=192.168.114.133
AD_BASE=DC=testdomain,DC=local
AD_SSL=false
AD_USER_DN=CN=Администратор,CN=Users,DC=testdomain,DC=local
AD_PASS=password
AD_BASE_OU="Имя компании"
AD_TIMEOUT=10000

AD AD_PORT=389 — Порт сервера AD;

# AD_SERVER — Хост сервера AD;

# AD_BASE=CN — Базовый Distinguished Name (DN) для поиска пользователей и групп в AD;

AD_SSL — Использовать ли SSL/TLS для защищенного подключения;

AD_TIMEOUT — Таймаут для операций с сервером AD;

AD_USER_DN — Логин в формате user@domain или DN;

AD_PASS — Пароль для аутентификации в AD;

AD_BASE_OU — Название базовой организационной единицы (OU — Organizational Unit) верхнего уровня.

3. При необходимости отредактируйте секцию ad_mapper конфигурационного файла mappers.json. Данный файл отвечает за сопоставление атрибутов Active Directory с полями Address Book при импорте.

nano address-book/stable/mappers.json
"ad_mapper": [
      ["common_name", ["name", "string"]],
      ["full_name", ["cn", "string"]],
      ["first_name", ["givenName", "string"]],
      ["last_name", ["sn", "string"]],
      ["middle_name", ["initials", "string"]],
      ["org", ["company", "string"]],
      ["emails", ["mail", "email"]],
      ["phones",
       [
        [["telephoneNumber"], ["phone", "work"]],
        [["otherTelephone"], ["phone", "work"]],
        [["ipPhone"], ["phone", "work"]],
        [["otherIpPhone"], ["phone", "work"]],
        [["homePhone"], ["phone", "home"]],
        [["otherHomePhone"], ["phone", "home"]],
        [["mobile"], ["phone", "cell"]],
        [["otherMobile"], ["phone", "cell"]]
       ]
      ],
      ["avatar",
        [
          ["jpegPhoto", "jpeg"],
          ["avatar", "url"]
        ]
      ]
    ]

Все атрибуты, кроме phones и avatar, записываются в виде:

["имя_поля_в_address_book", ["имя_атрибута_в_active_directory", "тип_атрибута]"
["first_name", ["givenName", "string"]]

В Active Directory у импортируемого пользователя в атрибуте givenName хранится значение «Kuzma».  

В таком случае указанная строка ["first_name", ["givenName", "string"]] при импорте обработается следующим образом: из атрибута givenName будет взято значение имени «Kuzma» с типом «string» и произведена запись этого значения в поле «first_name» сервиса Address Book.

Поля «phones», «avatar» работают иначе.

Поле «phones» содержит несколько значений, каждое из которых записано в виде:

[["имя_атрибута_в_active_directory"], ["к_какому_общему_полю_в_AB_принадлежит", "тип"]]
[["telephoneNumber"], ["phone", "work"]]

В Active Directory у импортируемого пользователя в атрибуте «telephoneNumber» записано значение внутреннего телефонного номера абонента равное 700.

В таком случае указанная строка [["telephoneNumber"], ["phone", "work"]] при импорте обработается следующим образом: из атрибута «telephoneNumber» будет взято значение 700 и добавлено в поле «phones» в виде списка словарей.

Список словарей нужен, так как телефонов у пользователя может быть несколько (мобильный, рабочий, домашний).   

"phones": [
            {
              "__typename": "Phone",       
              "number": "700",
              "type": "work"
            },
]


Атрибут avatar импортируется аналогичным образом и служит для последующего отображения изображения (аватара) контакта в клиенте Elph. Аватар может быть задан в бинарном виде (jpeg) либо в текстовом (url). На рисунке ниже пример отдельно созданного для этих целей атрибута с именем «avatar». Можно использовать любое встроенное текстовое поле карточки пользователя, правильно сопоставив его при импорте.

4. Запустите сервис Address Book:

./ecss-address-book.sh up

5. Выполните импорт, последовательно вводя указанные ниже команды:

docker exec -it address-book-stable-server-1 bash
./ecss_address_book remote --name ecss_address_book
EcssAddressBookCore.Actions.AdImport.import

Для выхода из iex нажмите Ctrl+C дважды. Затем введите exit. 

При импорте выполняются дополнительные проверки:

1. Если у контакта заполнено хотя бы одно поле (фамилия, имя, отчество) и телефон, такой контакт импортируется в БД Address Book. В противном случае импорт не осуществляется;

2. Так же происходит удаление дублирующихся номеров по следующему принципу:

  • Если у контакта заполнено несколько идентичных номеров в одной категории (например 2 одинаковых рабочих (work) номера), то дубли удаляются;
  • Если дубли встречаются в категории «рабочий (work)» и в одной или обеих категориях «мобильный (cell)», «домашний (home)», то в приоритете дублирующийся номер сохранится в категории «рабочий (work)»;
  • Если дубли встречаются в категориях «мобильный (cell)», «домашний (home)», то в приоритете дублирующийся номер сохранится в категории «мобильный (cell)».

Таким образом в базу данных Address Book попадают только уникальные номера каждого контакта.

  • Нет меток