2026-06-26 20:21:51 +08:00
|
|
|
# Sales Cloud Data Model Template
|
|
|
|
|
|
|
|
|
|
Pre-built data model for Salesforce Sales Cloud using `flowchart LR` format with color coding and relationship indicators.
|
|
|
|
|
|
|
|
|
|
## Objects Included
|
|
|
|
|
|
|
|
|
|
| Object | Type | Description |
|
|
|
|
|
|--------|------|-------------|
|
|
|
|
|
| Account | STD | Companies and organizations |
|
|
|
|
|
| Contact | STD | People associated with accounts |
|
|
|
|
|
| Lead | STD | Potential customers |
|
|
|
|
|
| Opportunity | STD | Sales deals and revenue |
|
|
|
|
|
| OpportunityLineItem | STD | Products on opportunities |
|
|
|
|
|
| Product2 | STD | Product catalog |
|
|
|
|
|
| Campaign | STD | Marketing campaigns |
|
|
|
|
|
| CampaignMember | STD | Campaign responses |
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
## Query Org Metadata (Recommended)
|
|
|
|
|
|
|
|
|
|
Enrich diagram with live org data:
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
python3 ../../scripts/query-org-metadata.py \
|
|
|
|
|
--objects Account,Contact,Lead,Opportunity,Product2,Campaign \
|
|
|
|
|
--target-org myorg
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
## Mermaid Template (Preferred)
|
|
|
|
|
|
|
|
|
|
Left-to-right flowchart with color coding.
|
|
|
|
|
|
|
|
|
|
```mermaid
|
|
|
|
|
%%{init: {"flowchart": {"nodeSpacing": 50, "rankSpacing": 80}} }%%
|
|
|
|
|
flowchart LR
|
|
|
|
|
%% ═══════════════════════════════════════════════════════════════
|
|
|
|
|
%% SALES CLOUD DATA MODEL
|
|
|
|
|
%% LEGEND: LK = Lookup (-->), MD = Master-Detail (==>)
|
|
|
|
|
%% Colors: Blue = Standard, Orange = Custom, Green = External
|
|
|
|
|
%% ═══════════════════════════════════════════════════════════════
|
|
|
|
|
|
|
|
|
|
%% Core Objects
|
|
|
|
|
Lead["Lead<br/>(count)"]
|
|
|
|
|
Account["Account<br/>(count)"]
|
|
|
|
|
Contact["Contact<br/>(count)"]
|
|
|
|
|
Opportunity["Opportunity<br/>(count)"]
|
|
|
|
|
|
|
|
|
|
%% Product Objects
|
|
|
|
|
Product2["Product2<br/>(count)"]
|
|
|
|
|
OLI["OpportunityLineItem<br/>(count)"]
|
|
|
|
|
|
|
|
|
|
%% Campaign Objects
|
|
|
|
|
Campaign["Campaign<br/>(count)"]
|
|
|
|
|
CampaignMember["CampaignMember<br/>(count)"]
|
|
|
|
|
|
|
|
|
|
%% Relationships - Lead Conversion
|
|
|
|
|
Lead -.->|"converts"| Account
|
|
|
|
|
Lead -.->|"converts"| Contact
|
|
|
|
|
|
|
|
|
|
%% Relationships - Account to children
|
|
|
|
|
Account -->|"LK"| Contact
|
|
|
|
|
Account -->|"LK"| Opportunity
|
|
|
|
|
|
|
|
|
|
%% Relationships - Opportunity
|
|
|
|
|
Opportunity ==>|"MD"| OLI
|
|
|
|
|
Product2 -->|"LK"| OLI
|
|
|
|
|
Contact -->|"LK"| Opportunity
|
|
|
|
|
|
|
|
|
|
%% Relationships - Campaign
|
|
|
|
|
Campaign ==>|"MD"| CampaignMember
|
|
|
|
|
Lead -->|"LK"| CampaignMember
|
|
|
|
|
Contact -->|"LK"| CampaignMember
|
|
|
|
|
Campaign -->|"LK"| Opportunity
|
|
|
|
|
|
|
|
|
|
%% Standard Objects - Sky Blue
|
|
|
|
|
style Lead fill:#bae6fd,stroke:#0369a1,color:#1f2937
|
|
|
|
|
style Account fill:#bae6fd,stroke:#0369a1,color:#1f2937
|
|
|
|
|
style Contact fill:#bae6fd,stroke:#0369a1,color:#1f2937
|
|
|
|
|
style Opportunity fill:#bae6fd,stroke:#0369a1,color:#1f2937
|
|
|
|
|
style Product2 fill:#bae6fd,stroke:#0369a1,color:#1f2937
|
|
|
|
|
style OLI fill:#bae6fd,stroke:#0369a1,color:#1f2937
|
|
|
|
|
style Campaign fill:#bae6fd,stroke:#0369a1,color:#1f2937
|
|
|
|
|
style CampaignMember fill:#bae6fd,stroke:#0369a1,color:#1f2937
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
## Simplified Version (Core Objects Only)
|
|
|
|
|
|
|
|
|
|
For presentations focusing on core sales flow:
|
|
|
|
|
|
|
|
|
|
```mermaid
|
|
|
|
|
%%{init: {"flowchart": {"nodeSpacing": 50, "rankSpacing": 80}} }%%
|
|
|
|
|
flowchart LR
|
|
|
|
|
Lead["Lead"]
|
|
|
|
|
Account["Account"]
|
|
|
|
|
Contact["Contact"]
|
|
|
|
|
Opportunity["Opportunity"]
|
|
|
|
|
|
|
|
|
|
Lead -.->|"converts"| Account
|
|
|
|
|
Lead -.->|"converts"| Contact
|
|
|
|
|
Account -->|"LK"| Contact
|
|
|
|
|
Account -->|"LK"| Opportunity
|
|
|
|
|
Contact -->|"LK"| Opportunity
|
|
|
|
|
|
|
|
|
|
style Lead fill:#bae6fd,stroke:#0369a1,color:#1f2937
|
|
|
|
|
style Account fill:#bae6fd,stroke:#0369a1,color:#1f2937
|
|
|
|
|
style Contact fill:#bae6fd,stroke:#0369a1,color:#1f2937
|
|
|
|
|
style Opportunity fill:#bae6fd,stroke:#0369a1,color:#1f2937
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
## ASCII Fallback
|
|
|
|
|
|
2026-07-11 01:19:21 +08:00
|
|
|
```text
|
2026-06-26 20:21:51 +08:00
|
|
|
┌─────────────────────────────────────────────────────────────────────────────┐
|
|
|
|
|
│ SALES CLOUD DATA MODEL (L→R) │
|
|
|
|
|
│ Legend: LK = Lookup (-->), MD = Master-Detail (==>), -.-> = converts │
|
|
|
|
|
└─────────────────────────────────────────────────────────────────────────────┘
|
|
|
|
|
|
|
|
|
|
┌──────────┐ ┌──────────┐ ┌──────────────┐
|
|
|
|
|
│ LEAD │··········│ ACCOUNT │── LK ───>│ CONTACT │
|
|
|
|
|
│ (count) │ converts │ (count) │ │ (count) │
|
|
|
|
|
└────┬─────┘ └────┬─────┘ └──────┬───────┘
|
|
|
|
|
│ │ │
|
|
|
|
|
│ converts │ LK │ LK
|
|
|
|
|
│ ▼ ▼
|
|
|
|
|
│ ┌──────────────┐ ┌─────────────────┐
|
|
|
|
|
└───────────────>│ OPPORTUNITY │<──────│ (via OCR) │
|
|
|
|
|
│ (count) │ └─────────────────┘
|
|
|
|
|
└──────┬───────┘
|
|
|
|
|
│ MD
|
|
|
|
|
▼
|
|
|
|
|
┌──────────────────────┐
|
|
|
|
|
│ OPPORTUNITY_LINE_ITEM│◄── LK ──┌───────────┐
|
|
|
|
|
│ (count) │ │ PRODUCT2 │
|
|
|
|
|
└──────────────────────┘ │ (count) │
|
|
|
|
|
└───────────┘
|
|
|
|
|
|
|
|
|
|
┌──────────┐ ┌─────────────────┐
|
|
|
|
|
│ CAMPAIGN │═══ MD ══>│ CAMPAIGN_MEMBER │
|
|
|
|
|
│ (count) │ │ (count) │
|
|
|
|
|
└──────────┘ └─────────────────┘
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
## Key Relationships Summary
|
|
|
|
|
|
|
|
|
|
| Parent | Child | Type | Behavior |
|
|
|
|
|
|--------|-------|------|----------|
|
|
|
|
|
| Account | Contact | LK | Optional parent |
|
|
|
|
|
| Account | Opportunity | LK | Optional parent |
|
|
|
|
|
| Opportunity | OpportunityLineItem | MD | Cascade delete |
|
|
|
|
|
| Product2 | OpportunityLineItem | LK | Optional parent |
|
|
|
|
|
| Campaign | CampaignMember | MD | Cascade delete |
|
|
|
|
|
| Campaign | Opportunity | LK | Primary campaign source |
|
|
|
|
|
| Lead | (converts to) | - | Account + Contact created |
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
## Adding Custom Objects
|
|
|
|
|
|
|
|
|
|
Use orange styling for custom objects:
|
|
|
|
|
|
|
|
|
|
```mermaid
|
|
|
|
|
%%{init: {"flowchart": {"nodeSpacing": 50, "rankSpacing": 80}} }%%
|
|
|
|
|
flowchart LR
|
|
|
|
|
Account["Account<br/>(317)"]
|
|
|
|
|
Invoice["Invoice__c<br/>(1,200)"]
|
|
|
|
|
|
|
|
|
|
Account ==>|"MD"| Invoice
|
|
|
|
|
|
|
|
|
|
%% Standard - Sky Blue
|
|
|
|
|
style Account fill:#bae6fd,stroke:#0369a1,color:#1f2937
|
|
|
|
|
%% Custom - Orange
|
|
|
|
|
style Invoice fill:#fed7aa,stroke:#c2410c,color:#1f2937
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
## Best Practices
|
|
|
|
|
|
|
|
|
|
1. **Use `flowchart LR`** - Left-to-right flow for readability
|
|
|
|
|
2. **Keep objects simple** - Name + record count only
|
|
|
|
|
3. **Replace `(count)` placeholders** - With actual counts from query
|
|
|
|
|
4. **Add LDV indicator** - For objects >2M records: `LDV[~4M]`
|
|
|
|
|
5. **Color code object types** - Blue=Standard, Orange=Custom, Green=External
|