A little difficult: transfer work, but only if sip or iax channel is involved

I had successfully set the transfer (normal or 3-way conference style) but is working only if a sip or iax2 channel is involved!
This is the situation
PHONE-A: isdn phone Swatch connected to b410p Digium
PHONE-B: analog-phone Panasonic connected to a400p OpenVox
PHONE-C: iax2 connected linphone
PHONE-D: sip hardphone Grandstream

If I call from phone-a to phone-c and then I press *1 to transfer call, i compose the number and works perfectly
the same if I call from phone-c to phone-a or phone-b
the same if I call from phone-b to phone-c

The problem start if I try to start a call between the dahdi phones, which are Phone-a and phone-b.
I call from phone-a to phone-b(or viceversa), i press *1, i compose the number and…
after playing the m.o.h nothing happen.
The cli report this
What can it be?

Those are my configuration files stripped from comments

features.conf

[general]
xferfailsound = beeperr        ; to indicate a failed transfer
pickupfailsound = beeperr      ; to indicate that the pickup failed (default: no sound)
mixmonitor feature failed
atxfernoanswertimeout = 15     
atxferdropcall = no           
atxferloopdelay = 10     
atxfercallbackretries = 2 
transferdialattempts = 3    
atxferabort = *2              
atxfercomplete = *3        
atxferthreeway = *4        
atxferswap = *5             
[featuremap]
blindxfer => #1            
disconnect => *0       
atxfer => *1                
parkcall => #72     
[applicationmap]

chan_dahdi.conf

[trunkgroups]
[channels]
language=it
context=from-dahdi
switchtype=euroisdn
overlapdial=yes
signalling=bri_net_ptmp
usecallerid=yes
hidecallerid=no
hidecalleridname=no
callwaiting=yes
usecallingpres=yes
callwaitingcallerid=yes
threewaycalling=yes
transfer=no ;i have tried with transfer=yes, same problem
canpark=yes
cancallforward=yes
callreturn=yes
context=local
echocancel=yes
channel => 1,2,4,5,7,8,10,11
echocancelwhenbridged=yes
group=1
callgroup=1
pickupgroup=1
immediate=no
busydetect=yes
busycount=6
pulsedial=yes
#include /etc/asterisk/dahdi-channels.conf

dahdi_channels.conf


group=0,11
context=from-dahdi
switchtype = euroisdn
signalling = bri_net_ptmp
channel => 1-2
group=0,12
context=from-dahdi
switchtype = euroisdn
signalling = bri_net_ptmp
channel => 4-5
callgroup=1
pickupgroup=1
group=0,13
context=from-dahdi
switchtype = euroisdn
signalling = bri_net_ptmp
channel => 7-8
group=0,14
context=from-dahdi
switchtype = euroisdn
signalling = bri_net_ptmp
channel => 10-11
signalling=fxo_ks
callerid="Telefono analogico 1 <1007>"
mailbox=1007
group=0,15
context=from-dahdi
channel => 13
callgroup=1
pickupgroup=1
signalling=fxo_ks
callerid="Telefono analogico 2 <1008>"
mailbox=1008
group=0,16
context=from-dahdi
channel => 14
callgroup=1
pickupgroup=1
signalling=fxs_ks
callerid=asreceived
group=0,17
context=from-pstn
channel => 16

Solution found, the problem was on gosub function in extensions.conf