Phone management options greyed out after editing custom Yealink template — safe recovery question

TheVoice

Customer
Joined
Feb 16, 2026
Messages
7
Reaction score
2
Hello,

We are running a self-hosted 3CX system and all Yealink T4x phones use a custom provisioning template (yealinkt4x_custom.ph.xml).

While testing, I made a very minor change to the template (changed the label of Line Key 5 from "Park 2" to "TEST") and saved the template.

Immediately afterward, device management options under Admin Console → Phones became greyed out for all phones (Device Web Console, Reboot, Config, Reprovision). Phones remain registered and calling is unaffected.

Before taking any action during business hours, I want to confirm expected behavior:
  1. Does saving a custom phone template sometimes temporarily disable phone management actions?
  2. Is restarting the 3CX PhoneSystem service the correct/safe way to restore device management?
  3. Will restarting the service trigger automatic reprovisioning of phones or overwrite existing BLF/DSS key assignments?
Goal is simply to restore management access without unintentionally reprovisioning all phones.

Thanks in advance for any guidance!
 
The phones reprovision daily anyway with the template. Are you referring to the "device web console" button?

this is only available if PBX and phones are on the same LAN
 
Just to clarify — the PBX and phones are on the same LAN, and all phones remain registered and fully operational.

I can confirm that all phone management options (including Device Web Console, Reboot, Config, Reprovision) were available immediately prior to saving the custom template, and the options listed became greyed out for all phones directly afterward. I am currently unable to reprovision phones or push firmware updates.

No network or provisioning method changes were made at that time — the only change was saving the template.

Sharing this additional detail in case it helps narrow down the cause.
 
Im not sure then, I dont tinker with custom templates other than to allow STUN. Is there something you're unable to do using the supported templates? You can label BLF keys via the BLF tab for the extensions and give custom labels for custom speed dials.
 
Understood, and agreed that BLF labeling can normally be handled from the extension BLF tab.

For context, the custom Yealink template was already in place when I inherited the system, so I’m not certain why it was originally introduced. The edit I made was only a very minor label change while trying to understand how reconfigure the default Park keys.

At this point my main concern isn’t the template customization itself, but that immediately after saving the template all phone management actions in Admin Console > Phones became unavailable, despite phones remaining registered and operational.
 
I would consider checking if there is some kind of syntax error inside the template after the change.

If the xml template has some kind of error it can't be loaded. And 3cx works like this template isn't existing.

Maybe load the content of the template onto an .xml file and open it with e.g. a browser this could show possible errors.

Or look into the Event Log of 3CX.
 
If you revert the xml file to how it was before your latest changes, I assume all is back to "normal", right?
 
Thanks for the suggestions! I followed up on both points.

Regarding possible syntax errors:
For context, the only visible change to the custom template was:
linekey.5.label = Park 2
changed to:
linekey.5.label = TEST
That was the only modification. A diff confirms no other structural or formatting differences between versions of the template.

Template State Clarification:
There are currently two custom templates present:
  • Original template:
    yealinkt4x_company.ph.xml
    (unchanged behavior — label shows Park 2)
  • Test template:
    yealinkt4x_company_v2.ph.ph.xml
    (modified label shows TEST)
The duplicated/concatenated template names visible during phone reassignment appear to reference combinations of these two templates.


I reviewed the 3CX Event Log around the time of the template change and did notice intermittent entries similar to the following:
[30040] Provisioning file . . . requested by 192.168.50.144 could not be generated
[10029] Provisioning file for MAC . . . of user 1164 requested by 192.168.50.144 was successfully generated
These entries often (though not always) appear in pairs. Phones themselves remain registered and operational.

Regarding reverting the XML to the previous version:
No, reverting the template contents did not return the system to its previous state. The 'Save' button on the template edit screen remains active, as though the action is not being committed).

Updated Observations (and additional findings):
  • Existing phones appear to remain associated with earlier template/model bindings created prior to the template modification.
  • Management actions (Reprovision, Reboot, Device Web Console, Firmware Upgrade, etc.) remain visible but do not execute successfully for these existing phones.
  • During phone reassignment, multiple custom Yealink template options now appear for each model (two per model), including entries where template names appear concatenated.
  • Removing a phone from an extension and re-adding it restores full administrative functionality.
  • When provisioning a re-added test phone using the new template, the updated label (“TEST”) appeared correctly in place of “Park 2”, confirming that the template modification itself was successfully applied.
  • Custom templates appear to remain in an inconsistent state within the Admin Console. The Save button remains active after multiple save attempts (across browsers), while the Copy option remains unavailable, suggesting the template changes are not being fully committed.
I plan to review template cleanup during a maintenance window, but wanted to share these findings in case others have encountered similar behavior when modifying custom templates in v20.
 
Last edited:
Also give it a try where there is only one dot in the filename, (or two as per your working custom) just in case:
Instead of yealinkt4x_company_v2.ph.ph.xml do yealinkt4x_company_v2.xml / yealinkt4x_company_v2.ph.xml
 
  • Like
Reactions: TheVoice
The phone template parser is quite fussy about model names and values in the headers, deviceconfig, and y-file sections. Have a look here: https://www.3cx.com/docs/custom-ip-phone-templates/

These steps are verified and known working - I've performed them myself many times. If you want to "play it safe", then revert all phones to the default template, remove all custom templates, and then recreate each custom template following EXACTLY the steps in the linked document. If you want to create 2 custom versions of a template, then each time start from the default template. Do not start from a custom template to make a second custom template, it can make the task unnecessarily complex.
 
Thanks for the suggestions - I will give them a try!

I do plan to start by reverting back to the default template - at least for a couple test phones. Once the dust settles, I'll try to find time to take a closer look at the custom template. As I mentioned, a predecessor implemented the custom template with no documentation as to why.

Thanks again for the information!
 
  • Like
Reactions: KyriacosS_3CX

Forum statistics

Threads
112,147
Messages
590,954
Members
165,165
Latest member
cvanderzwan