As I discovered today, there is an undocumented (or documented and damn well hidden) feature in MCMS whereby custom properties that start with an underscore character become hidden.

Now this would be a very good idea if it was hidden from the page properties dialog (which it does) but did not remain hidden in the MCMS Template Explorer in VS.NET, but unfortunately that is not the case. The only way to change the value is to check out the template, add the property again with its new value, and check in. Great. But what about removing it altogether? It appears that you cannot... and remain supported by Microsoft.

The following (completely unsupported by me, Microsoft and the four horsemen of the apocolypse) block of SQL removes a custom property ('_HiddenCustomPropertyName') from a template ('Some Template Name')

INNER JOIN Node N ON N.[Id] = NP.NodeId
WHERE NP.PropName = '_HiddenCustomPropertyName' AND
      N.[Type] = 65536 /* Template */ AND
      N.[Name] = 'Some Template Name'