It sounds to me as though you have a systemic problem and perhaps some security issues in terms of your OWD and other related settings in configuring your org that you may need to resolve in order to permanently solve your problem. First, I would advise against arbitrarily editing these contacts and assigning them to a dummy account. There could be a number of unpredictable consequences of taking such action at this time.
You've not said why you need to transfer the contact record by someone who doesn't currently own the record, nor what your OWD are Contacts. Knowing that information would be helpful in giving you a more complete answer to your questions. If you've enabled Account Roles and Contact Roles you'll have more flexibility in how you deal with the relationships between the two. Traditionally, Contacts have had their OWD set to
Private which sounds like the source of your problem.
If you go under the assumption that every Contact is associated with an Account, you could potentially change your OWD settings to
Controlled by Parent. In that manner, whomever owns the Account or in some cases a Custom Object a Contact is related to, also owns all the Contacts associated with that Account or Custom Object. It really depends on your org's particular needs in terms of what the least amount of access level needs to be set at for the OWD as to which way to go in addition to how you set up security on the
Parent as that's the setting that will primarily control access on the
Contact object if you go that route.
Records can normally have their ownership changed in one of the following ways:
- By the existing owner of a record transferring to someone else
- Someone in the hierarchy above the existing owner reassigning it (if using roles)
- An admin or someone with delegated admin permissions transferring ownership of the record
Exceptions to the above would include:
- Where you've set up a sharing group or have Apex sharing rules
- Objects whose records are disseminated through a queue (usually via a pre-determined set of rules), the most common of which would be leads and cases
With all that having been said, it sounds as though the first thing you need to do is set up validation rules for
Contacts such that no new contacts can be created unless they're associated with an
Account. If you don't do that, this problem will never go away and 6 months from now, you'll be right back where you are today.
What you could do next, as an interim step as an Admin, is to take ownership of all contacts not associated with an Account. Once you do that, presumably you could query to search for related records and find out what account they need to be connected with. You could also create a sharing group and a sharing rule that would allow you to share them with those who might need to transfer ownership of them. Making this work would depend on what you've determined your OWD actually needs to be set at for
Contacts not associated with an
Account behave as though their OWD is set to
Private as @ RobinDeBondt suggests, I believe this would work for you. What I would also do is create a validation rule that requires a
Contact be associated with an
Account in order for it to change
Ownership so that whomever is trying to transfer ownership is required to associate it with an
Account at the time of transfer. In doing so, you'll slowly solve your data problem.
I hope this helps provide some guidance and useful suggestions both short term and long term for resolving your issues. As references, I'd refer you to the Force. com Platform Fundamentals Workbook, the Security Workbook and the Security Implementation Guide.