function readOnly(count){ }
Starting November 20, the site will be set to read-only. On December 4, 2023,
forum discussions will move to the Trailblazer Community.
+ Start a Discussion

How can we do something like Set History Tracking for OpportunityTeamMember?



 How can we do something like Set History Tracking for OpportunityTeamMember? OWD setting for Opportunity in my org is Private. Please help.


Thanks and Regards.


Since you can not put triggers on these objects you have two choices as I can see it:


  1. Create a scheduled job that wakes up to detect changes and create the respective history rows, updates fields on oppty, etc.
  2. Remove the oppty team member related list from the layouts and implement your own UI for managing/viewing the rows and record the changes as they are made.
I tend to favor the 1st route because re-implementing the UI - all the features - would be a fairly large effort and if you have any API solution/integration that hits the team member rows those changes would be lost in option 2.  The question you'd have to ask of your business user(s): is it OK if a change that happens between job runs, i.e. a user is added and removed, doesn't get logged. Perhaps that is not a realistic scenario for your user base.
Either way, I encourage you to log an idea on the idea exchange for history tracking on team member or better yet, an even more generic solution of rolling up field history tracking to the parent (master) entity might be better. Whatever solution would serve your needs best is the right functionality to lobby for on the ideaexchange.  If you do create an idea, please post a link to it on this thread.


UPDATE: I just did a quick check and it appears that deletes of opptysalesteammember rows do not go into the recylce bin which means option 1 below would require replication of some kind to determin diffs that include removals of team members which probably makes option 1 non-viable.



In thinking through that I have an additional option for you to consider which is basically to roll your own sales team member functionality. I suspect that using a custom object for your own team member persistence that creates the requisite sharing rows would be marginally more effort than redoing the UI completely. In this sense you would have the full power of custom objects at your disposal - including field history tracking, chatter tracking, etc - though I suspect you are after something more along the lines of a roll-up nature where on the oppty you can see people added and removed from the team.

Thanks and let me know if I can be of more assistance,

Will we ever get standard field tracking on the Product2 object?  Seems kind of silly for something like that to be missing.


There's no ETA for history tracking on Product2. I wish I had a better answer for you, but your best bet is to vote for the respective idea which is here.


Thanks so much Andrew. But as you mentioned we are looking for the roll-up kind of functionality wherein we can track the inserts and deletes on the opportunity sales team. As suggested, I have put in an idea on the exchange and the link goes as below


Regarding the additional option, which you mentioned, that of using a custom object for the team members persistence, i am not sure how to implement it so as to record the deletes as well on this object? Could you please elaborate a bit on that idea of yours?


Thanks and Regards,



Voted for the idea, also the same for Account Team Member would be nice to have.


Same thoughts as Andrew mentioned - if taken the second path of creating own custom object, I would say you have a lots of functionality to re-create. I think you should in this case also still replicate the custom object data as OpportunityTeamMember objects. Only this way reports and list views that utilize the team selling feature would work.