Showing results for 
Search instead for 
Did you mean: 
Walkthrough Wednesdays
Slavik Bialik
Rising star

Cisco CVP Transfer not working - 488 Not Acceptable Here

Hi all,

I'm trying to use the "Transfer" element in CVP Call Studio but no luck.

What happens is that when the application is running is that the VVB triggers a SIP REFER to CVP, but CVP right away returns "488 Not Acceptable Here". No idea why.


Here is the SIP REFER message sent by the VVB:

REFER sip:+12124545781@;transport=tcp SIP/2.0
Via: SIP/2.0/TCP;branch=z9hG4bKIDM9ZWqCy+zTKBrBgg3i.w~~36
Max-Forwards: 70
To: <sip:+12124545781@>;tag=ds5218fac5
From: <sip:77777777771064@vvbs-a.domain.lab;transport=tcp>;tag=dsa3bdfa52
Call-ID: BD719A632BF611EABBCDAD6DF99E73FD-15779013322471@
Content-Length: 0
Contact: <sip:77777777771064@;transport=tcp>
Referred-By: <sip:7777777777*@>
Refer-To: <sip:2500@cucms.domain.lab:5060>
User-Agent: Cisco-VVB-12.0
Session-ID: 623F969B3F57D7800000AC971000016F;remote=ddaff7d817425515a3ff7eaded5d7d0a

I tried various ways to configure this element, but no luck. Here's the current configurations of this element:

  • Transfer Destination: sip:2500@cucms.domain.lab     (I also tried IP instead of domain, and tried just the DN itself)
  • Destination Type: sip
  • Connect Timeout: 20s
  • Max Transfer Time: 30s
  • Bridge: false   (currently false, but at the end when the simple transfer will work I want it to be 'true').

Anyone had this issue before? I can't see any reason why CVP won't accept REFERs.




Hi Slavik,

Please look at the following link:

Chapter "VoiceVXML Transfer" from the CVP documentation describes the transfer options available in CVP deployments. As far as I remember Transfer Element can only be used in CVP standalone deployments but not in ICM deployments. So, in my opinion, you are try to use an unsupported option. This seems to be confirmed by this doc.


If you are using CVP with UCCP/PCCE I think that what you can do is:

1. Pass the transfer word to ICM script via user.microapp.FromExtVXML table (as one of the elements - index 0)

2. Pass the transfer number to ICM script via user.microapp.FromExtVXML table (as one of the elements - index 1)

3. In ICM put if block that would check the if the value of the user.microapp.FromExtVXML[0] against transfer word

4. If the call should be transferred - send it to the label node (set to "dynamic label" with the value set to user.microapp.FromExtVXML[1]). At this point, you can use any  type of the transfer supported by ICM (described in the mentioned document)
5. Add the dialed number to CVP config to let CVP know where to transfer the call (to SIP server group cucms.domain.lab).

Web:, Webex Teams: chat


Thanks for the reply.

So it is probably because I'm not using a standalone CVP environment.


Regarding the steps, I don't really understand the 2 first steps. Why are you setting the FromExtVXML variable and not the ToExtVXML? Do we need to use the Run External Script node in order to send it to CVP or there's something else here?


FromExtVXML and ToExtVXML are two variables that you use to pass the parameters between ICM Script and CVP: FromExtVXML is used to pass the parameters from CVP to ICM script, ToExtVXML is used to pass the value from ICM Script to CVP.
if the logic that selects the transfer number is deployed on the CVP side then you will need to pass it back to ICM script. Step 1 and 2 show the way how it can be achieved.

If you have a static number, you can focus on the ICM Script.

Web:, Webex Teams: chat

Ahhhh I understand. But no, there's no logic of selecting the transfer number on CVP itself. What I initially tried to achieve is using the "Transfer" node on CVP Call Studio in order to achieve the transfer. But as you said this is not supported when you're not using CVP as a standalone. So the only way is using "label" node on ICM. Which is almost perfect for me, because when using 'label' you cannot know when the call is being answered. When the call is answered the script is done and you cannot make any action when the Call.RequeryStatus == 0, only when it is not 0. And that's exactly what I need, to detect when the call is answered in order to make some action.

OK, I think that I understand the solution I need. What I never paid attention is when using label node and checking the "Enable target requery" it lets you to continue the script from the X of the node, there you can check the various requery statuses via the Call.RequeryStatus ICM variable, which is what I wanted to achieve using the CVP Transfer that also can know what happened with the call, if for example it experienced busy or no answer and etc.

To be honest, I've never used the requery variable Call.RequeryStatus to check the status of the transfer within the label node but it's worth to try. ( here are supported requery statuses:

In the deployments I did, I've used this option to define alternative routing for the call. Here is the example: the first label tries to perform a transfer using internal (on-net) infrastructure. If the transfer fails then the system tries to make this transfer via PSTN (of-net) infrastructure. If that fails, the customer receives the prompt to leave a request for contact.

And one last thing. The requery will not properly work if you will not define the requery option with timeout on the CVP Dialed numbers configuration. This is the mandatory thing that you need to to


Web:, Webex Teams: chat

Yes, all of the above is already configured on my environment. Thanks!
The Call.RequeryStatus is nice, but can only get you the status when something happened with a call that is NOT answer state. Anyway, as stated on my second comment here, the main issue of mine with 'label' node is not being able to make any action if used 'label' node and the call was answered.
VIP Collaborator

What versions are you running? As mentioned by the other poster, the bridge transfer option using CVP in comprehensive for instance doesn't appear to be fully implemented until version 12.


I'm currently on version 12.0.

Content for Community-Ad

Spotlight Awards 2021