Certainly, the free edition is free, but the commercial edition is very reasonably priced, too. What makes the commercial edition quite reasonable is the licensing method of per concurrent call. This means that 3CX is not licensed as per extensions attached to the system but by how many concurrent calls (or simultaneous, calls as 3CX calls them) can be made at the same time. For example, if you have a very low-usage phone system (like a retail store) where you might need 50 phone handsets but rarely more than 5 are being used at one time, you could get a 10 concurrent calls user license in 3CX. With competing systems you would need a 50 concurrent calls user license. While this does reduce the cost of 3CX, the issue of what constitutes a concurrent call becomes very important, so make sure you understand it. One factor that is often overlooked is internal calls do count against concurrent calls. To see a full breakdown of what constitutes a concurrent call, I suggest that you read the following post by 3CX engineer Kevin Attard:
Remember the price? So, what does this mean in the day-to-day operation of 3CX? You might need to reboot your 3CX server occasionally, you might need to use a workaround because some feature may still be a work in progress, or some seldom used voice prompt might not have a "million dollar" sound. In short, there will be items you will need to work through. My suggestion is that if you are installing a phone system for a company with toleration only for perfection, a Cisco level system might be the way to go. From my experience, 3CX also seems to be a good fit where there is on-site IT to watch over and take care of telephony issues.
What gets most small businesses interested in 3CX is the low cost and do-it-yourself possibilities. Also the open architecture lets you use nearly any standard SIP hardware and this is really appealing. After working through several interoperability issues, we might start wishing for a turnkey proprietary phone system "that just works," and 3CX is a system that needs to be integrated.
In fact, 3CX is being developed at a dizzying pace. In just a few versions, the web server was changed from Apache to IIS, the user interface completely redone, a new softphone was added, the Call Reporter was rewritten from Microsoft Access to a self-contained Windows application, a Hotel add-on was added, the 3CX Assistant was added, and lots of new features keep pouring in. 3CX is certainly a work in progress and a moving target. It's not at all uncommon for updates to come out several times a month. To keep an eye on these developments, you can follow the URL: http://wiki.3cx.com/change-log.
The easiest way to explain a key system is to give an example. A call comes in on line 1, and John picks up the phone. The caller wants to talk to Joe, so the call is put on hold. John tells Joe to pick up the phone and Joe presses line 1 and says "Hello." 3CX uses the call park and call transfer paradigm instead, which works well but is sometimes a hard feature to give up for users who are used to a key system. The IP PBX feature that allows putting the call on hold and the other person picking it up by pressing the "line" button is sometimes called shared line appearance.
Microsoft Office Communications Server (OCS) is a communication server that started as an instant messaging server. It has grown to have voice and collaboration features and is often integrated with an existing phone system. As Microsoft appears to be grooming OCS to become a full-blown communication system capable of replacing a phone system, 3CX has made the choice to not support integration with OCS. 3CX does integrate with other instant message-only servers (such as Openfire) easily and nicely. While this is not officially supported by 3CX, you will find more help at 3CX support and forums.
This may be needed for countries that need to support prompts in more than one language at a time. 3CX can do many languages, but only one at a time. So, if you need a digital receptionist prompt to say Hello, for English press 1 and French press 2, and then all prompts after that will switch to the language you selected, remember that 3CX does not do that.