Синхронизация с АД
Синхронизация пользователей Active Directory с Инвентаризацией: какие поля переносятся в каждом направлении и по каким ключам сопоставляются учетные записи.
Синхронизацию выполняют два внешних PowerShell-скрипта, обменивающихся данными с инвентаризацией через REST API:
- AD-Inventory-sync — сценарий AD → Инвентаризация (источник данных о сотрудниках — сам AD);
- inventory-ad-sync — сценарий Инвентаризация → AD (источник данных — кадровая система, из которой заполнена Инвентаризация).
Перечни ниже сверены с кодом скриптов (июль 2026); актуальный источник истины — README и код самих скриптов.
Сценарий AD → Инвентаризация
Пользователь, не найденный в Инвентаризации, создается. Синхронизацию отдельной записи можно отключить на стороне Инвентаризации (признак «не синхронизировать»).
Синхронизируемые поля:
- ФИО
- Login
- Email
- GUID учетной записи (записывается в Инвентаризацию, чтобы находить сотрудника после переименований)
- Должность
- Организация (должна уже существовать в Инвентаризации — автоматически не создается)
- Подразделение (при отсутствии создается автоматически в рамках организации)
- Номер телефона внутренний
- Номер телефона сотовый
- Признак «уволен» (по отключению учетной записи в AD)
Ключ
При отсутствии совпадения по очередному ключу поиск идет по следующему:
- GUID: uid ↔ objectGUID
- Логин: login ↔ sAMAccountName
- ФИО: name ↔ displayName
Сценарий Инвентаризация → AD
Помимо переноса полей скрипт переименовывает объект AD при смене ФИО и деактивирует учетную запись уволенного сотрудника (через внешний скрипт ad-usermanagement; автоувольнение отключаемо, есть список исключений).
Синхронизируемые поля Инвентаризация → AD:
- ФИО (имя объекта AD, выводимое имя, имя и фамилия)
- Табельный номер и ID организации
- Организация
- Подразделение
- Должность
- УИД сотрудника (ИНН/СНИЛС и т.п.)
- Номера телефонов: мобильный, внутренний, городской (приводятся к единому формату)
- E-Mail — если в Инвентаризации указана почта вне корпоративного домена (например, кадры прописали личную)
Обратно (AD → Инвентаризация) этот же скрипт переносит:
- Login
- E-Mail — если почта в корпоративном домене (сотруднику выдан корпоративный ящик)
Ключ
- Логин: login ↔ sAMAccountName
- Табельный №: num ↔ employeeID (в связке с ID организации: org_id ↔ employeeNumber; если поддержка нескольких организаций выключена — первая организация)
- УИД (ИНН): uid ↔ adminDescription
- ФИО: name ↔ displayName
- Табельный № вместо ФИО: num ↔ displayName (применимо при сквозной нумерации табельных)
Если найденный по ключу сотрудник уволен, скрипт дополнительно ищет его другие трудоустройства по УИД или ФИО.