I agree 100% with your statement about programming Asterisk. It is much more robust and fail safe but also much much more cumbersome to setup in particular for complicated dialplans.
On the subject of the nature of number such as 021 DDD DDDD, this looks like a Chinese number located in Shanghai.
If you call that number from outside China, you will dial +86 21 DDD DDDD.
From inside China you need to drop the int'l country code and add in the prefix 0. Same thing in a lot of European countries.
Can't believe that phone # starting with 0 aren't supported by IVM. Must be something else. Also if the same number CAN be dialed from the softphone....