> ## Documentation Index
> Fetch the complete documentation index at: https://documentation.kodelabs.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Avigilon ACM (Access Control Manager)

> Connect Avigilon ACM (Access Control Manager) to KODE OS for access control data

> Connect Avigilon ACM (Access Control Manager) to KODE OS for access control data integration

## Overview

Use this integration to connect your Avigilon Access Control Manager (ACM) system to KODE OS. You can discover devices and data points, then collect door- and access-related sensor and non-sensor data through pull-based REST collection from ACC Admin Tool or Avigilon Cloud Services.

| Property            | Value          |
| ------------------- | -------------- |
| **System Type**     | Access Control |
| **Communication**   | REST           |
| **Collection**      | Pull           |
| **Collection Mode** | SNAPSHOT       |

## Supported Capabilities

* Discover Devices & Points
* Collect Sensor Data
* Collect Non-Sensor Data

## Prerequisites

To integrate with the Avigilon Control Center, ensure you have the following details:

* An active account to the ACC Admin Tool (on‑prem) or Avigilon Cloud Services portal with admin permissions.
* Valid username and password credentials for the ACC Admin Tool or Avigilon Cloud Services.
  Password
  Client Name\*
  See Step 1
  User Key\*
  URL\*
  See Step 2
  Fields marked with an asterisk \* are mandatory for completing the integration.

### Vendor Onboarding References

Use these official vendor resources to verify API access, credentials, and permission prerequisites:

* [Avigilon Web Endpoint API docs](https://docs.avigilon.com/bundle/web-endpoint-api/page/introduction.htm)

## Generate API Credentials

1. **Step 2: Obtain Base URL	3**
   * Log in to the ACC Admin Tool as an administrator.
   * Navigate to Site Setup → Security → Application Clients.
   * Create a new REST client:
   * Click Add Client.
   * Enter Client Name (e.g., KODE\_OS\_Integration).
   * Click Generate Key, then copy the User Key immediately.
   * Store both values securely (the UI hides the key after you leave):
   * Client Name
   * User Key
   * Create an API service user:
   * Go to Site Setup → Security → Users
   * Click Add User, enter Username (e.g., kode\_api\_user) and Password
   * Assign a role with Site Administrator or custom API‑only permissions.

## Configure Connector in KODE OS

1. Navigate to **Data Sources** in your building
2. Click **API Catalog** and search for **Avigilon ACM (Access Control Manager)**
3. Click **+ Add Datasource**
4. Fill in the fields below and complete the three-page setup flow

| Field        | Required | Type     | Description                                              |
| ------------ | -------- | -------- | -------------------------------------------------------- |
| **URL**      | Yes      | text     | The base URL or IP address of the external system        |
| **Username** | Yes      | text     | The username for authenticating with the external system |
| **Password** | Yes      | password | The password for authenticating with the external system |

## Discover Devices and Points

After configuring the connector, click **Discover** on the connector detail page. KODE OS will query the Avigilon ACM (Access Control Manager) system and return a list of available devices and their data points.

Review the discovered items and select the devices you want to register in KODE OS.

For more details on the discovery process, see the [Discovery guide](/products/integrations/capabilities/discovery).

## Devices and Points

When you discover devices from Avigilon ACM (Access Control Manager), KODE OS maps them to the following device types and data points:

### Access Controller

Canonical Type: `default`

| # | Point           | Description                           | Unit | Writable | Collection |
| - | --------------- | ------------------------------------- | ---- | -------- | ---------- |
| 1 | `door_position` | Current physical position of the door | --   | No       | Polling    |
| 2 | `normal`        | Normal operating state indicator      | --   | No       | Polling    |

## What Data You Get

### Point History

Time-series readings including door\_position, normal, collected at regular intervals from connected devices

### ACM Events

Access control management events from Avigilon ACM including door access and credential events

### Polling Schedule

* **Point History** -- Default polling: 30 seconds (min: 30 seconds, max: 1 hours)
* **AvigilonACMEvents** -- Default polling: 1 days (min: 1 days, max: 1 days)

For more details on collection modes, see the [Data Collection guide](/products/integrations/capabilities/data-collection).

## Use Cases

Once connected, this integration enables you to:

* Centralize access event monitoring across all entry points and zones
* Generate audit trails for security compliance and investigation
* Correlate access patterns with occupancy and energy data for building optimization

## Troubleshooting

<AccordionGroup>
  <Accordion title="Authentication or connection error">
    Verify that the credentials are correct and have not expired. Check that the URL is reachable from the KODE OS environment. Verify the username and password are correct and the account has not been locked in the Avigilon ACM (Access Control Manager) system.
  </Accordion>

  <Accordion title="Discovery returns no devices">
    Verify the connector credentials have sufficient permissions in the Avigilon ACM (Access Control Manager) system to list devices. Run a test connection first to confirm connectivity. Some systems require specific API scopes or roles for device enumeration.
  </Accordion>

  <Accordion title="Data collection stops or gaps appear">
    Check the connector status on the Data Sources page. If the status shows an error, review the error logs on the connector detail page. Common causes include expired credentials, network changes, or rate limiting by the Avigilon ACM (Access Control Manager) API.
  </Accordion>
</AccordionGroup>
