Blind Call Transfer Issues

Helllo , I am having issues with my blind transfer when i push #,
When someone calls me , I answer push # , it puts them on hold then says “transfer” , I enter the extension of the person to be transfered to then both partys get disconnected.

I get the following output in the cli

-- Called 1 -- Zap/1-1 is ringing -- Zap/1-1 answered IAX2/101-4 -- Started music on hold, class 'default', on IAX2/101-4 -- <Zap/1-1> Playing 'pbx-transfer' (language 'en') -- Stopped music on hold on IAX2/101-4 -- Transferring IAX2/101-4 to '102' (context incoming) priority 1 -- Hungup 'Zap/1-1' -- Hungup 'IAX2/101-4'

My extenstions.conf is as follows

[globals]
OUTBOUNDTRUNK=Zap/4

[internal]
include => outbound-local
include => office
;exten => 100,1,Dial(SIP/rd)
;exten => 102,1,Dial(SIP/nico)
;exten => 103,1,Dial(SIP/jaco)
;exten => 104,1,Dial(SIP/heinriche)
exten => 500,1,VoiceMailMain( )
;exten => 600,1,Dial(ZAP/1)
exten => 104,1,Dial(ZAP/1,10,rtT)
exten => 104,n,VoiceMail(u104@default)
exten => 104,n,Hangup()




[office]
include => parkedcalls
exten => _XXX,1,Dial(IAX2/${EXTEN},10,r)
exten => _XXX,2,VoiceMail(u${EXTEN}@default)
;exten => _XXX,$[${EXTEN}+1)],VoiceMail(b${EXTEN}@default)

[outbound-local]
exten => _9.,1,Dial(${OUTBOUNDTRUNK}/${EXTEN:1})
exten => _0.,1,Dial(${OUTBOUNDTRUNK}/${EXTEN})

[incoming]
;exten => _X!,1,NoOp(Got a call to ${EXTEN})
;exten => 444,1,Playback(tt-monkeys)
include => internal

[from-pstn]
;exten => s,1,Macro(dialfxs)

;[macro-dialfxs]
exten => s,1,Dial(ZAP/1,15,rtT)
exten => s,n,VoiceMail(u104@default)
exten => s,n,Hangup()

my features.conf is as follows

[general]
parkext => 70            ; What ext. to dial to park
parkpos => 71-79         ; What extensions to park calls on
context => parkedcalls   ; Which context parked calls are in

transferdigittimeout =>3    ; Number of seconds to wait between digits
                                                                          ; when transferring a call (in seconds)
courtesytone = beep                      ;Sound file to play to the parked callerwhen someone dials a parked call
xfersound = beep                  ; to indicate an attended transfer is complete
xferfailsound = beeperr      ; to indicate a failed transfer
featuredigittimeout = 800  ;Max time (ms) between digits for
                                                                        ; feature activation. Default is 500

[featuremap]
automon => *1                ; One Touch Record

Can anyone see what I am doing wrong ? I starts the transfered then just hangs up on both partys