This post describes a customization to CRM 4.0 which is not a supported by Microsoft, Crowe or me but something I needed to find a solution to given a client request. Please take this into account before attempting to make this change as in most situations you never want to update the CRM database tables directly. This may cause problems with upgrades and future releases. However, there are times when your users will demand a system change and you may be forced to take a bit of technical leap to make them happy.
Hiding system views in CRM 4.0 is one such area. For example, your implementation may not use the Marketing Campaign entities, and you wish to hide the “Contacts: No Campaign Activities in Last 3 Months” system view.
While there isn’t a clean way to do this currently using the standard configuration UI, you can force a system view to become a private view through a bit of direct database magic:
1. Navigate to the system view.
2. Make a change to the view, such as switching the column order. This will create a new record in the SavedQuery base table with the CustomizationLevel = 1. Customization = 0 records should never be touched since these are shared across mult-tenant organizations.
3. Publish the entity.
4. Find the view in the SavedQueryBase table. There may be several entries, so use the view with the CustomizationLevel equal to 1 that was created earlier.
5. Update the record and set the IsPrivate flag to 1.
UPDATE SavedQueryBase
SET IsPrivate = 1
WHERE [Name] = 'Contacts: No Campaign Activities in Last 3 Months'
AND CustomizationLevel = 1
Now once you navigate back to the entity, the view will no longer appear in the list.
Again, use the above SQL trick with caution. Manipulating the CRM database is not encouraged. However, since the functionality to hide system views existed in CRM 3.0, we felt this is something clients may have an interest in pursuing in order to meet the needs of their existing users.