I have a CME 7.1, who is going to replace and old system. The end user is not using any prefix. The extension are 11XX.
I notice that some extension match with the fisrt 4 digits of some PSTN numbers (local calls).
e.g. extension 1115 mach with PSTN local number 1115XXXX
If I set the secondary dial tone I can solve the problem but I would like to know if there is other option so that the end user can dial without any prefix
You have what is called an overlapping dial-plan. I would recommend you pay attention to your dialplan design so that you don't have an overlapping plan, and don't have to worry about thinks like call loops.
This is why most people dial a trunk access code to acces the PSTN. If you have your users dial a 9 in front of the PSTN number, you won't have overlap.
Make your POTS peers look like this, which will match 91115XXX and strip the 9 out:
dial-peer voice 1 pots
The long answer is when you configure CME DNs, it adds an internal dial-peer with $ which is always going to be a more specific match than 1115XXX. You can see these with 'sh telephony-service dial-peer'.
You can verify outbound dial-peer matching order with 'sh dialplan number #'.
Workarounds where you don't have to dial a trunk access code are:
1) Change your internal extensions so they don't start with the numbers that your POTS peers start with.
2) Configure 'preference 2' under all of your CME DNs.
3) Change the dial-peer huntiong algorithm with 'dial-peer hunt 1'. I wouldn't recommend this unless you understand dial-peer matching fundamentals very well.