This is a series of posts about data cleanup in Salesforce. The goal is to IDENTIFY, FIX, AND PREVENT data issues.
The Problem
We have a series of forms (for making a donation or signing up for a program, for instance) that create Contact records in Salesforce. Some people type in all caps (e.g. BOB ROSS) or all lowercase (e.g. bob ross) and the records end up reflecting that.
Business Implications
- Merge Fields in Mailers – A mass email or appeal letter will end up saying “Dear bob,” rather than “Dear Bob,”
- Reporting to Funders – When we need to report program data to funders on a granular (constituent-based) level, the development team has to spend time formatting the names properly before sharing the report.
What I Did
Identifying the Records
After some exploratory data analysis and trial and error, I created two checkbox formula fields on the Contact called “Contact First Name Bad Format” and “Contact Last Name Bad Format” (I know, I know…silly field labels).
First Name Field
AND(LEN(FirstName)>2,NOT(CONTAINS(FirstName,".")),
OR(FirstName=LOWER(FirstName),FirstName=UPPER(FirstName)))
Last Name Field
AND(LEN(LastName)>1,NOT(CONTAINS(LastName,".")),
OR(LastName=LOWER(LastName),LastName=UPPER(LastName)))
These formulas looks for Contacts with the First Name or Last Name in all uppercase or lowercase. It ignores initials such as “DJ” for first names or “C.” for last names. People putting initials instead of their full last names into fields is a different issue….
Fixing the Records
I ran a report of all of the Contacts where the “Contact First Name Bad Format” OR “Contact Last Name Bad Format” fields were true. I made sure to include the 18-digit Case-Safe Contact ID in this report.
Then I exported the report, used the PROPER() function on Excel to change the first and last names to proper formatting, and used Apex Data Loader to update these (400 or so) records.
Preventing the Issue Moving Forward
To prevent this issue from happening in the future., I created two workflow rules using the a) the criteria in the above formula fields and b) field updates witht he solution mentioned in this post.
This workflow rule will detect if a person’s name is in all uppercase or lowercase letters and edit it accordingly:
Criteria
See formula fields above
Evaluation Criteria
Evaluate the rule when a record is created, and any time it’s edited to subsequently meet criteria
Actions
- Field Update: Update First Name (Proper)
- Field: First Name
- Code: UPPER(LEFT(FirstName, 1)) & LOWER(RIGHT(FirstName, LEN(FirstName) – 1))
- Field Update: Update Last Name (Proper)
- Field: Last Name
- Code: UPPER(LEFT(LastName, 1)) & LOWER(RIGHT(LastName, LEN(LastName) – 1))
Testing the Workflow Rules
First I manually created Contacts with the above names:
Contact Name | Expected Result |
JJ Abrams | JJ Abrams |
AUDRE LORDE | Audre Lorde |
audre lorde | Audre Lorde |
F. FITZGERALD | F. Fitzgerald |
Other Tests
Test | Expected Result |
Edit Contact manually with one of above names | Fix name |
Fill out the donation form with one of the above names | Fix name and send acknowledgement with fixed name included |
Fill out a program form with one of the above names | Fix name |

What’s Left to Do
Tweak the field update to be more precise – There’s still some room for error here, since the formula only capitalizes the first letter of each field. Some exceptions that this would not update properly would be:
- Gordon-Levitt
- McDonald
- DiFranco
Conclusion
Overall, this took about two hours to figure out and will likely save more than two hours of annoyance and manual editing in the future.
Feel free to comment with any questions or other ways you’ve solved this.