From Setting Up Person Accounts:
Prepare Business Accounts to be Converted to Person Accounts
Each account and contact that you plan to convert to must meet these conditions.
- Each account must have one contact. It can’t have more than one.
- The account and contact must have the same record owner.
- The account and contact must have the same currency values.
- The Parent Account field on the Account must be blank.
- The Reports To field on the Contact must be blank.
- The Account is not set as a Parent Account for any other accounts.
- The Contact is not set as a Reports To for any other contacts.
You didn't mention steps 5-7 in your post, and in particular 6 and 7 are the most likely to trip people up. Double check that no records look up to either the
Account or the
ReportsToId, respectively. If you have verified with 100% certainty that each of the above criteria is fulfilled, you need to open a support case.
Here is an anonymous script you could use to verify each step. If it runs successfully, you can share it with support and posit that you have encountered a bug.
Account account = [
OwnerId, CurrencyISOCode, ParentId,
(SELECT Id FROM ChildAccounts LIMIT 1),
(SELECT OwnerId, CurrencyIsoCode, ReportsToId FROM Contacts)
FROM Account WHERE Id = '001...'
'Condition 1 violated');
Contact contact = account.Contacts;
'Condition 2 violated');
'Condition 3 violated');
'Condition 4 violated');
'Condition 5 violated');
'Condition 6 violated');
[SELECT count() FROM Contact WHERE ReportsToId = :contact.Id],
'Condition 7 violated');