Study guide

4.2 Core CRM Objects & Standard Schema

Salesforce Certified Platform Developer I Exam

Track your progress as you read

Finished sections get a check mark.

1 Introduction & Exam Overview

1.1 Current Exam Facts 1.2 Blueprint Weights & Study Strategy

2 Platform Fundamentals

2.1 Multi-Tenant Architecture & Shared Resources 2.2 MVC Mapping on the Lightning Platform 2.3 Declarative vs Programmatic Decisions 2.4 Agentforce for Developers: Use Cases & Limitations

3 Data Modeling & Schema

3.1 Objects, Fields & Schema Design 3.2 Relationship Types & Implications 3.3 Schema Design Impact on Apex 3.4 Data Import & Export for Development

4 Platform Data Features

4.1 Formula Fields & Roll-Up Summaries 4.2 Core CRM Objects & Standard Schema 4.3 AppExchange Extensions & Platform Boundaries

5 Declarative Process Automation

5.1 Record-Triggered Flows & Declarative Automation 5.2 Approval Processes & Business Rules 5.3 When to Use Apex vs Declarative Tools

6 Apex Language Basics

6.1 Variables, Constants & Apex Data Types 6.2 Lists, Sets & Maps 6.3 Control Flow & Exception Handling 6.4 Classes, Interfaces & OOP Patterns

7 SOQL, SOSL & DML

7.1 SOQL Query Fundamentals 7.2 SOSL Search Fundamentals 7.3 DML Operations & Bulkification 7.4 Governor Limits & Transaction Boundaries

8 Apex Triggers & Order of Execution

8.1 Trigger Structure & Context Variables 8.2 Bulk Trigger Patterns & Best Practices 8.3 Save Order of Execution 8.4 Recursion, Cascading & Transaction Control

9 Asynchronous Apex

9.1 @future Methods 9.2 Queueable Apex 9.3 Batch Apex 9.4 Schedulable Apex & Job Orchestration

10 Security, Events & Schema Access

10.1 Sharing, FLS, CRUD & Injection Prevention 10.2 Platform Events Publish & Subscribe 10.3 Programmatic Schema Access (Describe)

11 Visualforce

11.1 Visualforce Pages & Markup 11.2 Standard, Custom Controllers & Extensions 11.3 Visualforce in Lightning Experience

12 Lightning Components

12.1 Lightning Component Framework Benefits 12.2 Aura Component Structure & Resources 12.3 Lightning Web Components Fundamentals 12.4 LWC Data Access: Wire, Imperative & Events

13 UI Composition & Apex Integration Patterns

13.1 Composing UI in Lightning Apps 13.2 UI Security, Performance & Accessibility Patterns 13.3 Apex Actions for Flow, LWC, and Agentforce

14 Apex Testing

14.1 Testing Framework & Coverage Requirements 14.2 Writing Unit Tests for Triggers & Classes 14.3 Test Data Strategies & Isolation 14.4 Executing Tests & Execute Anonymous Differences

15 Debugging & Developer Tools

15.1 Debug Logs & Monitoring 15.2 Developer Console, CLI, VS Code & Workbench 15.3 Sandboxes, Scratch Orgs & Environment Strategy

16 Deployment & Release

16.1 Change Sets & Metadata Deployment 16.2 Unlocked Packages, Metadata API & Salesforce DX 16.3 Release Readiness & Credential Maintenance

4.2 Core CRM Objects & Standard Schema

Key Takeaways Explain This Topic AI

Core CRM objects—Account, Contact, Opportunity, Lead, Case, Campaign, User—ship with standard fields, relationships, and special platform behaviors

Common relationships include Account–Contact, Account/Contact–Opportunity, Lead conversion targets, Case to Account/Contact, and Campaign influence patterns

Person Accounts merge person and business account concepts when enabled; developers must know they change Account/Contact modeling

Prefer extending standard objects with fields, record types, and related customs over replacing CRM core with parallel custom objects

SOQL and Apex bind to standard API names and relationship names; knowing schema shape prevents incorrect joins and broken subqueries

Last updated: August 2026

4.2 Core CRM Objects & Standard Schema

Quick Answer: Salesforce CRM is built on a standard schema centered on Account , Contact , Opportunity , Lead , Case , Campaign , and User . Developers extend these objects with custom fields, record types, and related custom objects—they rarely replace them. Knowing standard relationships and special behaviors is required for correct SOQL, automation, and app design.

Platform Developer I assumes you can read a business scenario and map it onto the standard data model before inventing custom objects. This section is the CRM map you will reuse across Apex, Flow, and UI work.

Why Standard CRM Objects Matter to Developers

Standard objects are not just “admin defaults.” They include:

  • Documented API names used in Apex and SOQL ( Account , Contact , Opportunity )
  • Built-in relationships and child relationship names for subqueries
  • Special platform behaviors (Lead conversion, Opportunity products, Case assignment, Campaign members)
  • Standard UI and sharing patterns users already understand
  • AppExchange and integration expectations that target CRM core

Recreating “Customer__c” and “Deal__c” as pure custom objects throws away conversion, forecasting, standard reports, and years of platform optimization—exam answers almost always prefer standard when the concept fits.

Account

Account represents an organization (or, with Person Accounts, a person acting as an account). It is the gravitational center of B2B CRM.

Common roles:

  • Parent for Contacts, Opportunities, Cases, Contracts, and many custom children
  • Hierarchy via ParentId (account family trees)
  • Billing/shipping address fields and standard industry/type picklists

Developer notes:

  • Many children lookup or master-detail to Account
  • SOQL often filters AccountId on children or navigates Account.Name
  • Account teams, territory features, and sharing can affect visibility in enterprise orgs
  • Contact

Contact is a person associated with an Account (in the classic model).

Characteristics:

  • Typically requires or strongly associates to an Account (org settings and UI enforce patterns)
  • Email, phone, name fields power activity history and marketing syncs
  • Related to Cases, Opportunities (via Contact Roles), Campaigns (Campaign Members)
  • SOQL pattern: SELECT Name, Account.Name FROM Contact WHERE AccountId = :acctId

Contacts are people; Accounts are organizations—do not store company-level attributes only on Contact when Account is the right home.

Opportunity

Opportunity models a revenue deal in a sales process.

Key standard concepts:

  • StageName , CloseDate , Amount , Probability , IsWon / IsClosed
  • Relationship to Account ( AccountId ) and optional primary contact patterns via Opportunity Contact Roles
  • OpportunityLineItem (products), price books, and schedules in product-selling orgs
  • Record types and sales processes vary stages by business line

Developer notes:

  • Stage changes drive forecasts and often automation (Flow/Apex on stage)
  • Amount may roll from products depending on configuration
  • Child relationship queries retrieve line items and contact roles

Exam scenarios about “pipeline,” “closed won,” or “products on a deal” map to Opportunity—not a random custom object—unless requirements clearly diverge from sales deals.

Lead

Lead is a pre-qualification prospect: a person/company not yet converted into Account, Contact, and optionally Opportunity.

Special behavior—Lead conversion:

  • Converts to Account + Contact (+ optional Opportunity)
  • Field mapping defines how Lead fields land on targets
  • After conversion, the Lead is converted; ongoing work continues on Account/Contact/Opportunity

Developer implications:

  • Do not build long-term transactional history only on Lead if the business process assumes conversion
  • Apex and Flow often run on convert; tests must cover conversion paths when logic depends on it
  • Duplicate rules and matching often focus on Lead + Contact + Account

If the “prospect” is already a customer account, you may create Contacts/Opportunities directly—Leads are for the pre-account journey.

Case

Case is the standard support/service ticket object.

Typical fields/relationships:

  • AccountId , ContactId , Status , Priority , Origin , Subject
  • Case comments, emails, and milestone/entitlement features in service orgs
  • Assignment rules, escalation rules, and teams (declarative service features)

Developer notes:

  • Cases often drive Omni-Channel and service automation
  • Custom “Ticket__c” is a red flag when Case meets requirements
  • Parent-child Case hierarchies exist for complex issues
  • Campaign

Campaign represents a marketing initiative; Campaign Member links Leads/Contacts to campaigns with status (sent, responded, etc.).

Why developers care:

  • Influence and ROI reporting paths connect Campaigns to Opportunities
  • Members are a junction-like pattern between Campaign and person objects
  • Custom marketing models should extend Campaign when the concept is still a campaign
  • User

User is the identity record for people who log in (and some automated users).

Relevance:

  • OwnerId on most records points to User or Queue (for supported objects)
  • Hierarchical relationship on User models manager chains

Profile, permission sets, role, and license on User drive security—not the focus of this section, but schema always joins to User for ownership

Never invent a parallel “Employee__c” solely to represent Salesforce users when User is the correct identity; use custom objects for HR person records that are not licenses when needed.

Common Relationship Map (Memorize)

  • From To Pattern
  • Contact Account Lookup ( AccountId )
  • Opportunity Account Lookup ( AccountId )
  • Opportunity Contact Via Opportunity Contact Role (M:N style)
  • Case Account / Contact Lookups
  • Lead (none permanent) Converts into Account/Contact/Opportunity
  • Campaign Member Campaign + Lead/Contact Membership junction pattern
  • Most records User OwnerId
  • Account Account Hierarchy ParentId
  • Person Accounts (Awareness)

Person Accounts (when enabled) allow an Account to represent a person, blending Account and Contact behaviors for B2C-style models.

Developer awareness (exam-level):

  • Not every org has Person Accounts; behavior and available fields differ when enabled
  • Some standard assumptions about separate Account vs Contact records change
  • Integrations and packages must detect and handle Person Account orgs carefully

You do not need deep admin setup steps for PDI, but you must not design as if every person is always a Contact under a business Account in every org

Extend vs Replace Standard Objects

Approach When

Custom fields on standard Extra attributes on Account, Opportunity, Case, etc.

  • Record types / page layouts Different processes or UI on the same object
  • Related custom object New entity related to CRM core (Warranty_Claim__c → Asset/Account)

Replace with custom only Concept truly is not CRM standard (manufacturing run, IoT reading)—still relate to Account/Contact when the customer dimension exists

Anti-patterns:

  • Customer__c + Person__c cloning Account/Contact
  • Support_Ticket__c cloning Case without a strong reason
  • Storing opportunities as tasks or free-text on Account
  • Schema Implications for SOQL

Use standard API names — Account , CloseDate , StageName , not labels.

Relationship navigation — Contact.Account.Name , Case.Contact.Email .

Child subqueries —use correct child relationship names (for example, Opportunities under Account, Contacts under Account—verify in schema, do not invent plurals blindly).

Polymorphic fields — OwnerId (User vs Queue), WhoId / WhatId on Task/Event require type-aware querying patterns.

Lead vs Contact —queries must target the object that actually holds the record at that lifecycle stage.

Selectivity —filter on indexed standard fields (Id, lookups, some status fields) for governor-friendly code.

Record types —filter or branch on RecordType.DeveloperName when processes diverge. SELECT Id, Name, StageName, Account.Name,

  • (SELECT Quantity, UnitPrice FROM OpportunityLineItems)
  • FROM Opportunity
  • WHERE IsClosed = false AND AccountId = :accountId
  • Practical Scenario Mapping

“Qualify inbound interest before we create a customer record” → Lead , then convert.

“Track a dollar deal with stages and close date” → Opportunity under Account .

“Person at the company who receives support emails” → Contact .

“Open service issue with priority and status” → Case .

“Spring webinar and who responded” → Campaign + Campaign Member .

“Custom warranty claim against a customer” → Custom object related to Account/Contact/Asset—not a new CRM core.

Internalize the standard schema so every later topic—sharing, SOQL, triggers, LWC data services—has a stable backbone. Custom objects extend the model; they should not casually replace it.