First, let me apologize if this has been brought up before, as I've been tangled up in other stuff and haven't kept up with Thwackville very much lately... 
We are currently running a test instance of NPM (9.1 SP5) and NCM (5.1) on a box in our lab in anticipation of upgrading our production instances in the coming weeks and I noticed something strange with the NodeCaption field in the Nodes table in NCM. It seems that whenever we perform an inventory collection, the NodeCaption field is getting cleared, which causes it to revert to the default value of "${SysName}". Upon further investigation, I noticed that if I disable collection of "System Information" as part of the inventory collection, then the problem goes away. The ability to enable/disable collection of "System Information" appears to be new in the 5.1 release as compared to 4.0.1.
As it's configured today, we have NCM importing devices from NPM at 11:55 PM via a scheduled job. This is followed by a config backup job beginning at midnight, and a subsequent inventory at 3 AM. The import job has the "Caption" value from NPM being mapped to "NodeCaption" in NCM. Many of our devices in NPM have custom captions, as they are often formatted differently from the "SysName", which basically equates to a FQ domain name. As the inventory job hits each device, it clears the NodeCaption field, which ultimately causes the SysName values to be displayed on the web and on the server itself.
What I've done temporarily is to turn off collection of the "System Information", but I'm thinking that we could possibly be missing updates to other fields associated with the system mib as a result. Of course, we can rely on mapped fields from the NPM to NCM import to capture these changes, but I thought I would point this out in case anyone else was running into this and scratching their heads. 