Shared parameters are very useful (force consistency across families and projects, schedule and label instance properties), but they must be managed properly, otherwise a whole raft of problems present themselves. I would suggest having one shared parameter file per company and to have a protocol in place so that only the BIM manager be allowed to add shared parameters!
I recently had the opportunity to assist a BIM manager of a large retailer in troubleshooting their template. Part of that process dealt with eliminating duplicate shared parameters. These came into existence because there were multiple shared parameter files, and someone created exactly similar shared parameters independently in these files. Each shared parameter has a global unique identifier (GUID), however, and this makes it possible to have duplicates in the project!
To compound the situation, a large number of shared parameters were used to manage quantities and prices of components that made up the families. How would one know where to start? The duplicate shared parameters resided in the families! How does one find them?
The easiest way to see if there are duplicate parameters in the families is to create a multi-category schedule, listing only the Family and the Type fields. It is crucial that at least one type of every family has been placed in the project (not just loaded). To see whether a family has been placed, check whether it would have been purged as unused.
One may now visually check to see if there are duplicate shared parameters in the schedule dialogue.
Choose the duplicate parameters as fields in the schedule and filter such that one of them exists.
All the families that contain this parameter is now scheduled (but only if they were placed in the project!).
To see the families that contain the other shared parameter, change the filter such that it exists instead.
To eliminate the shared parameter from the families, it needs to be replaced by the correct shared parameter. Edit the family, then delete the offending parameter (remember to note its values if it is applied across types) and then add the correct one from the correct shared parameter file.
Reload the family into the project. It can be seen that both are now of the same parameter, but the duplicate is still present.
Remove the parameters from the schedule.
Provided no other duplicates exist, it is removed from the project.