I’ll try to be more verbose. There’s a wealth of information already, which does fully describe this, and which should be consumed first, and should be followed, at:
https://wiki.asterisk.org/wiki/display/DIGIUM/Digium+D-Series+Phones
If your goal is to have things loaded on keys on D-Series phones, then first load contacts onto the phone.
Contacts are loaded onto the phone using either the DPMA key “contact” which is a type=phone option, or, if your phone is configured using XML config files, the contacts element (https://wiki.asterisk.org/wiki/pages/viewpage.action?pageId=41454017#XMLConfiguration2.7.2+-ContactsElement). What those references is a sheet (formatted according to https://wiki.asterisk.org/wiki/display/DIGIUM/Contacts) that the phone loads because it’s directed to.
Ideally, the phone is going to cURL down the file from a web URL. If you’re using the XML-style configuration, you’re specifying a web URL. If you’re using the DPMA contact option, that’s not necessarily true.
There exists within DPMA a legacy ability, that we don’t document anymore, for DPMA itself to transport the contacts file to the phone, where it’s loaded from the “general” section option “file_directory”. There’s also a legacy ability, for older-style contacts, to be laid out on the BLF keys in order. Since 1.4 firmware (October of 2013), this isn’t the preferred or documented way of doing things. So, if the contacts file is in file_directory, DPMA will try to send that to the phone. If it’s not there, then DPMA is going to assume that you’re trying to send the contacts file from the type=network file_url_prefix instead. In that case, DPMA will take whatever you put in file_url_prefix and prepend that to what you put in the contact key - unless what you put in the contact key is actually an http or https URL itself (in which case DPMA sends just that URL).
Your trouble is that your config is probably using the legacy stuff that we don’t document anymore. Thus, your contacts file is probably stored in the file_directory. I suggest this, because it’s the only thing that makes sense. The D-Series phones and DPMA do not transport BLF Items sheets using DPMA as a transport. The phones are only capable of receiving those via cURL. Since your phone has contacts and it’s got something on the key (the wrong thing), that’s probably what’s happened.
If you want to use BLF Items for things, which is a really good idea, it’s very flexible, then you’ll have to store your BLF items sheet in a place the phone can cURL it in. So, if you’re doing DPMA config, which you must, then you’ll have to be cognizant of the file_url_prefix for the type=network on which the phone finds itself, and you’ll have to put the BLF items file on-disk in the location that’ll get served up.
I recommend you put your contacts files there, too.
Older versions of the Digium Phones Add-on for FreePBX used all of the legacy stuff. Newer versions generate contacts and BLF Items files on-the-fly and serve them up via the file_url_prefix.