Some problems with patterns

In one context I have some test numbers:

exten => _Z.,1,GoToIf($["${SIPDOMAIN}" != “blacksun”]?external)
exten => _Z.,n(external),AGI(call-log.agi)
exten => _Z.,n,Dial(SIP/${EXTEN}@${SIPDOMAIN})
exten => _Z.,n,Hangup()

exten => 600,1,Answer()
exten => 600,n,Wait(1)
exten => 600,n,Playback(demo-echotest) ; Let them know what
exten => 600,n,Echo() ; Do the echo test
exten => 600,n,Playback(demo-echodone) ; Let them know it
exten => 600,n,Hangup()

blacksun is my server’s FQD

If I dial 600@blacksun it plays my echo test. A friend set up a similar config on his server but when I dial 600@hisdomain it stills falls through to mine.

According to what I’ve read _Z. should be any number starting with 1-9 and the GotoIf should go to my external branch, but it isn’t. If I change the _Z. to 600 it works so why isn’t _Z. working for 600?

Exact matches take precedense over pattern matches.

do a dialplan show from the cli. it shows the order that the rules will be examined.