Solution sharing: My small business phone system, 4 lines, 6 extensions, and costs less than £10 per month

plus call costs of about 1p/minute

Short version: Get SIP trunks from Dial9.co.uk**, get a small Virtual Machine running at DigitalOcean*, install IncrediblePBX, connect to your own phones.

Where we start from:

BT Openreach are turning off analog copper phone lines and moving everyone to an all IP (Internet Protocol) system. It’s called SOGeA (Single Order Generic Ethernet Address). This is a good thing, it’s progress. It means as a network they will only provide an internet connection (think broadband adsl vdsl etc) and it is up to your ISP and/or phone service provider to turn that digital service into an analog phone line for your old style phones to plug into. It means no analog phone line rental just so you have VDSL internet.

At home, we haven’t had an analogue phone service for several years. We never plugged a phone in when we bought the house and use our mobile phones for all our calls.

At work we still use the traditional approach of ‘desk phones’, via a ‘PBX’ (Private Branch Exchange), multiple incoming/outgoing phone lines, group answerphone, the ability to transfer calls to a colleague.

For us that was 1 incoming phone line and all of our outgoing calls went via SIP/VoIP. Over time, Our PBX had simplified from an Avaya IP Office 500 (around £2,000 iirc back when we had 4 analog lines) to a Siemens Gigaset Go-100 dect cordless base station.

The gigaset could handle 3 calls at a time (2 VOIP + 1 analog), up to 6 cordless extensions and it had a built in answerphone. We could easily transfer calls between each other and it cost us a few hundred pounds several years ago. Occasionally I’ve replaced a cordless handset. It was simple and worked well.

Back when I implemented switched to the gigaset VOIP internet calls weren’t as reliable as analog phone lines (and we had to have the analog line for broadband anway) so I kept the analog line but made our outgoing calls prefer to take a VOIP line. For the last few years internet call quality and reliability has been equal to analog lines. Calls via our SIP/VOIP provider were cheaper than our phone service/internet provider too.

This year our business phone line/VDSL internet line provider decided they were not going to offer analog phone service at all and instead they suggested we move to a hosted IP phone system. I understand their reasoning. From their view we could have 1 number with 1 extension for £11/month, the same as the line rental. However from my view if I’m moving away from analog lines I’d rather have more available incoming lines. Their system equates 1 line to 1 extension, so even connecting their line to our PBX I could could only have 1 call at a time with them. To have more outgoing calls I’d have to rent more extensions. If I want up to 4 of us to be able to use the phone at the same time, then that’s £44/month.

Can I get my phone lines for a lower cost?

Yes, and after a learning curve it was actually quite simple.

Firstly, let’s talk about the idea of charge for phones ‘per line’.

When there was a physical line it made sense, but for an SIP/VoIP system adding extensions is almost zero extra cost.

This is like email addresses, as I have my own domain name (steveroot.co.uk) I can have millions of email addresses for no extra cost. Cost is really defined by the server hardware capacity. A thousand user accounts sending 1 email a day uses less resources than 1 user account sending 10,000 emails a day.

Why is an SIP/VoIP phone line any different? In our case as a small business most of the day there are zero phone calls in progress, and occasionally there are 3 calls in progress. So my goal was to find a provider that didn’t charge per line.

Most of the providers seem to equate line with a user extension. Maybe that would make sense if you want to rent your phone handsets from your supplier, but I buy hardware as it’s cheaper in the long term. I knew there would be less expensive ways to do this and I just had to find them.

Secondly I’m comfortable running servers

Since we’ve had fibre broadband from Trooli I’ve been able to host public web servers in my office on IPv6 addresses. This is important as hosting a public server behind an IPv4 NAT is painful.

My first approach failed

I thought I could use Twilio

Twilio is an IT company that provide a “communication platform as a service”. They do many things but their platform is built around enabling developers to write software that connects to their platform to do something useful. For example, you might write a booking system web app and have it send SMS messages to remind your clients of the date and time. You can also use it to set up a phone calls and to do that it uses standard SIP and VoIP protocols. I can make a web app that makes a phone call between my desk phone and your phone. I can also record that phone call, transcribe that phone call, update another piece of software with a record of that call and many, many more things.

They offer a flexible SIP service and that should have been straight forward but I strugged to get our Simens Gigaset to connect to it. I’m sure this was due to errors on my part. I know I have had connections to this before when we had FreePBX (open source phone system software, a traditional PBX) running

I thought part of the issue was my Siemens Gigaset system, so I set up an instance of FreePBX on a local server and tried to connect to Twillio but I still had trouble.

Then I tried IncrediblePBX , a fork of FreePBX and one I now find a lot easier to use that FreePBX. IncrediblePBX is open source and much of the effort and work behind it is by Ward Munday. He has shared regular, excellent tutorials and guides at his site https://nerdvittles.com/ and is also very active in the forums replying to user questions.

FreePBX is nice but it has a lot of proprietary modules you can buy. That would make sense in a larger business perhaps but for me I just need basic phone system functions and those modules were muddying the waters, especially when looking for deployment instructions and guides. IncrediblePBX (and it’s forums and guides) also lead me to learn that FreePBX and IncrediblePBX have poor support for IPv6. Not enough people are using it I guess, so no one has volunteered time to fix all the internal code to make it work reliably. My plans to self host a PBX on IPv6 in my office ended here.

Also I still didn’t get IncrediblePBX to work with Twilio, so I looked for another solution

Solution – Use Dial9.co.uk** for SIP trunks

I had looked at Dial9 before. As well as regular phone system provision I realised they offered SIP trunks too. My problem was their SIP trunks only work with IPv4, but now I was forced to IPv4 that was no longer important.

SIP trunks from Dial9

IPv4 (Internet Protocol Version 4) is the numeric addressing system that networks use to know where to send internet traffic. EG: www.steveroot.co.uk on a server at 178.128.42.210. DNS (Domain Name System) turns steveroot.co.uk into 178.128.42.210 for your computer. If you visit 178.128.42.210 you wont see this web site, you’ll see one of my other sites – probably a holding page. This is because my web server has 1 IPv4 address so all of my web sites on that server share it. When your browser asks for steveroot.co.uk at 178.128.42.210 the web server knows what you want, but if you go [nothing] at 178.128.42.210 the web server has to guess.

The problem is, the world has run out of IPv4 addresses. There have been a number of solutions to this. One of those is NAT (Network Address Translation) and you have that at home so your single IPv4 address is shared between all of your home computers and phones. That’s fine at home but it’s not fine if you want to allow access to a web server. Running out of IPv4 addresses is not a new thing, IPv6 (Internet Protocol Version 6) was created in 1998 but has taken a long time to become available. Now, finally it’s becoming more widespread and our newish Fibre broadband line came with IPv6 and the nerd in me was very excited about the things I could host locally instead on rented web servers. For example, my phone system… oh well, one day.

With Twilio out of the equation I decided to spend the minimum amount on to try a [couple of SIP trunks + phone number + call costs] from Dial9, if I remember correctly is was £20.

To use Dial9** had to set up my IPv4 address for port forwarding. It worked, but one catch was that I could only make it work for 1 of our Internet lines or double up the trunks rented from Dial9 at double the cost (we have two providers in case an internet line goes down). This was related to how they authenticate calls between servers using IP addresses.

The good news was at this point I had it working with IPv4 addresses and Dial9. Progress!

Reading some more on IncrediblePBX forums a lot people are using hosted web servers for their PBX. I’m already a DigitalOcean* customer so it was trivial for me to spin up a new VM just to run a phone system. Phone system requires very few server resources so my VM/droplet has 1GB RAM, 1 CPU core and 25GB of disk. It costs 7.20$/month including automatic backups. At current exchange rates that’s less than £5/month

As a public web server, it comes with it’s own IPv4 address which makes set up much easier. I also used the DigitalOcean firewall to restrict access to the IP to only Dial9 servers and my office IPs

The advantage now is I can have each one of our DECT handset connect to the phone system as an extension. IncrediblePBX now provides the group voicemail and emails any messages left for us (as we notice emails to our shared email account faster than we were noticing message lights on our handsets).

With that working I did the final setup of the Dial9 service.

There is a minimum requirement of 4 trunks (1 trunk = max number of concurrent calls) and each trunk costs £0.75 per month (£3/month)

Phone numbers are £1.50/month. There was no cost to migrate our number to Dial9 but for testing I bought a second phone number

Total cost: £4.50/month

Migrating the phone number to Dial9

Our phone number was still on the BT Openreach network via our previous business landline supplier, so transferring the phone number turned out to be very easy. There were clear instructions on the Dial9 web site and Dial9 tech support responded to every question within hours. In advance I set up the new number on the Dial9 portal and my PBX. Then requested the number to migrate on a Tuesday when I knew I would be in the office in case anything went wrong. Our previous provider gave up the number at 10am and by 11am Dial9 had automatically picked it up and started routing calls to FreePBX. With best laid plans… I got called away from the office at 12:00 and didn’t get to test everything but other than callers getting an international dial tone until the next day when I changed a setting I missed, everything worked perfectly.

I’m just going to repeat this, because phone lines are important and you really want them to work and you really want to know your service provider will respond when there’s a problem. Dial9 (and Adam, who picked up my support request for the migration) respond exceptionally quickly. Here’s the proof, check our the time between my emailing a question and their response, and their follow up responses with new information!

16:33 Me: Email to request migration
16:47 dial9: acknowledged and steps to verify my identity

09:12 dial9: confirming they got my verification confirmation overnight and are creating paperwork to send to the old provider, some questions to answer.
10:33 me: I answered questions
10:40 Dial9: Response with Letter of Authority
11:39 Me: I sent correction to the letter (trading name typo iirc)
11:52 dial9: corrected letter sent
12:11 dial9: confirmed they got my signature on the corrected letter and the migration has been requested from old supplier, asked for date we’d like to migrate
12:41 me: I picked a date
12:50 Dial9:confirmed date, human written email talked through the progress from here
13:26 Dial9: Confirmed old supplier had agreed to release and pointer to the setup I need to do in the Dial9 portal.
13:35 Me: Report a portal bug that on one page my business name is being shortened to “Kitchs” instead of “Kitchens” on a page
13:39 Dial9: explain that this is the Emergency Service Operators system shortening standard words.
14:47 Dial9: Adam spoke to the Dial9 developers and they modified the system to show users like me the full words but still send the short version to the emergency services system.

Migration Day:
10:44 me: I emailed to say we are getting invalid number when dialing from our mobiles and I’m not seeing the incoming call in the Dial9 portal
10:48 dial9: confirm the ports happen at 10am but are not instantaneous, migration time is outside of their control but don’t worry yet, this is normal so far.
10:54 dial9: they’re now watching for the line to arrive too, have tried test calls, will let me know when they see it move to them
11:01 dial9: email to say they can see the line and their test call rang

Summary of costs

IncrediblePBX – Free!

Digital Ocean* – Less than £5 per month

Dial9.co.uk** -£4.50/month

Total: £9.50/month + calls.

Footnotes

I upgraded the Gigaset to a Gigaset N510 IP Pro as it can handle 4 simultaneous voip calls whereas the Gigaset Go Box-100 can only handle 2 voip calls at a time. That cost me £25 on ebay for a second hand model but even new they’re only £80-£100.

* This link to Digital Ocean is a referral link to give you $200 credit and me $50 if you say for > 60 days

** This link to Dial9 is a referral link. It gives points… I don’t know what they’re worth, I don’t know if you get a benefit.

Printers, running costs and life expectancy

Our main A4 colour printer just reached the end of it’s life and is not worth repairing so I turned to my spreadsheet of printer costs to work out what to replace it with. We buy the printers and don’t lease them as this has always been a lot cheaper in the long term. This is our main daily use printer, we also have an A3 printer/scanner which gets less use. I like having 2 printers for when one goes wrong or I forgot to order toner, we can use the other until I get around to fixing it.

Interesting observations from looking back at my workings:

  • I started the spreadsheet when buying a printer in 2010 and bought a new printer in 2014,2018 and now 2022. So that’s 4 years per printer
  • I assume we only use original toner cartridges even though they are more expensive
  • I work out the total cost of ownership for a printer and all consumables assuming it lasts us for 50,000 pages
  • The current printer has made it to 80,000 pages, the previous one I think around 75,000 pages, so I might have to increase my assumed working life total page prints when comparing TCOs
YearModelPrinter costTotal Cost of Ownership 50,000 pages Total Cost of Ownership 75,000 pages
2018P6035CDN£362£2,702£3,510
2014FS-C5350DN£442£2,442£3,000
2010FS-C5300DN£766£2956£3,285

So although inflation has been increasing through that time, our printing costs have remained similar. Also of interest is the hardware cost of the printer has been decreasing. Before 2010 I also remember having to buy more trays for a printer but now we print letterheads on demand for free using ubuntu as a print server and a PDF template document

We have always bought Kyocera printers because they always seem to have the lowest Total Cost of Ownership (TCO). Many other printers cost less to buy but have much more expensive toner or maintenance needs. From my workings in 2018 you can see from models I compared;
the £362 Kyocera printer forecast a cost of £2,702 but
the £185 Xerox C400N forecast £4,872
so the up front machine cost is not a good indicator of the total cost of using a printer. Likewise you can also see that at 25,000 pages for a working life, the Lexmark CS727 had a lower TCO than the SC827. Summary: Knowing how many thinks you’re likely to print is important to optimise the total cost of printing.

Here’s an extract from spreadsheet from 2018 I used to choose a printer. Assumptions that may not apply to you:
We print lots of kitchen and bathroom photos at Roots, so I’ve assumed our average page has 15% coverage of ink (3 x each colour at 5%).
My prices were all excluding VAT
I suspect the prices I get for HP are high compared to what larger businesses can get, we’re small so I generally get prices online with no volume or scale discounts.

PrinterMachine costColour Toner single colour costpages coverage at 5%cost per page @ 5% using 3 coloursColour cost per 1000 pages (1 month)TCO 25KTCO 50K
ECOSYS P6035cdn£362£15610000£0.0468£47£1,532£2,702
Lexmark CS827de A4 Colour Laser Printer£405£23915000£0.0478£48£1,600£2,795
CS727de Lexmark£185£18010000£0.0540£54£1,535£2,885
ECOSYS P6130cdn£242£1005000£0.0600£60£1,742£3,242
Xerox versalink C600NW£730£19810100£0.0588£59£2,200£3,671
Xerox Phaser 6600DN£330£1456000£0.0725£73£2,143£3,955
Xerox ColorQube 8580DN£350£1124400£0.0764£76£2,259£4,168
ECOSYS P5026cdn£195£803000£0.0800£80£2,195£4,195
ECOSYS M5521cdn£163£802600£0.0923£92£2,471£4,778
Xerox Versalink C400N£185£1504800£0.0938£94£2,529£4,873
HP LaserJet Pro 500 color M570dn A4 Colour £516£1936000£0.0965£97£2,929£5,341

Setting up Google Workspace for a small business – part 8

Telling everyone about our new email address

It’s been about 2 weeks and everything is working well. We’ve told a few people about our new email addresses but now I need to get organised and tell everyone, but how?

Option 1 – Email everyone in my address book

Google keeps 2 address books by default.

First is the contacts you choose to save into your contacts. You can create those manually, save them from an email, create them when you add a new phone number into your phone. You can see from my contacts here I have 218 contacts though not all of them have email addresses (one of those contacts is a shortcut to dial voicemail). Truth be told there’s a couple of contacts I can spot straight away that don’t really need to be in my contacts book any more as we haven’t been in touch with each other for many years.

Further down the options is another section called “Other Contacts”. These are the contacts Google assumes from emails you’ve sent and received. They’re used with auto complete suggestions. I have 4,796 contacts there. A quick scan shows many are out of date or no longer needed but also shows a large number of fairly regular contacts that have never found their way to being saved specifically into contacts (friends from various clubs, where I don’t have or need a phone number for them and I email them simply from the autocompleted address).

If I was to try and email all 5,000 or so old contacts to advise of my new email address it would

  • take a long time (by hand, only about 90 addresses fit into the gmail BCC space)
  • take a long time (to write a small script to send emails one at a time)
  • exceed the send mail quota (2000 emails per day max )
  • generate a lot of bounces (old invalid addresses)
  • waste peoples time (support@old-company-I-once-used.net don’t really care to know I have a new email address).

So, I need a better option!

Option 2 – Use the out of office auto responder to tell people our email address has changed

When you go on holiday and wont reply to emails you can use the “Out Of Office” auto reply to let people know. The out of office message will only be sent once every 4 days.

I’m going to use this system to send a friendly message to let the sender know their email was automatically forwarded (so they don’t need to resend) and that we have a new email address.

There are options to only send out of office messages to your contacts but I’m going to let every sender get the message. I think the only downside will be that spammers will also know our new email address, but it will only be a week or so before they scrape it from our web site and start sending to both addresses anyway.

I’ve done this for our shared email address but for my own email address I’m going to wait a while before doing this. Partly that’s because I have a lot of newsletter subscriptions and some might see the constant out-of-office messages as a reason to stop sending emails. If you do this too, remember to keep checking the old email account from time to time as spam isn’t forwarded and if the mail box becomes full you won’t be getting the forwarded emails.