Skip to content
N1
Legacy · Bitrix24 · Active Directory · office map

Moving a custom directory into Bitrix24: an office map and AD sync

Client: Insurance company, NDA Category: Legacy Stack: PHP 8.4, Bitrix24 D7, HL blocks, LDAP / Active Directory, Vue, AMI (Grandstream) Timeline: rolled out in stages
Problem

The employee directory lived in a separate Node.js/Express app: data in JSON files with no database, its own AD login, a 2,409-line monolith. Employees and the org structure in it duplicated what the portal already had.

Constraints

The old app's frontend was not in the export — screens were reconstructed from the API and data. Personal data and photos from the export could not go into git, and the portal had to remain the single source of truth about people.

What I did
  • Employees and departments moved into the portal's stock entities with no parallel registry; the importer matches people by email and full name and reports unmatched ones
  • An interactive map of two floors: workstations, zones, meeting rooms, "who sits where" search, zoom and a map editor
  • An Active Directory sync agent: extension number, job title, mobile and photo — without overwriting what HR has set
  • Line statuses and one-click calls to a colleague via the PBX
  • National Bank of Kazakhstan exchange rates with caching and fallback to the last known value when the source is unavailable
Architecture
Node app export → CLI importer → Portal users and org structure → Office map HL blocks → AD sync agent
Result

The old directory's data — 91 employees, 26 departments and 2 floor plans — was moved into the portal's stock entities; 73 workstations on the map were verified against the old app, and the coordinates matched. The directory, the map and the AD sync run in production.

What can be reused
Importer of an external directory into stock Bitrix24 users with a discrepancy report Interactive office map with an editor on HL blocks Profile sync from Active Directory