We can all learn from other people’s misfortune. Hence this anonymous confessions page. All these could be avoided by more rigorous change management; requirements capture, business process mapping, user acceptance testing and documentation.
200 Apex Classes. 50 tests failing in production. The other ones are fake tests with no assertions.
Our Org was taken over by keen developers who automated everything and now we have “the world’s best self driving car… with no wheels”.
2500 permission sets.
UAT Sandbox not refreshed in 15 months.
Hard coded user names in Apex classes.
1000 users but 5000 roles.
Core opportunity object and then 2 extra objects for more fields.
Took all custom fields off standard objects and put them on a single custom object.
Everything was coded in Apex by consultants who didn’t understand core Salesforce features. 3 million lines of code!! Every field was referenced so none could ever be deleted.
Inherited 6 year old Org and discovered Field History had never been switched on.
12 triggers on the Case object. Sigh.
1,500 lines of j++ intended to inflate test coverage.
Inside sales couldn’t work out how to convert lead so printed it out and left on the desk of the sales person.
Another scary Org: over 600 objects, 24,000 reports & 1200 dashboards.
User could not access an opp. Asked them to send the URL of the record. They printed out the opp, scanned it and sent it as an email. Bless their heart.
Someone had referenced all the Test 1, Test 2, Test 3 account names to be ignored in their code. Yikes!
Every object had a custom field for last modified date/time.
Every user is a system administrator.
All business process and data for a 40-user company was on the same standard object.
Profile for every user.
Thousands of private reports for inactive users.
Inherited Org. Every user had Admin rights.
Managed packaged installs 209 objects, 79 tabs, 351 Visualforce pages, 160 apex triggers and 3126 apex classes into your org.
Replicated Siebel CRM using all custom objects.
700 fields and 280 are formula fields on one object.
Our Development team built a trigger that lets an external system synchronize the account address to their contact addresses and validates with an error message if any user tries to update the contact addresses. After deploying it to the Production environment, users could not create contacts anymore.
We spent time analyzing what was going on and found out there were workflows overlapping the trigger in the way that any user can update the contact addresses through the respective account. Workflows were given every time a Contact record is created or updated.
738 Apex triggers developed over last 8 years by external consultants. No documentation.
Case object maxed out at 800 fields with 54 record types.
We found people who are doing Trailhead modules inside our Production Org.
We have 271 Permission Sets, 100s of public groups used in sharing rules and 103(ish) profiles.
Consolidating 2 small Orgs after an acquisition took 8 people 4 months.
464 fields (all used) and 14 stages on Opportunity object but the page goes on forever and takes minutes to load.
15,000 reports. No comment.
Contact object maxed out with 800 fields when trying to consolidate 5 orgs. So we have no idea how to consolidate without duplicating an object.
Over 100 picklist values on a field but we have no idea which ones are used so we can’t delete any.
It took us 5 times to clean the Opportunity record to free up fields.
We have 49,700 email templates. A bug in the managed package that integrated with a 3rd party marketing app (not Salesforce) created email templates every time it ran.
We are trying to consolidate 55 Orgs. We have 4 business units but shared customers. So should we have 4 Orgs or 1? And how do we get there?
The audit to scope the clean-up work has taken 4 consultants 30 days. This 8-year-old Org doesn’t have a single line of documentation.
I learned we had 1,500,000 lines of undocumented Apex code.
5372 Apex Classes and 55 Managed Packages, but I am not sure which we can delete.
We have 15,000 reports with no sensible naming.
We’ve maxed out our 500 field limit on a Task. Let that just sink in for a minute.