An automation tool for Cisco Unified Communications Manager (CUCM) administrators to identify, visualize, and report devices with a "None" (unregistered) status. By combining the AXL API for inventory and RISPort70 for real-time status queries, this tool helps optimize licensing and maintain a clean CUCM database.

Example output: bar chart showing model distribution of "None" status devices.
In enterprise UC environments, CUCM databases accumulate devices that are no longer actively registered — phones from decommissioned sites, migrated endpoints, or devices that failed to re-register after configuration changes. These devices consume licenses and create noise in inventory reports.
This tool automates the detection process by:
Outcome: Administrators can quickly identify which device models are most affected, take cleanup or troubleshooting actions, and reduce unnecessary license consumption.
matplotlib) showing the count of "None" devices by model.Standard AXL API AccessStandard RealtimeAndTraceCollectiongit clone https://github.com/ErenKilinc1/CUCM-None-Device-Analyzer.git
cd CUCM-None-Device-AnalyzermacOS / Linux:
python3 -m venv venv
source venv/bin/activateWindows:
python -m venv venv venv\Scripts\activate
pip install -r requirements.txt
The scripts read credentials from environment variables. Create a .env file in the project root:
CUCM_IP=192.168.1.1 CUCM_USERNAME=axl_api_user CUCM_PASSWORD=your_password_here CUCM_VERSION=12.5
| Variable | Description |
|---|---|
CUCM_IP |
IP address or FQDN of your CUCM Publisher node |
CUCM_USERNAME |
CUCM account with AXL and RIS access |
CUCM_PASSWORD |
Password for the CUCM account |
CUCM_VERSION |
CUCM version (e.g., 12.5, 14.0) |
Security note: Never commit your
.envfile to version control. It is listed in.gitignoreby default.
Ensure your virtual environment is active and your .env file is configured, then run either script:
Graphical model analysis (bar chart):
python none_devices_with_model.py
| Script | Purpose |
|---|---|
none_devices_with_model.py |
Detects "None" devices and displays a model-based bar chart |
AXL: Fetching device and model information from database...
Success: 5420 devices ready for analysis.
# | Device Name | Model | Status
---------------------------------------------------------------------------
1 | SEP7A11C87D07C4 | Cisco 7841 | None
2 | SEPEAF55C447BAB | Cisco 840 | None
3 | SEP8D9C22D03F88 | Cisco 7841 | None
4 | SEP01188F574785 | Cisco 7911 | None
5 | TCTUSER | Cisco Dual Mode for iPhone | None
6 | SEPUSER | Cisco IP Communicator | None
7 | SEP2C7BA3C22C8F | Cisco 8851 | None
8 | SEP00521A78DCAF | Cisco 8851 | None
9 | SEP00478D87A1F5 | Cisco 8851 | None
10 | SEP36ACC9D4F2F4 | Cisco 9971 | None
11 | SEP07006CE9D047 | Cisco 9971 | None
12 | BOTUSER | Cisco Dual Mode for Android | None
---------------------------------------------------------------------------
After processing, a bar chart window opens automatically showing device counts grouped by model.
The RISPort70 API enforces request rate limits. The scripts automatically:
This ensures CUCM services (Tomcat/RIS) remain healthy even in large-scale deployments with 10,000+ devices.
ciscoaxl initialization parameters and WSDL paths.urllib3. In production, consider providing a proper CA bundle.Agg matplotlib backend.Contributions are welcome! Please read CONTRIBUTING.md for the full process.
Quick start:
git checkout -b feature/my-improvementmain branchIdeas for extensions:
Please review our Security Policy before reporting vulnerabilities. Do not open public GitHub issues for security bugs — follow the responsible disclosure process described in SECURITY.md.
Test this script against a live CUCM environment using the Cisco DevNet Sandboxes:
If you encounter issues:
This project is licensed under the MIT License — see the LICENSE file for details.
Abdullah Eren Kilinc
Owner
Contributors
Categories
CollaborationProducts
Cisco Unified Communications Manager (CUCM)IP PhonesLicense
Code Exchange Community
Get help, share code, and collaborate with other developers in the Code Exchange community.View Community