V15: Finding Provisioning Files

Hi there 3CX Partners and End Users! I hope you’re all having a good start to the week. My morning began with a “most loved” task of mine: reporting. While validating some topics and categories within our ticketing system, I came across a rather frequently asked question / statement from our customers:

My Provisioning files are not generated
My Provisioning files are not up to date

First of all, I am very pleased to find these comments; it shows that our customers are demonstrating the knowledge and skills for debugging 3CX. A thumbs up to everyone who reported this! Let me shed some light into this:

Provisioning Folder

If you don’t know what the provisioning folder is, here is a short description: The provisioning folder is used to present endpoints (IP phones and 3CX clients) and the optimal running configuration for your own 3CX installation. These files are requested by the terminals via HTTP or HTTPs in order to get provisioned. They are mainly static but change when BLFs are assigned or the extension is renamed. Endpoints tend to reload the configuration every 24h to keep up to date with the information. If you don’t like the sound of waiting 24h until the changes are applied, you can “Reprovision” the endpoint from the console, causing the phone to reload the config (endpoints may reboot).

How to reprovision in the 3CX Management Console

Gone Baby Gone

First of all, good news! As of V15 it is likely that the provisioning folder does not contain any provisioning files and that a file which might have remained there from an upgrade is not updated.

For security measures the PBX does not store the files on the disc. The reason is very simple, maybe the person administering / hosting your system is not the same person that is in charge of the administration of 3CX. Presenting the config file to these people would be not a wise idea…

From now on, with each request a terminal sends, a fresh copy will be issued on the fly and directly answered by the 3CX Management Console. It also helps avoid outdated information being saved in those files as nothing is stored permanently.

Here is the default content of the provisioning directory: some generic files for phone provisioning, firmware, logos, custom templates and the company phone book for the endpoint.

Default Content of a provisioning directory

Do you see me now?

A valid question is how can I see what is inside of this provisioning file which is loaded by the Endpoint? We have you covered. From the management console go to the “Phones” node and select a connected phone then press on the “Config +” button. It will open the current configuration (provisioning file) which is assigned to that particular endpoint…

Endpoint Configuration file

Note: If you make changes to a provisioning file and/or supply your phone with a custom template, remember that the Management console caches the template state at startup. Any changes made after the start of the service to the templates is not known to the service and a cached version of the template is generated. A restart of the “Management Console Service (3CXMC01)” is required to reload your changes and issue the latest version of configuration files. Side note from the support policies: debugging in support cases of IP phones can only be done while the phone is running the stock provisioning template made by 3CX…

Enjoy, Stefan

Liked this article?

Get notified of new articles
or share
You might also be interested in:
  1. 3cxuser

    We used those files to automate 3CXPhone for Windows installation/configuration? Any way to change this back to v14 behavior?


    September 26, 2016 at 4:41 pm
    • No, the v14 style is gone for good as mentioned above. Can you elaborate how you mapped the 3CXPhones to the file on the server? You still can do the “same” but you must invoke a sort of wget request.

      September 26, 2016 at 4:59 pm
    • Well. what you can do, for finished static provisioning files, is put them on to a ftp, html or sftp server in your network, and change the provisioning url (also inside the provisioning file!)
      That way, you sill have a remote location for your provisioning files, without using the 3cx.
      In theory, you could even give them an easier to remember name then the mac adress, (like te used username)

      I am quite sure it is not the recommended method by 3cx though :)

      September 28, 2016 at 4:08 pm
    • Of course it cannot be recommended. You have moved the provisioning files from the 3CX Server to somewhere else – thats overhead number 1.
      Overhead 2 is that these prov links that you will enforce to your own, will be overwritten by the correct one until you don’t go in the template and hardcode it to your url.
      I’m not understanding why this is a possible solution and what needs to be achieved.

      September 29, 2016 at 2:18 pm
    • Hi,
      we were using automation for deploying 3cx clients as well – in our case powershell script delivered to user at logon by GPO.
      You can get the config file in v15 as well, the key is to know the the name of 3CX config file for each extension. You can get that info from 3CX db, table dnprop.
      As soon as you know the name of config file, you can download it using url similar to:

      September 29, 2016 at 2:15 pm
    • Nice one Jakub!!!

      September 30, 2016 at 11:49 am
  2. Sean Cohen

    We duplicated one of 3CX’s provisioning files and made some customizations to it in the distinctive ringing section. The customizations appear when we view the template under Settings -> Templates. Then, on each phone, we selected this custom provisioning file as the template for each user’s phone. When we view the config using the Config button like you describe above, the customizations aren’t there. I’ve restarted the Management Console service like you suggested and even hit the re-provision button. Am I missing something?

    September 26, 2016 at 10:31 pm
    • Hey Sean,
      I have done the same thing and made a small change to the ringer in a custom template.
      While checking the +Config for the device I can see my change (Ringer1 to Ringer2).


      Validate the setup as stock SP1 works for me…

      September 27, 2016 at 9:58 am
  3. Andrzej P.

    How do I get config file for a phone that is not yet registered and I need to debug config to figure out why it’s not registering ?

    September 27, 2016 at 12:08 pm
    • In the management console you have a link in the Phone Provisioning section. That is the provisioning link. Example:
      Provisioning Link: https://whatever.3cx.com/provisioning/rexysx0rm
      Then see what phone you are dealing with and put the proper extension – example macaddress.cfg if it is a yealink for example.
      Get the whole link and put it in a browser.

      September 27, 2016 at 5:30 pm
  4. I am wondering if the used parameter names have been changed (or if any have been added/removed) since V14, as frankly, the default settings of the provisioning file are far from ideal and up unitll now needed tinkering for e.v.e.r.y. tenant I created.

    September 28, 2016 at 4:13 pm
    • an obligation while running custom templates is to compare them to our stock templates between updates. Check out WinMerg, free compare tool for windows, load stock 3CX template, load custom template and compare what has been changed in between versions. Merg changes, keep your custom changes (validate that the vendor has not deprecated them over firmware releases), restart MC01 service, re-provision the devices.

      September 28, 2016 at 5:29 pm
  5. Chris Neal

    The problem here is we have maintained FTP provisioning of Phones… HTTP provisioning does not allow the phone to write back Boot Logs or Settings the user may have set on the Phone such as Contrast, Ring Tones, etc.. So for us… HTTP provisioning has always been a downside.. Now from what I understand you are not updating the files automatically anymore.. So how do I trigger to get updated config from FTP provisioning? Can’t have both.. Only one setting on phone. V14 method worked for us.. As for security we have always controlled the access to FTP provisioning folder with IP ACLs etc… Would be good if you let us decide on a system with a Option to maintain the V14 method vs V15 method.

    September 28, 2016 at 5:23 pm
    • What phones are you using?
      Make a simple 2 line batch script that triggers the HTTP Provisioning Url (this action REBUILDS the latest template configuration file) and then the script downloads the file (as if you made ‘save as’ manually).
      Then move the downloaded file wherever you want.

      September 29, 2016 at 2:23 pm
  6. Alex Heylin

    GUYS!! Seriously…?? You do realise that us, you partners, take your product and engineer solutions out of it? You changing things like this, **without any consultation or notice** is not funny. You’ve just made it impossible to provision one of the handsets which a client specifically requires. That is now the 8th reason I have that v15 is currently not a suitable replacement for v14 – and we have clients who will not be able to upgrade to v15 because of the changes you’ve made in it. They may as well cancel their maintenance with you?

    December 5, 2016 at 8:21 pm
    • @Alex, speak to me what we have taken away from you not enabling you to do this: “You’ve just made it impossible to provision one of the handsets which a client specifically requires. ” What device are we talking? If you need to place a file in the provisioning folder, feel free it will still work. So have you tried it and it resulted in an error?

      December 6, 2016 at 9:20 am