If you want to provision unsupported phones to use with 3CX, you may come across this article on the 3CX web site: Provisioning unsupported IP phones. It looks quite helpful but it’s out of date in an important area: the location of the templates.
The original (or master?) default templates are still here, as described in the article:
%allusersprofile%\3cx\data\http\interface\provisioning
However most profile information is now stored by “instance,” so on a single-instance install, you’ll also find default templates here:
%allusersprofile%\3CX\Instance1\Data\Http\Templates\phones
If you use the web UI to customize a phone template (Settings > Provisioning Templates), the entire template with your customizations is copied to here:
%allusersprofile%\3CX\Instance1\Data\Http\Interface\provisioning\<random>\CustomTemplates\phones
and every phone in the template appears twice in the phones list:
The trick seems to be to delete the phones you don’t want to customize from the XML. Since it’s not overwriting the file but making a customized clone, the original phones are still there, along with your custom phone:
Looks to me like the simplest and safest approach is to use the web UI for customizations, but it’s still helpful to know where the files are stored.