A client needs to have restricted custom properties. For example, a mandatory field is 'SiteCode'. A SQL trigger is used to populate other custom property fields.
So when a node is edited, they only see the 'SiteCode' custom property as editable and others are grayed out and auto-populated using an external sql table or someone with access to the custom properties.

Amit Shah
Loop1 Systems