FYI Change Extension Number

krzykat

Telecom Strategist
Joined
Aug 2, 2008
Messages
3,145
Reaction score
1,235
Is there an easy way to change an extension number? I have an several extensions labeled 5615551212, 5615551213, etc. and want to change them to be 15615551212, etc.

Can I just go into the SQL database and change the extension name there and then make another mod in FreePBX, then do apply and will it push the change to all the proper places?
 

wardmundy

Nerd Uno
Joined
Oct 12, 2007
Messages
19,168
Reaction score
5,199
I wouldn't try it if I were you. The problem is that FreePBX uses the extension number as a key in numerous cross-linked tables. That's probably why you can't even do it within FreePBX. Here's an example from just one table...

BNtEOSHCQAErVPY.jpg:large
 

krzykat

Telecom Strategist
Joined
Aug 2, 2008
Messages
3,145
Reaction score
1,235
Yeah :( ... I was thinking the same, but wasn't sure which was the "KEY" and thought that maybe just changing that one and then forcing an "apply" that it would rebuild ... but this is a live system with 100 extensions+ so ... I'll just do it the long way of adding the new one, changing their device, then deleting the old one.

Stick to standards on the front side and I wouldn't have had this problem :crazy:
 
Joined
Nov 14, 2008
Messages
1,398
Reaction score
320
Clone the system or rig up a test system and try it!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! We love a good success story or even better a total mega-wreck crash and burn story..... :oops:
 

wardmundy

Nerd Uno
Joined
Oct 12, 2007
Messages
19,168
Reaction score
5,199
Just added a 90210 extension on a clean FreePBX 2.10 system and here's what you get in the MySQL tables:

asterisk.devices:
BNthRECCcAAug9S.jpg:large



asterisk.users:
BNtibl_CcAAXSwv.jpg:large



asterisk.sip:
BNtjIzRCUAAlgVJ.jpg:large



All of the above gets populated in /etc/asterisk like this:
Code:
extensions_additional.conf:exten => *8490210,1,Goto(app-campon-toggle,*84,1)
extensions_additional.conf:exten => *8490210,hint,ccss:SIP/90210
extensions_additional.conf:exten => *90210,1,Macro(vm,90210,DIRECTDIAL,${IVR_RETVM})
extensions_additional.conf:exten => *90210,n,Goto(vmret,1)
extensions_additional.conf:exten => 90210,1,Set(__RINGTIMER=${IF($[${DB(AMPUSER/90210/ringtimer)} > 0]?${DB(AMPUSER/90210/ringtimer)}:${RINGTIMER_DEFAULT})})
extensions_additional.conf:exten => 90210,n,Macro(exten-vm,90210,90210,0,0,0)
extensions_additional.conf:exten => 90210,n(dest),Set(__PICKUPMARK=)
extensions_additional.conf:exten => 90210,n,Macro(vm,90210,${DIALSTATUS},${IVR_RETVM})
extensions_additional.conf:exten => 90210,n,Goto(vmret,1)
extensions_additional.conf:exten => 90210,hint,SIP/90210&Custom:DND90210
extensions_additional.conf:exten => vmb90210,1,Macro(vm,90210,BUSY,${IVR_RETVM})
extensions_additional.conf:exten => vmb90210,n,Goto(vmret,1)
extensions_additional.conf:exten => vmu90210,1,Macro(vm,90210,NOANSWER,${IVR_RETVM})
extensions_additional.conf:exten => vmu90210,n,Goto(vmret,1)
extensions_additional.conf:exten => vms90210,1,Macro(vm,90210,NOMESSAGE,${IVR_RETVM})
extensions_additional.conf:exten => vms90210,n,Goto(vmret,1)
extensions_additional.conf:exten => *7690210,1,Goto(app-dnd-toggle,*76,1)
extensions_additional.conf:exten => *7690210,hint,Custom:DEVDND90210
extensions_additional.conf:exten => *74090210,1,Goto(app-cf-toggle,*740,1)
extensions_additional.conf:exten => *74090210,hint,Custom:DEVCF90210
extensions_additional.conf:exten => _*74090210.,1,Set(toext=${EXTEN:9})
extensions_additional.conf:exten => _*74090210.,n,Goto(app-cf-toggle,*740,setdirect)
extensions_additional.conf:exten => *2190210,1,Goto(app-fmf-toggle,*21,1)
extensions_additional.conf:exten => *2190210,hint,Custom:FOLLOWME90210
extensions_additional.conf:exten => *8090210,1,Goto(ext-intercom,${EXTEN},1)
extensions_additional.conf:exten => *90210,1,Macro(blkvm-clr,)
extensions_additional.conf:exten => *90210,n,Set(__NODEST=)
extensions_additional.conf:exten => *90210,n,Macro(vm,90210,DIRECTDIAL,${IVR_RETVM})
extensions_additional.conf:exten => *90210,n,GotoIf($["${IVR_RETVM}" = "RETURN" & "${IVR_CONTEXT}" != ""]?ext-local,vmret,playret)
extensions_additional.conf:exten => 90210,1,Macro(blkvm-clr,)
extensions_additional.conf:exten => 90210,n,Set(__NODEST=)
extensions_additional.conf:exten => 90210,n,Goto(from-did-direct,90210,1)
sip_additional.conf:[90210]
sip_additional.conf:dial=SIP/90210
sip_additional.conf:mailbox=90210@default
sip_additional.conf:callerid=Test <90210>
voicemail.conf:90210 => 1234,Test,[email protected],,attach=no|saycid=no|envelope=no|delete=no

And then there's AstDB which shows the following entries for 90210:
Code:
/AMPUSER/90210/answermode                        : disabled           
/AMPUSER/90210/ccss/cc_agent_policy              : generic             
/AMPUSER/90210/ccss/cc_offer_timer                : 30                 
/AMPUSER/90210/cfringtimer                        : 0                   
/AMPUSER/90210/cidname                            : Test               
/AMPUSER/90210/cidnum                            : 90210               
/AMPUSER/90210/concurrency_limit                  : 0                   
/AMPUSER/90210/device                            : 90210               
/AMPUSER/90210/dialopts                          :                     
/AMPUSER/90210/noanswer                          :                     
/AMPUSER/90210/outboundcid                        :                     
/AMPUSER/90210/password                          :                     
/AMPUSER/90210/queues/qnostate                    : usestate           
/AMPUSER/90210/recording                          :                     
/AMPUSER/90210/recording/in/external              : dontcare           
/AMPUSER/90210/recording/in/internal              : dontcare           
/AMPUSER/90210/recording/ondemand                : disabled           
/AMPUSER/90210/recording/out/external            : dontcare           
/AMPUSER/90210/recording/out/internal            : dontcare           
/AMPUSER/90210/recording/priority                : 10                 
/AMPUSER/90210/ringtimer                          : 0                   
/AMPUSER/90210/voicemail                          : default             
/CW/90210                                        : ENABLED             
/DEVICE/90210/default_user                        : 90210               
/DEVICE/90210/dial                                : SIP/90210           
/DEVICE/90210/type                                : fixed               
/DEVICE/90210/user                                : 90210

So... you might could change it. But it would be hairy. :death:
 

wardmundy

Nerd Uno
Joined
Oct 12, 2007
Messages
19,168
Reaction score
5,199
Just for fun, I then shut down Asterisk and went into MySQL and replaced every occurrence of 90210 with 98199. I then restarted Asterisk, edited the new 98199 extension and saved it to force a reload of FreePBX. And here's what I got in the Asterisk DB, i.e. a mess:
Code:
/AMPUSER/90210/answermode                        : disabled   
/AMPUSER/90210/ccss/cc_agent_policy              : generic     
/AMPUSER/90210/ccss/cc_offer_timer                : 30         
/AMPUSER/90210/cfringtimer                        : 0           
/AMPUSER/90210/cidname                            : Test       
/AMPUSER/90210/cidnum                            : 90210       
/AMPUSER/90210/concurrency_limit                  : 0           
/AMPUSER/90210/device                            : 90210       
/AMPUSER/90210/dialopts                          :             
/AMPUSER/90210/noanswer                          :             
/AMPUSER/90210/outboundcid                        :             
/AMPUSER/90210/password                          :             
/AMPUSER/90210/queues/qnostate                    : usestate   
/AMPUSER/90210/recording                          :             
/AMPUSER/90210/recording/in/external              : dontcare   
/AMPUSER/90210/recording/in/internal              : dontcare   
/AMPUSER/90210/recording/ondemand                : disabled   
/AMPUSER/90210/recording/out/external            : dontcare   
/AMPUSER/90210/recording/out/internal            : dontcare   
/AMPUSER/90210/recording/priority                : 10         
/AMPUSER/90210/ringtimer                          : 0           
/AMPUSER/90210/voicemail                          : default     
/AMPUSER/98199/answermode                        : disabled   
/AMPUSER/98199/ccss/cc_agent_policy              : generic     
/AMPUSER/98199/ccss/cc_offer_timer                : 30         
/AMPUSER/98199/cfringtimer                        : 0           
/AMPUSER/98199/cidname                            : Test       
/AMPUSER/98199/cidnum                            : 98199       
/AMPUSER/98199/concurrency_limit                  : 0           
/AMPUSER/98199/device                            : 98199       
/AMPUSER/98199/noanswer                          :             
/AMPUSER/98199/outboundcid                        :             
/AMPUSER/98199/password                          :             
/AMPUSER/98199/queues/qnostate                    : usestate   
/AMPUSER/98199/recording                          :             
/AMPUSER/98199/recording/in/external              : dontcare   
/AMPUSER/98199/recording/in/internal              : dontcare   
/AMPUSER/98199/recording/ondemand                : disabled   
/AMPUSER/98199/recording/out/external            : dontcare   
/AMPUSER/98199/recording/out/internal            : dontcare   
/AMPUSER/98199/recording/priority                : 0           
/AMPUSER/98199/ringtimer                          : 0           
/AMPUSER/98199/voicemail                          : novm       
/CW/90210                                        : ENABLED     
/DEVICE/90210/default_user                        : 90210       
/DEVICE/90210/dial                                : SIP/90210   
/DEVICE/90210/type                                : fixed       
/DEVICE/90210/user                                : 90210       
/DEVICE/98199/default_user                        : 98199       
/DEVICE/98199/dial                                : SIP/98199   
/DEVICE/98199/type                                : fixed       
/DEVICE/98199/user                                : 98199

So... using the Asterisk CLI, I issued the following commands:
Code:
database deltree DEVICE/90210
database deltree AMPUSER/90210
database deltree DEVICE/98199
database deltree AMPUSER/98199
database deltree CW/90210

On our particular testbed, this basically left the AstDB with nothing other than the dundi entries. I then restarted Asterisk and went back into FreePBX and resaved extension 98199. Then here's what I got in the Asterisk DB which looks clean to me:
Code:
/AMPUSER/98199/answermode                        : disabled     
/AMPUSER/98199/ccss/cc_agent_policy              : generic       
/AMPUSER/98199/ccss/cc_offer_timer                : 30           
/AMPUSER/98199/cfringtimer                        : 0             
/AMPUSER/98199/cidname                            : Test         
/AMPUSER/98199/cidnum                            : 98199         
/AMPUSER/98199/concurrency_limit                  : 0             
/AMPUSER/98199/device                            : 98199         
/AMPUSER/98199/noanswer                          :               
/AMPUSER/98199/outboundcid                        :               
/AMPUSER/98199/password                          :               
/AMPUSER/98199/queues/qnostate                    : usestate     
/AMPUSER/98199/recording                          :               
/AMPUSER/98199/recording/in/external              : dontcare     
/AMPUSER/98199/recording/in/internal              : dontcare     
/AMPUSER/98199/recording/ondemand                : disabled     
/AMPUSER/98199/recording/out/external            : dontcare     
/AMPUSER/98199/recording/out/internal            : dontcare     
/AMPUSER/98199/recording/priority                : 0             
/AMPUSER/98199/ringtimer                          : 0             
/AMPUSER/98199/voicemail                          : novm         
/DEVICE/98199/default_user                        : 98199         
/DEVICE/98199/dial                                : SIP/98199     
/DEVICE/98199/type                                : fixed         
/DEVICE/98199/user                                : 98199

This left everything looking OK except for CW entry which was gone and would need to be manually reentered (or you could adjust the existing entry rather than deleting the CW tree)
Code:
/CW/98199                                        : ENABLED

AND the /etc/asterisk/voicemail.conf entry was unchanged:
Code:
voicemail.conf:90210 => 1234,Test,[email protected],,attach=no|saycid=no|envelope=no|delete=no

AND the voicemail directory structure was still a mess:
  1. /var/spool/asterisk/voicemail/device now had a dangling symlink to 90210
  2. /var/spool/asterisk/voicemail/default had blown away the 90210 directory tree and not added 98199

This could all be manually fixed (maybe) and Asterisk restarted once again, and all should might be well. Didn't try actually making a call in or out. Thought I'd save that until after I've had a few beers. :gunsmilie:
 

krzykat

Telecom Strategist
Joined
Aug 2, 2008
Messages
3,145
Reaction score
1,235
Thanks Ward ... that answers it. Don't do it :)
 

jeff.h

Guru
Joined
Dec 1, 2010
Messages
502
Reaction score
71
So... this very question was posed to me today. One of my sites got a new concurrent range of DIDs (previously just had one inbound number) and now they want all their extensions to match the last 4 of each person's DID. No problem, I can create new extensions and reprogram all the phones, but no one wants to re-record their VM greetings.

Is there a way to move the VM greeting and saved messages from one extension to another? Without ending up :banghead:
 

randy7376

Defnyddiwr Gweithredol
Joined
Sep 29, 2010
Messages
864
Reaction score
144
So... this very question was posed to me today. One of my sites got a new concurrent range of DIDs (previously just had one inbound number) and now they want all their extensions to match the last 4 of each person's DID. No problem, I can create new extensions and reprogram all the phones, but no one wants to re-record their VM greetings.

Is there a way to move the VM greeting and saved messages from one extension to another? Without ending up :banghead:

jeff.h

Sure. You can rsync the voicemail from the old extension to the new one and it should be fine. The only thing to note is that the message information file (msgxxxx.txt) will contain the original mailbox you copied from (see originalmailbox=X in the file) and that all of the copied messages will show up as new messages.

I haven't encountered any issues doing this, but you may want to test it out before doing it en-mass just to be sure.
 

jeff.h

Guru
Joined
Dec 1, 2010
Messages
502
Reaction score
71
jeff.h

Sure. You can rsync the voicemail from the old extension to the new one and it should be fine. The only thing to note is that the message information file (msgxxxx.txt) will contain the original mailbox you copied from (see originalmailbox=X in the file) and that all of the copied messages will show up as new messages.

I haven't encountered any issues doing this, but you may want to test it out before doing it en-mass just to be sure.



Will that bring the greeting over as well?
 

randy7376

Defnyddiwr Gweithredol
Joined
Sep 29, 2010
Messages
864
Reaction score
144
jeff.h

I'm not sure how familiar you are with rsync, but yes, it will bring the greeting over. Essentially, you can do something like this for each extension:

Code:
 rsync -av --progress /var/spool/asterisk/voicemail/default/123/ /var/spool/asterisk/voicemail/default/12345

Where 123 would be the old extension and 12345 would be the new extension. This will copy everything from the top of 123 on down over to 12345 with the same filenames and directory structure.
 

jeff.h

Guru
Joined
Dec 1, 2010
Messages
502
Reaction score
71
OK. Thanks for that! I've never used rsync before. I will give that a try.
 

Members online

No members online now.

Forum statistics

Threads
25,781
Messages
167,507
Members
19,201
Latest member
troutpocket
Get 3CX - Absolutely Free!

Link up your team and customers Phone System Live Chat Video Conferencing

Hosted or Self-managed. Up to 10 users free forever. No credit card. Try risk free.

3CX
A 3CX Account with that email already exists. You will be redirected to the Customer Portal to sign in or reset your password if you've forgotten it.
Top