I have a requirement to grant a set of Users the ability to transfer ownership of all records of a certain object type, regardless of current ownership. I know I can accomplish this by granting this set of users the Transfer Record system permission, but this seems like killing a fly with a sledgehammer. I would much rather use a flyswatter.
What is the rationale behind making the Transfer Record permission a global system permission? What was the original use case for this permission and why did they not make it object-specific? (Maybe no one knows or is willing to divulge the answer to this question. That’s fine. I’m just curious enough to ask it.)
Is there any other way I can accomplish my requirement? Can I make the transfer record permission object-specific using Apex Sharing? Any ideas will be much appreciated. Thanks!
Relevant documentation about Transferring Records
Modify all on the object will give transfer (but also delete)
Users with the “Modify All Data” permission, or users with the “Modify All” permission for the given object, can transfer any record, regardless of who owns the record.
Otherwise, you could build a visualforce page running without sharing, which could handle the transfer. You could control access to the page or use a custom permission / custom setting to control who can use this functionality.