When calls go astray or reports indicate routing inefficiencies, a deep dive into Cisco Call Detail Records (CDRs) becomes essential. Cisco Hunt Groups allow incoming calls to be distributed across multiple destinations using sequential, circular, or broadcast logic.
To effectively trace a call, engineers must understand that CUCM produces a granular, chronological log where each routing attempt is represented by a separate call leg. This guide explains how to reconstruct these call paths to optimize performance and troubleshoot routing anomalies.
Each attempt to deliver a call to a hunt group member is recorded as a separate call leg. CUCM generates a new CDR row whenever it tries a different destination. A single inbound call to a hunt pilot may create:
To reconstruct the journey, you must isolate specific fields that act as breadcrumbs:
callingPartyNumber: The originator of the call.originalCalledPartyNumber: The very first number dialed (e.g., the Main Hunt Pilot DN).finalCalledPartyNumber: Where the call ultimately connected or was last presented.pkid: A unique UUID for each specific CDR record/leg.globalCallID_callId: The critical identifier used to "stitch" multiple rows into a single interaction.
If originalCalledPartyNumber matches the hunt pilot DN, the call entered the hunt group. When CUCM attempts delivery to a member, the finalCalledPartyNumber changes to that specific member’s directory number.
As a call moves through a Hunt Group (e.g., from pilot to member 1, then member 2 due to no answer), the redirection fields update to show the sequence.
lastRedirectDn: Indicates the DN of the entity that performed the last redirection. This reveals the sequence of members involved.origCalledPartyRedirectOnBehalfOf: Specifies the feature (e.g., Hunt Group algorithm) that caused the redirection.lastRedirectRedirectReason: Explains why the hop occurred (e.g., No Answer, Busy, or Unconditional Forwarding).
Each hunt attempt ends with a destCause_value that explains why CUCM moved to the next member or stopped:
Detailed explanation of Cisco CDR cause codes →
While CUCM CDRs don't provide a "Time in Queue" field for hunt groups, you can infer these KPIs through manual analysis:
By examining the dateTimeOrigination (start of leg) and dateTimeConnect (connection time) for sequential redirected legs, you can calculate the total duration a caller spent ringing different members before being answered.
An abandoned call occurs when a caller hangs up while the call is being presented. Look for a destCause_value indicating the originator terminated the call before dateTimeConnect has a value.
It is critical to remember that Hunt Groups are not full contact center queues (like UCCX):
globalCallID_callId.originalCalledPartyNumber to confirm entry.lastRedirectDn entries to see the member sequence.RedirectReason at each hop to find why members were skipped.lastRedirectDnPartition and finalCalledPartyNumberPartition are correctly configured, as incorrect partitions often cause "ghost" failures.Learn how to stitch multiple transfer calls in Cisco CDRs →
Manually "stitching" globalCallID_callId rows is labor-intensive.
Expo XT visualizes these call flows automatically, highlighting abandoned calls and identifying inefficient routing patterns across your entire CUCM cluster.