Migrating corporate PBX1 to PBX2 in different location

Hi all -

We have an old PBX (PBX1) set up in a closet in the corporate office that is 2.4.0 and on very old hardware. As the company has grown, we need to move to a better box and so we’ve built a 2.8.1.4 box on a new server in our co-location (PBX2). The configurations have been migrated successfully, so both boxes have essentially the same configuration (extensions, conferences, voice messages, etc.)

PBX1 is set up so our provider has a primary and secondary termination point for our SIP trunk. The primary is set for PBX1 and I have requested the secondary be pointed at PBX2, for use as its SIP trunk. The idea is to be able to shut down PBX1 and have the calls automatically route to PBX2, for testing.

What I am not sure how to handle is the registration of the multitude of devices that are out there, some set with hardcoded IPs, some with an old DNS entry (“phone1” let’s say) and some with a new entry (“psystem1”) Once we switch it over, all these devices (including softphones ALL OVER the world) will need to be manually reconfigured to point at PBX2, as PBX1 will no longer work.

Is there a way to get both PBX1 and PBX2 to field calls regardless of which of them the device registers to? I’ve been looking into DUNDi, but it seems that’s more designed for directory sharing than mutual routing. Am I wrong? Any suggestions?

Thanks much for any advice!

Matt

You probably already know this, but be sure to set the TTL on your DNS entries down to 5 minutes or less at least a week before making the cut over. Otherwise it could take a week or more for some locations to see the DNS change.

Set up a trunk between the two servers. This way, the devices can register with whichever machine they are connected to. The tricky part is the extension numbers - Dundi probably won’t help you with that a lot, but as the extensions migrate from the old to the new, you could manually enable and disable the extensions on each server.

It’s a long haul and a huge management PITA, but that should allow you to keep both system running for a couple of weeks.

You said:
The issue is that the SIP trunk our DIDs are set up on is currently pointing at PBX1. We cannot have it point at two different PBXs as far as I know (true?) and so regardless of where the phones register, only the phones registered to the PBX where the SIP trunk is pointed to will be able to receive incoming calls.
This might be the source of your confusion.

The inbound call has nothing to do with the destination. You set that when you configure the system. Just because a call comes on PBX1 doesn’t mean that it will be answered by a phone connected to PBX1.

  • You can specify a “custom extension” on PBX1 (as the recipient phones start to connect to PBX2) which points the extension destination to IAX2:[email protected]. Give the new extension number a different first digit (if you extensions are 5XX, use 6XX for example.

  • You can use “Find/Follow” and set up the extensions on PBX1 so that they dial the same extension, but on PBX2. This would be preferable if you are using DID per extension, where each phone gets an inbound number.

  • You can add the same pseudo “custom extensions” for all of the lines on PBX2 and put the numbers (the original extension from PBX1 and the “fake” extension which points at the original extension number, but on PBX2) into ring groups. This would be preferable if you are already using ring groups.

The advantage of all of these is that, once all of the handsets are connected to PBX2, you can pull the plug on PBX1 (since it would have to be set up to just route the calls to the extensions on PBX2) and, if there’s a problem, drop it back in while you sort out the issue. The routing for the extensions is happy and you have a safe fall-back.

Just be sure to set up the phones on PBX2 so that they seamlessly connect “as if” they were on PBX1. This way, no matter where the call comes in, it will route to the phone associated with that extension.

Speak with your ITSP about having a failover IP address for your SIP trunk, and have IP address of PBX2 added as the failover.
Pretty standard in traditional telephony for toll free numbers, and allows you to have a measure of redundancy.

This combined with the DNS change will give you an easy and effective way of cutting over, as you’ll simply need to kill the SIP trunk connection from PBX1’s location, implement your DNS changes, and then check PBX2 to see if the trunk and phones re-registering against it.

If possible, see if you can check and test the re-routing of the SIP trunk independent of the DNS change, so you don’t end up with two massive headaches to deal with in one night.

So your timeline would be something similar to this:

  • Engage your ITSP to add a secondary IP address to your SIP trunk. Make sure to ask them what conditions would trigger a failover, and how long it takes to do so. If you’re not familiar with networking, I’d suggest having one of your network guys sit in on the conversation.
  • Once the ITSP has confirmed the addition, schedule your outage for the SIP trunk only.

Naturally,your internal company policies will dictate the actionable timeframe, if you have to attend CAB meetings, change control, etc.

  • Cut over the SIP trunk from PBX 1 to PBX2 by triggering a failover. This can be done at your end, or if you want, you can engage the ITSP to do it for you, though this will cost and makes the process slower. Once you have seen the trunk register to PBX2, and have conducted your test plan (call national, international, toll free, check restrictions on tarot/sex lines, etc) , cut back over to PBX1.

From past experience, I like to keep a buffer of at least a day between test and operational cutover, so I can catch any problems that might pop up.

-Then , on the appointed night, cut over the SIP trunk first, then action the DNS changes to point all phones to PBX2. Check and test. Check and test.
I say cutover the SIP trunk first, as it’s typically quicker than the DNS change - if there’s a problem, you can cut back over to PBX1 within minutes and back out.

All going well, you should have a couple of days with minor MACs, and after a month or so, you can decommission PBX1.
Naturally, you’ll need to update the SIP trunk with the IP address of PBX2 as the primary IP, when you’re comfortable with everything.

Try and avoid having forwarding from PBX1 to PBX2 - it’s messy and unnecessary for this scenario.

Sorry if it sounds like I’m trying to tell you how to do your job, I just don’t know how familiar you are with all this.

Thanks to everyone for your help with this. Additional context is needed, I can see that I didn’t include all info.

Currently all (or nearly all) phones are set to register to DNS entry phoney.company.com which currently points to the IP for PBX1. We will be changing the IP to point to PBX2 when we cut over.

The issue is that the SIP trunk our DIDs are set up on is currently pointing at PBX1. We cannot have it point at two different PBXs as far as I know (true?) and so regardless of where the phones register, only the phones registered to the PBX where the SIP trunk is pointed to will be able to receive incoming calls.

So, as my company has offices literally around the world, it is a particular pain point to have to transition phones from PBX1 to PBX2 over time as we don’t know when people will be in at what time or what day, and we also don’t want incoming calls to go to voicemail for those times. The method with the least impact seemed to be setting up both servers in a way that it didn’t matter which PBX a phone was registered to, the incoming calls would find them on either one.

Sounds like DUNDi to me, currently, but I’m interested in alternatives as well.

Again, thanks for the suggestions!

I am a little confused as to why you want to distribute the load between the two servers, when you just installed PBX2.

What is the purpose or need for PBX1 at this time? If PBX2 was designed as a replacement, then use it. I think you are complicating issues by wanting to use both systems at once.

If you’re looking to use PBX1 as a backup or high availablilty solution, start here: http://www.freepbx.org/news/2010-05-30/high-availability-backup-and-restore

You will need to get a handle on the configuration aspect of your phones and should standardize on using DNS. It will make future changes much less cumbersome.

If I understand correctly you want to shutdown PBX1. In that case, as the poster above stated use DNS in the future. So instead of your SIP phones being hardwired with IP address of your PBX have them use DNS address of some form like sip.mycompany.com. This way future switch will be painless as you only change the DNS entry and point it to a new server and all your devices will register with the new PBX automatically.
However for now it seems you’ll have to do it manually. I would for the transitional period run both PBX1 and PBX2 joined by an internal IAX2 trunk. In the first phase I would transfer all your trunks to PBX2 so all external calls go though it. Then slowly tranfer extensions one by one from PBX1 to PBX2 as you change configuration on each device/softphone. As stated above use in the configuation DNS pointed to PBX2 so the future upgrade is less painfull.

Alternatively, if you want to do everything at once, you first reconfigure all your devices/softphones from hardwired IP to DNS (pointed to PBX1), and then do the switch by simply shutting down PBX1 and changing DNS entry (to point to PBX2).
This had advantage that if things to masivelly wrong you can revert to previous state by reverting the DNS entry and restarting PBX1.

Hi mattholmes,

2 solution come to mind.

Solution 1 Custom devices?

  • Create a special route for the IAX2 trunk between PBX1 - PBX2, like 66, so when someone dials 66${EXTEN} it wil always dial over the internal trunk.
  • Create a Custom extension on the PBX witch has the incoming SIP trunk, and enter the forwaring extension number with the iax Trunk prefix 66${EXTEN}#

Solution 2, Follow Me

  • Create a special route for the IAX2 trunk between PBX1 - PBX2, like 66, so when someone dials 66${EXTEN} it wil always dial over the internal trunk.
  • Put the extension on the PBX witch has the incoming SIP trunk, and enter a forwaring extension number with the iax Trunk prefix 66${EXTEN}#

Solution 2 has the advantage that when the device registers with the PBX the user can disable the FollwoMe himselfs.

Hope one of above will help,
Richard.

–Edit forgot the trunk route suffix ‘#’

Thanks for the reply!

I have an an IAX2 trunk set up already that allows PBX2 to route outgoing calls through the active SIP trunk on PBX1. So any phones registered on either PBX1 or PBX2 can make calls going out.

My problem is incoming calls. I’m trying to figure out how to get either PBX (PBX1 OR PBX2) to take an incoming call and route it to the proper PBX where a phone is registered.

So, if a user is registered on PBX1 and the SIP trunk is active on PBX2, I want the call to hit PBX2 and PBX2 to say, “oh, PBX1 is the PBX that line 1234 is registered on, here you take it PBX1.” And for that to work.

Or the equivalent…

Is it possible to cluster PBXs?