When the engineers deploy Cisco UCCX or Cisco Unity Connection and integrate such system with Cisco Unified Communications Manager (CUCM), one of the common task is to configure so called CUCM AXL User credentials. Of course, the guys, who do such an integration for the first time in their life, wonder what the AXL really is. Today I will provide your some knowledge about CUCM AXL.
Administrative XML Web Service (AXL) is one of the Application Programming Interfaces (APIs) used in CUCM. Let’s first define the term API. You may be wondering “What exactly is an API?” and “What are the benefits of using one?”
An API is a software intermediary that allows two applications to talk to each other and is characterized as follows:
- Separates functionality into building blocks
- Provides faster prototyping
- Specifies how information is exchanged
- Provides documentation
APIs separate functionality into blocks. A client runs the application while the server runs the API. The only thing you need to understand is how information is exchanged, which is usually well documented.
Actually, there are many types of well-known APIs. One of the earliest forms of API was Remote Procedure Call (RPC); then, there was XML-RPC, JSON-RPC, and Simple Object Access (SOAP).
The AXL API provides a mechanism for programmers to make several types of changes to the Cisco Unified Communications Manager database using XML and the SOAP interface. In other words, it provides a mechanism for inserting, retrieving, updating and removing data from the Unified Communication configuration database.
AXL API methods, which are known as requests, use a combination of HTTPS and SOAP. SOAP provides an XML-based communication protocol and encoding format for communication. Users perform requests by sending XML data to the Cisco Unified Communications Manager publisher server. If the request completes successfully, the system returns the appropriate AXL response.
AXL works directly with XML and does not have JSON or YAML support. Cisco currently does not support REST on Cisco Unified Communications Manager.
The AXL API provides you with access to the entire CUCM database. The AXL API is purely for provisioning and does not provide access to run-time or performance data. Developers can use AXL to create, read, update, and delete objects in CUCM such as gateways, users, devices, route-patterns and much more.
AXL API utilizes HTTPS Basic Authentication. Any CUCM User (Application or End User) will have read/write access via AXL if they are members of the Standard CCM Super Users access control group or any group with the Standard AXL API Access role assigned to it. This means that all super user accounts implicitly already have access to the AXL API. To create an account dedicated for AXL API use, you must first create an access control group and assign the Standard AXL API Access role to it, then associate the application user with the newly created group:
Now you know a little bit what CUCM AXL API stands for. Let’s see how Cisco UCCX (Contact Center Express) and Cisco Unity Connection use it. When you run UCCX Publisher initial configuration after the software installation, you have to provide AXL Admin User Name and its Password.
After you provide these AXL Credentials, the UCCX software will have access to CUCM Database. Later on the UCCX will be able to read some data from the CUCM and even change the configuration there. As examples, the UCCX uses AXL API to read the Users configuration and import user accounts
from CUCM to create its own users. More over, when you create IVR Ports (Call Control Groups) or Triggers in the contact center admin interface, the UCCX automatically adds CTI Ports and CTI Route Points in CUCM, avoiding manual configuration at CUCM side. With the AXL API your UCCX check also if JTAPI config is made and works properly. Looks wonderful, right?
Cisco Unity Connection uses the CUCM AXL API for the similar tasks. However, Unity Connection does not make any configuration at the CUCM, it just reads the CUCM User configuration and uses this information to create the voice mailboxes for the users. In other words, Unity Connection also imports the Users from CUCM. And this is the most preferable way to create voice mailboxes in Unity.
In order to provide access to the CUCM Database for the Unity Connection, configure the AXL server in the phone system configuration. Add a new AXL server with the IP address of the CUCM and the port number 8443. Then enter the username and password of the Cisco Unified Communications Manager application user. Here is an example how you can do this setup:
After this setup your Unity Connection can imports User records from the CUCM.
Both for UCCX and Unity Connection integration with CUCM don’t forget first to activate the
Cisco AXL service on CUCM.
Of course, the AXL API can be used not only by the UCCX or Unity. AXL is a great way for remote provisioning of Cisco Unified Communications Manager. What if you need to provide some automation for CUCM configuration? Let’s say you need to upload a predefined configuration to your CUCM automatically. This is where AXL and SOAP come into action. And of course, Python will be a great tool to create such automation scripts.