UCCX Automatic Call Distribution (ACD) Part 1

Automatic Call Distribution, or ACD, is one of the most fundamental features of any call center software. It includes taking calls, queuing them until a qualified agent it is available, and transferring the call to that agent. There are a number of components that make up ACD in UCCX, which I will address over several posts. This page assumes you have installed UCCX, and run through the UCCX initial setup.

Queues, Resource Groups, and Skills

In this post, we will deal with queues, and the ways to assign agents to them.

Resource groups are a static group of agents that can be assigned to one or more queues.

Skills based routing can be configured to require an agent to be assigned one or more skills, and at a minimum level, before calls can be routed to them, and route the calls to agents based on the skill level assigned to them. Queues can be configured to route based on a number of functions based on the agent’s skill level, high to low, low to high, and based on weighting.

In UCCX, skills are a simple text tag, and a skill level from 1 to 10. Agents can be assigned skills, and queues can be configured to require them. Agents can have multiple skills, queues can require multiple skills, and a skill can be used by multiple queues.

A Contact Service Queue is a “line” that callers can be placed in, until they are transferred to an agent. Queues can require one or more skills, or can route to a resource group.

Resource Groups.

Resource Group based queuing is much more like traditional hunt group routing, where a fixed group of resources (agents) is selected from. You lose flexibility compared to Skills Based routing, but gain some simplicity. Resource Group based queuing is best where you have a very static group of agents working with very specific queues, and no overlap. With Resource Group queuing, an ordered list of agents is created, then the system distributes to them based on the Selection Criteria you decide to use. Available Selection Criteria are:

  • Longest Idle (the person who has been off the phone the longest gets the next call)
  • Linear (Agent 1 always gets the call if the are available, if not, agent 2 gets the call. If neither are available, the call is delivered to agent 3, etc.)
  • Circular (Agent 1 gets a call, agent 2 gets the next one, and so on, unless the next scheduled agent is not available, when is skips to the next available agent in the ordered line)
  • Most Handled Contacts & Shortest Average Handle Time, (the system dynamically reorders the list based on efficiency metrics)

With skills based routing, Skills (A text tag to which a skill level from 1 to 10 can be assigned) are configured, then queues are configured to require those skill. I often see Skills and Queues configured on a 1 to 1 relationship; the queue for Widget Sales requires the skill “Widget Sales,” but much more complex selection criteria can be  created. If, for instance, the company is providing support in English and French, you could create “English Widget Sales” and “French Widget Sales” as skills, or you could create “Widget Sales,” “English,” and “French” as skills, and require both the “Widget Sales” and “French” skills for the queue that people wanting to buy Widgets in French are routed to. Breaking it down even further, you could create skills “Widgets,” “Gadgets,” “Sales,” “Returns,” “Service,” “English,” and “French.” Queues can then be created that require the appropriate skills. When an agent moves from sales to returns, all that needs to be changed are the “Sales” and “Returns” skills, while brand and language skills carry over. Assigning an agent the French skill, an agent would be assigned to all the French brand queues that they have in English by adding a single skill.

1 to 1 skill to queue mapping provides a great deal of granularity, but can be more work for your contact center supervisors to manage. In the previous example, there isn’t a clean way to add an agent to a single French queue if they are a member of multiple English queues. You can increase the granularity so that an agent could be assigned only one French queue, but then they need to be added to every French queue.

Creating Skills

It doesn’t get much easier than this. Log into the UCCX admin page, and navigate to Subsystems > RmCm > Skills. Click “Add New.” Type a name for the skill, and click Save. All the other configuration for skills are done on the queues and resources.

Assigning Skills to Queues

The first step is to create a queue, and enable skills based routing. Navigate to Subsystems > RmCm > Contact Service Queues, and click Add New. The first Contact Service Queue Configuration page displays:

 photo CreateCSQ1.png

Contact Service Queue Name: Assign an appropriate name to the queue

Contact Service Queue Type: Select Voice or Email. The rest of this assumes Voice, configuration for Email is similar. Agent email will be addressed in another post.

Automatic Work: When this is enabled, agents are placed in a work state after a call.

Wrapup Time: When enabled, agents will be given the configured number of seconds to wrap up a call. Times will very significantly based on the call center workflows.

Resource Selection Model: Choose Resource Skills for skills based routing, or Resource Group for Resource Group routing. The rest of this example assumes Resource Skills.

Service Level and Service Percentage: The percentage of calls that should be answered in the specified number of seconds. These metrics are used in contact center reporting, and do not change queue behavior. Contact center managers can usually provide the desired values, otherwise leave the defaults. If the Service Level and Service Percentage are changed, the reports reflect the new values from that time forward, it does not change Service Level statistics for previous calls.

Prompt: This is used for the Create CSQ Prompt step in scripts. Unless you know you need this, leave it blank.

After configuring these values, click Next.

 photo SkillsCriteria.png

Select a a Resource Selection Criteria. Options are:

  • Longest Available. The agent that has the appropriate skills that has been in a ready state the longest. If an agent goes off hook, even without making a call, this timer resets.
  • Most Handled Contacts and Shortest Average Handle Time: UCCX uses the metrics described to attempt to route to the most efficient agents.
  • Most and Least skilled: Route based on the total skill value. Most skilled cause to the callers to be routed to the most experienced agents, while least skilled allows less skilled agents to take more calls. These could be combined, for instance user that enter an account number could be routed to a most skilled or least skilled queue based on service level agreements.
  • Most and Least Skilled By Weight: Weight values are assigned to the skills, and the weighted skill level is calculated on Agent skill * Weight. For instance, if a queue is configured for Widgets at a weight of 1, and French at a weight of 3, an agent with Widgets = 5 and French = 2 has a combined skill level of 11, whereas a user with Widgets = 2 and French = 4 has a combined skill level of 14, and would be preferred in a Most Skilled by Weight queue.
  • Most and Least Skilled By Order: Provides routing based on the order of skills. Skills can be moved up and down the ordered list, the most skilled in the first item will be chosen, in case of a tie, the next skill is evaluated.

In all cases, Longest Idle is used as a tie breaker between agents with the same skill levels. Any time more than one skill is assigned to a queue, and agent needs to meet the minimum competency in all the skills, even in the “By Order” selection criteria.

Next, select a skill from the Select Required Skills list, and click Add. A minimum skill level can be configured for each skill, and if one of the more advanced selection criteria is used, the skills can be assigned a weight or reordered.

Once you have assigned the appropriate skill requirements and selection criteria, click add, or if this was an existing queue, click save.

The next step will be to configure resources (Part 2,) then create an application that queues callers. We will explore those in upcoming posts in the UCCX series.

Leave a Reply

Your email address will not be published. Required fields are marked *

  1. Pingback: Cisco Unified Contact Center Express (UCCX) Initial Setup | Route, Switch, Blog

  2. Pingback: UCCX Automatic Call Distribution (ACD) Part 2 | Route, Switch, Blog

  3. hi Peter,

    I would like to know how we can assign a csq in a pairticular script so that the calls are sent to that csq and reaches and agent coz i have configured a test script, every thing prompts and all are working fine but just not getting transferred to and agent.
    Your help will be really appreciated.
    Abdul Malik.

    • I will be working on a post for this. In the mean time, it is done with the Select Resource step. Give it the name of the CSQ you created, and create some sort of loop in the “queued” branch, i.e. Lable “Queue Loop” > Play Prompt “SP[ICM/ICMMusic_60]” > GoTo “Queue Loop.” Take a look at the “Simple Queuing” template to see how it works.

  4. Pingback: UCCX Automatic Call Distribution (ACD) Part 3 | Route, Switch, Blog

  5. I would like to know benefits of Automatic Call Distribution and Customer service is certainly about making sure your customer’s needs and concerns are properly addressed.

    • Automatic call distribution is the mechanism that allows calls to be queued, and delivered to the next available agent. This allows for calls to be answered as quickly as possible for a given number of agents, and reduce overall handle time. The alternative would be that the caller gets a busy signal, or mush leave a message and have the agents call them back.

      • Peter – how exactly in the script do you achieve the busy signal? is it just by the absence of a queue loop or is there something specific required?

        • What I was referring to is that without a queuing mechanism the callers would receive a busy signal, instead of the call being answered. Are you trying to get something to end up at a busy signal?

  6. I have to CSQ A y B, so there are 6 agents on CSQ A with skill A and 2 agents on CSQ B with skill B, now there’s a trigger 9000 that invokes CSQ A and trigger 9001 that invokes CSQ B.. so how can I do to route a call to CSQ A when all agents are busy on CSQ B? I tried adding skill B over the six agents on CSQ A but when adding skill A on CSQ B it looks like there is no agents online.

    • Did you skill the additional agents below the minimum skill set on the queue? That is the most likely cause of not seeing any agents logged into the queue. Open the CSQ, click next, and verify the minimum skill level is at or below the level assigned to your backup agents.