I have an org containing several business subsidies working on opportunities.
These opportunities may have sensitive data attached to them in files, emails, calls, etc.
Users in each subsidy should be able to see and collaborate on their own subsidy’s opportunities and see the sensitive data attached to those opportunities.
For other subsidies' opportunities, they need to see the "summary" (c. 20 fields), but they must not have access to the activities or files under other subsidies' opportunities.
The global CEO must be able to report on the pipeline of opportunities globally, but he too should not be able to see the emails, files etc. under these records.
I see several options for this:
- Opportunities private OWD; flat role hierarchy; use a Lightning component
without sharing
to expose opportunity summaries on parent accounts; create a dashboard containing non-sensitive opportunities data, put in a dashboard that runs as an admin user, and share this with the CEO - Automatically create a child record under each opportunity; attach sensitive emails / files to this record instead of the opportunity itself; only share this record with people within the same group and deselect the option to share up the role hierarchy
- For each opportunity record, automatically create a custom "Opportunity Summary" record that pulls in the c. 20 non-sensitive fields from the Opportunity. Share the opportunity record only with the owning group, and share the "Opportunity Summary" with everyone else. Keep this record updated with any changes to the original record
Option #1 seems the simplest, but has big limitations with regards to things like reporting (e.g. the CEO being unable to directly view the global report, outside the context of the dashboard, which prevents him customising it or exporting to CSV)
Option #3 addresses this, but duplicates every opportunity and could cause confusion (users getting mixed up between opportunities and opportunity summary records)
What do you think of these options? Is there a better approach I'm missing?