Our PBX comes with a number of built-in templates for web pages, email, and device configuration. In the old days, those pages were hard coded, and we offered a couple of settings for minimal adjustments of the view (e.g., different header images).
For debugging it was very useful to get the content just out of a directory. We found this was also very useful for installations, and we have made the “html” directory accessible in the release mode.
Because file system access can be problematic, especially for the embedded devices, we made the content accessible through the web interface. Now customers could make their changes right from the web browser. The next step was to make that customization dependent on the content. A web page was now being rendered in the context of the extension, the domain, and the system. Depending on whom is logged in, it was now possible to present different content to different users. This was very useful for multi-tenant deployments.
Along with this, the translations were also made customizable. Although the file was available only on a system level, it added additional flexibility regarding customization.
So far, so good. Now to the bad and ugly part.
The main problem is software upgrades. The web content is far from static. Every upgrade brings changes in the content area, so if someone made changes in a file, that file still overlaid the changed content. For example, customers who spent a lot of time in customizing templates for version 5 won't be pleasantly surprised with the changes we have made in version 5.
The other problem zone is the provisioning area. We have made numerous changes in the pnp.xml file, as well as changes in other provisioning files. When manual changes were made, this could create quite a mess with the automatic provisioning: at the end of the day it might be possible nothing would be working in the provisioning area.
The same applies for changes in the translations. Usually upgrades introduce new texts, and those texts aren't visible after an upgrade.
Because of this, when you make changes in the templates, you must double check if you still need those changes after an upgrade. Revision management tools have a “merging” function that patches the changes in, but this isn't available for the PBX. Essentially you have to perform this function manually after an upgrade.
Many of the manual changes of the templates are to fix problems. When an upgrade is available, those fixes should become unnecessary and should be removed.
Anyway, there is one clear action item when upgrading: check if you still need the changes in the templates; if not, remove them.