Caller id from pbx not passed to sip phone on asterisk


My current setup with asterisk is the following:
PBX -> Cisco 2801 connected with two ISDN PRI lines on the pbx -> Asterisk-1.4.2

There is a strange problem when incoming calls from pbx pass through asterisk to any sip phone registered on asterisk. The dialplan for a single sip phone is :
exten => 2001,1,Answer()
exten => 2001,2,Set(${CALLERID(all)}="${CALLERID(number)}")
exten => 2001,3,Noop(${CALLERID(number)})
exten => 2001,4,Dial(SIP/bill)

The problem is that even though noop command prints the right caller id number the sip phone gets a callerid=Unknown. I have tested with two softphones x-lite & sjphone but the problem remains. It is strange though that when I change the dialplan just by not using dial but queue() command, calling a queue which has the same softphone then the softphone gets the right caller id !!!

Could you provide me any workarounds?
Thx in advance.

Is calling the queue a workaround?

Usually you shouldn’t need to set caller ID before Dial. What happens if you take that away?