The version of your FusionPBX would matter. For those on Master branch 5.1.3 its now using non p-code templates. The keys assignments are working. They do seem to be broken on the 5.1 release. The non p-code templates seem to require newer firmware for the phone in order to work.
I had to use the non p-code templates because I can't stand the p-codes. p-codes are an invention that should have never been invented. The p prefix was to get around that numeric XML tags are not allowed. So what did the developer decide to do use a letter as a prefix and p-codes were born. The creators of XML made numeric XML tags invalid for a reason. They designed XML to be intuitive and easy and numbers for the tags destroys the simplicity. So for Grandstream we will have moved the GXP and GRP phones to the non p-code templates. These newer templates are much nicer for humans.
Although Mark is right about using P-value XML format, GXP, GRP, WP and HT use P-values.
The GHP and GXV can use both.
Not sure why the decision was made to switch when the Grandstream as vendor states P-values.
In any case, you can use GDMS for provisioning. The templates lack a bunch of things we set on Phones anyways, so either we redesign the existing templates completely or just use GDMS.
If you have an older install, grab those files and create custom templates. I'll be using those with GDMS as core P-value and provisioning templates for SIP, BLF and Phonebook, thus customizing the templates just for those.
Version 2 templates (non p-code) values don't apply to every phone. As stated by NVGcom you can get templates from an older version of FusionPBX and use those. NVVGcom also mentioned GDMS which is official Grandstream provisioning by Grandstream. Otherwise you can spend time and fix p-code templates yourself or another option you can pay someone else to do it for you.
The worst thing to work on the P-Code templates is the key assignments these keys are often used for provisioning the BLF. P-Codes are an extremely poor choice for config files that humans need to work on. That is why numeric tags are not valid for XML and bypassing them with a letter prefix doesn't make it a better idea. Grandstream must have had other people that also disliked the P-Codes as they built better templates without the P-Codes.
Since Grandstream built better templates it seemed like a good idea to use them. The improved templates are dramatically easier to work with.