Skip to content

platform sdk enrolling an access control unit

Andre Lafleur edited this page Oct 8, 2026 · 9 revisions

Enrolling an access control unit

Enroll an access control unit, such as a Synergis Cloud Link or an HID controller, in an AccessManagerRole. After successful enrollment, the unit appears as a Unit entity owned by the Access Manager role and is ready to receive interface modules.

Prerequisites

  • The target access manager role must be running.
  • You must know the unit's IP address, the access control extension type the unit runs (for example, CloudLink, SMC, VertX), the port, and login credentials.
  • Only one access control unit enrollment can be in progress at a time. EnrollAccessControlUnit throws SdkException when called while another enrollment is still pending.

Procedure

  1. Subscribe to the three enrollment events on IAccessControlUnitManager before sending the request. The progress event enables the integration to drive a UI; the success/fail events report the terminal outcome.

    engine.AccessControlUnitManager.UnitEnrollmentUpdated +=
        (sender, e) => Console.WriteLine($"State: {e.State}, progress: {e.ProgressPercent}%");
    engine.AccessControlUnitManager.UnitEnrollmentSucceeded +=
        (sender, e) => Console.WriteLine($"Enrolled: {e.UnitEndPoint}");
    engine.AccessControlUnitManager.UnitEnrollmentFailed +=
        (sender, e) => Console.WriteLine($"Failed: {e.UnitEndPoint}, {e.ActionDetails}");
  2. Build an AddAccessControlUnitInfo with the unit's address, extension type, port, and credentials, then call EnrollAccessControlUnit with the unit info and the access manager role guid. The example uses NetworkCredential.SecurePassword to convert a plaintext password into a SecureString. The return value reports whether the request was sent, not whether enrollment succeeded.

    var unitInfo = new AddAccessControlUnitInfo(
        address: IPAddress.Parse("192.168.1.100"),
        extensionType: AccessControlExtensionType.CloudLink,
        port: 443,
        username: "admin",
        password: new NetworkCredential("", "admin-password").SecurePassword);
    
    bool requestSent = engine.AccessControlUnitManager
        .EnrollAccessControlUnit(unitInfo, accessManagerRoleGuid);
  3. Wait for UnitEnrollmentSucceeded. This event confirms the enrollment but does not carry the new unit's GUID; that GUID arrives through engine.EntitiesAdded. Subscribe to EntitiesAdded before you enroll, and when it is raised, take the GUID of the added entity whose EntityType is Unit and pass it to engine.GetEntity<Unit>.

  4. Attach interface modules to the newly enrolled unit. See Adding an interface module for the construction details.

HID VertX with secure mode

For HID VertX units running newer firmware, secure mode must be enabled, or FTP, Telnet, and SSH must be enabled on the controller's web page, before enrollment succeeds. Use the AddAccessControlUnitInfo constructor that takes secureMode and translatedHostIp:

var unitInfo = new AddAccessControlUnitInfo(
    address: IPAddress.Parse("192.168.1.100"),
    extensionType: AccessControlExtensionType.VertX,
    port: 443,
    username: "admin",
    password: new NetworkCredential("", "admin-password").SecurePassword,
    translatedHostIp: "10.0.0.50",
    secureMode: true);

See also

Platform SDK

Plugin SDK

Workspace SDK

Media SDK

Macro SDK

Web SDK

Synergis RIO

Media Gateway

Genetec Web Player

Clone this wiki locally