Cisco CDR Call Termination Cause Codes Explained

Diagram illustrating the breakdown and analysis of Cisco CDR call termination cause codes for voice troubleshooting.

What are Q.850 Cause Codes? Q.850 cause codes are standardized numeric values used in Cisco CDRs to explain why a call ended. They are derived from ISDN signaling and appear in CUCM, SIP, and H.323 environments. These codes help determine whether a call ended normally, failed due to user behavior, or was impacted by network conditions.

  • Cause 16 – Normal call clearing (call ended successfully)
  • Cause 17 – User busy
  • Cause 34 – No circuit/channel available (network issue)

When a call ends in Cisco Unified Communications Manager (CUCM), the system records why the call terminated. These Call Detail Records (CDRs) provide the essential DNA of every voice interaction through numeric cause codes.

This page serves as a technical reference for interpreting Cisco CDR termination codes—specifically origCause, destCause, and OnBehalfOf fields—to help engineers diagnose dropped calls, network congestion, and signaling failures.


What Is a Cisco CDR Cause Code?

A cause code is a numeric value that describes the signaling reason a call ended. Cisco CUCM derives these values from Q.850 / ISDN cause codes, which are also used in SIP and H.323 signaling. Cause codes appear in CDRs as integers and must be translated to understand whether a call ended normally, failed due to network conditions, or was rejected by a device.


origCause vs destCause (Who Ended the Call?)

Cisco records termination reasons from both sides of the call leg. A single call is often split into two "legs"—the originating side and the terminating side.

  • origCause_value → The reason the call cleared on the originating (caller) side.
  • destCause_value → The reason the call cleared on the destination (callee) side.

Differences between these values often indicate mid-call failures, one-sided disconnects or signaling mismatches.

Example: origCause = 16, destCause = 34. This indicates the caller hung up normally, bu the nework failed on the destination side. This comparison is critical for isolating where the failure occurred.


Cisco Q.850 Cause Code Reference Table

Cisco utilizes the ITU-T Q.850 standard for cause codes. These integers must be translated to understand whether a call failed due to network conditions, user behavior, or device rejection.

Code Definition What This Means Troubleshooting Context / Likely Culprit
1 Unallocated Number Invalid number Check dial plan
16 Normal Call Clearing Call ended normally No issue
17 User Busy Line is busy Check user/device
18 No User Responding No answer Check endpoint
21 Call Rejected User declined Check DND/settings
34 No Circuit Available Network congestion Check SIP trunk
38 Network Out of Order Network failure Investigate infrastructure
41 Temporary Failure Transient issue Retry / monitor
47 Resources Unavailable No media resources Check CUCM resources
Pro Tip: Cisco uses proprietary codes for specific features. For example, 393216 often indicates call splits during transfers.

Example: Q.850 Cause Code 16 (Normal Call Clearing)

Cause code 16 indicates that a call was successfully established and then intentionally ended by one of the participants. In other words, the call worked and ended normally.

Common Scenarios:

  • Caller hung up
  • Agent ended the call'
  • Call completed successfully

Troubleshooting Impact: Cause code 16 is NOT a network issue and should not be treated as a failure.

Example: Q.850 Cause Code 17 (User Busy)

Cause code 17 means the destination device was busy and unable to accept the call.

Troubleshooting Impact: This is not a network issue. Check user availability, call waiting settings, or routing logic.

Q.850 Cause Code 34 (No Circuit/Channel Available)

Cause code 34 indicates that the network could not allocate a channel for the call. The network did not have enough capacity to complete the call.

Common Causes:

  • SIP trunk capacity limits
  • Carrier congestion
  • Bandwidth or routing constraints

Troubleshooting Impact: This is a network-related issue and should be investigated at the trunk or provider level.


Interpreting Call Failures Using Cause Codes

Cause codes should never be interpreted in isolation. Engineers must correlate them with call timing and routing fields.

  • Cause 16 + duration > 0 → normal completed call

  • Cause 16 + duration = 0 → abandoned or unanswered call

  • Cause 34 or 41 → network or capacity-related issue

Comparing origCause and destCause helps determine whether the failure occurred before, during, or after call setup.

How to Use Cause Codes to Troubleshoot Call Failures

Cause codes are most valuable when used as part of a structured troubleshooting approach.

Step 1: Identify Who Terminated the Call

  • origCause_value → originating side

  • destCause_value → destination side

Step 2: Interpret the Cause Code

  • 16 → Normal call (not a failure)

  • 17 → User/device issue

  • 34 → Network or carrier issue)

  • 41 → Temporary network condition

Step 3: Eliminate the Network as the Root Cause

  • If cause code = 16: → The network is NOT the issue

  • If cause code = 34: → Investigate SIP trunk capacity, carrier, or routing

Step 4: Correlate with Duration

  • Duration > 0 → Call was connected

  • Duration = 0 → Call failed before connection

This structured approach helps isolate whether the issue is user-related, system-related, or network-related.


Determining Who Triggered the Event?

While cause codes explain why a call ended, the OnBehalfOf fields explain what entity triggered the termination.

  • Code 1 (Station): A user physically ended the call on their device.

  • Code 2 (Trunk/Gateway): The PSTN or SIP Provider terminated the connection.

  • Code 4 (Voicemail): Terminated by Unity Connection (e.g., after leaving a message).

  • Code 12 (Call Manager): Indicates a system action like a transfer, park, or resume.

Used alongside cause codes, this provides a complete picture of call termination.


Cause Codes in Multi-Leg Calls

Multi-Leg Calls (Transfers & Forwarding)

In transfers, hunt groups, and forwarded calls, CUCM generates multiple call legs. Each leg has its own cause codes.

This means:

  • One leg may end with cause 16 (normal clearing)

  • Another leg may end with a failure code

To understand the full call outcome, engineers must correlate records using globalCallID_callId.

Cause Codes in Hunt Groups and Queues

Hunt groups generate multiple CDR rows as CUCM attempts delivery to different members. Cause codes explain why each attempt failed or succeeded.

Common patterns include:

  • Cause 17: Busy or rejected by a specific hunt member.

  • Timeouts: Leading to the next member in the sequence.

  • Cause 16: Recorded once a member finally answers and eventually disconnects.



How to Improve Call Troubleshooting Visibility

Cause codes describe signaling outcomes, not user intent. They do not capture media quality (use CMRs for that) or explain why a user chose to disconnect.

Analyzing cause codes manually can be time-consuming, especially across large environments. And Manually interpreting thousands of records is prone to error.

Advanced analytics platforms can automatically correlate:

  • Call paths

  • Cause codes

  • User experience

Metropolis Corp's Expo XT UC Analytics Software automates this process, normalizing raw CDR data into plain English and providing dashboards for call completion rates and failure reasons. This significantly reduces troubleshooting time and improves visibility.


Related Technical References