Description
Describe the problem this feature would solve
We've added the ability to store data on using open extensions on a Graph User. If we add support for the remaining types, developers will have a ton of control over how they store bits of data in the Graph, centered around the object type instead of the user.
This is helpful for scenarios that span across multiple users, such as an email message with multiple participants. Any message level details can be accessible from the message itself, vs storing the data in a separate place and managing the association manually (requiring lots of syncing shenanigans).
Describe the solution
Look for commonalities in the way open extensions work with the Graph and distill that into as generic as code as possible.
It might make sense to have an implementation for each Graph type that support open extensions.
Describe alternatives you've considered
There might also be opportunity to do a lot of this in a generic way. Be sure to validate this first, before committing to separate implementations.