Building Custom Objects When Standard Objects Already Exist
“Built a custom Project_Tracker__c object. Turns out Salesforce has a perfectly good Task and Event system.”
What Happened
A client asked for project tracking. Instead of evaluating standard objects, I immediately built Project__c, Milestone__c, and Project_Task__c custom objects with custom fields, page layouts, reports, and dashboards. Three weeks of work. Then I discovered the client already had Cases and Tasks configured for similar workflows. We could have used standard objects with minor customization. My custom objects duplicated functionality, confused users who now had two places to track work, and couldn't leverage standard Salesforce features like Activity Timeline.
The Wrong Way
// "We need project tracking!" // Me: "I'll build it from scratch!" // // Custom Objects Created: // - Project__c (Name, Status, Start_Date, End_Date) // - Milestone__c (Name, Due_Date, Project__c lookup) // - Project_Task__c (Subject, Status, Milestone__c) // // 3 weeks of development. // New page layouts, list views, reports. // Users confused: "Do I use Tasks or Project_Tasks?"
The Right Way
// Step 1: Check standard objects FIRST // Cases → good for work items with status tracking // Tasks → good for assignable action items // Opportunities → good for tracked deliverables // // Step 2: Can you extend standard objects? // Add custom fields to Task: // Project_Name__c (text or lookup) // Milestone__c (picklist) // // Step 3: Only build custom objects when // standard objects genuinely can't support the // use case (usually: need for complex // many-to-many relationships or custom UI). // // Standard objects give you: Activity Timeline, // Global Search, Mobile app support, // Einstein Activity Capture — for FREE.
The Lesson
Always evaluate standard objects first. Custom objects lose standard features like Activity Timeline, Einstein, and mobile optimization. Build custom only when standard genuinely can't work.
Enjoyed this? Get more like it.
Glen's Musings — AI, investing, and building things. Occasional. Free.
More Architecture Mistakes
5 Process Builders, 3 Flows, 2 Triggers on One Object
Stacked automations from three different consultants over two years. Nobody knew what fired when.
Read morePainfulHardcoded Config Values Instead of Custom Metadata Types
Hardcoded thresholds, API endpoints, and business rules in Apex. Every change required a deployment.
Read morePainfulThe God Object: One Custom Object to Rule Them All
Created one custom object with 200 fields to handle every use case. It handled none of them well.
Read more