# Salesforce Scheduler Data Model Template Pre-built data model for Salesforce Scheduler (Lightning Scheduler) using `flowchart LR` format with color coding and relationship indicators. ## Objects Included | Object | Type | Description | |--------|------|-------------| | ServiceAppointment | STD | Scheduled appointments | | ServiceResource | STD | People/equipment | | ServiceTerritory | STD | Service locations | | ServiceTerritoryMember | STD | Resource assignments | | WorkType | STD | Service types | | WorkTypeGroup | STD | Grouped work types | | AssignedResource | STD | Appointment assignments | | ResourceAbsence | STD | Time off/unavailability | | TimeSlot | STD | Available time slots | --- ## Query Org Metadata (Recommended) Enrich diagram with live org data: ```bash python3 ../../scripts/query-org-metadata.py \ --objects ServiceAppointment,ServiceResource,ServiceTerritory,WorkType \ --target-org myorg ``` --- ## Mermaid Template (Preferred) Left-to-right flowchart with color coding. ```mermaid %%{init: {"flowchart": {"nodeSpacing": 50, "rankSpacing": 80}} }%% flowchart LR %% ═══════════════════════════════════════════════════════════════ %% SALESFORCE SCHEDULER DATA MODEL %% LEGEND: LK = Lookup (-->), MD = Master-Detail (==>) %% Colors: Blue = Standard, Orange = Custom, Green = External %% ═══════════════════════════════════════════════════════════════ %% Core Scheduling Objects SA["ServiceAppointment
(count)"] SR["ServiceResource
(count)"] ST["ServiceTerritory
(count)"] %% Resource Assignments STM["ServiceTerritoryMember
(count)"] AR["AssignedResource
(count)"] %% Work Types WT["WorkType
(count)"] WTG["WorkTypeGroup
(count)"] WTGM["WorkTypeGroupMember
(count)"] %% Availability RA["ResourceAbsence
(count)"] TS["TimeSlot
(count)"] %% Related Objects Account["Account
(count)"] Contact["Contact
(count)"] User["User
(count)"] %% Service Appointment Account -->|"LK"| SA Contact -->|"LK"| SA ST -->|"LK"| SA WT -->|"LK"| SA %% Resource Structure User -->|"LK"| SR SR ==>|"MD"| STM ST -->|"LK"| STM %% Appointment Assignment SA ==>|"MD"| AR SR -->|"LK"| AR %% Work Type Groups WTG ==>|"MD"| WTGM WT -->|"LK"| WTGM %% Availability SR ==>|"MD"| RA %% Operating Hours ST -->|"LK"| TS %% Standard Objects - Sky Blue style SA fill:#bae6fd,stroke:#0369a1,color:#1f2937 style SR fill:#bae6fd,stroke:#0369a1,color:#1f2937 style ST fill:#bae6fd,stroke:#0369a1,color:#1f2937 style STM fill:#bae6fd,stroke:#0369a1,color:#1f2937 style AR fill:#bae6fd,stroke:#0369a1,color:#1f2937 style WT fill:#bae6fd,stroke:#0369a1,color:#1f2937 style WTG fill:#bae6fd,stroke:#0369a1,color:#1f2937 style WTGM fill:#bae6fd,stroke:#0369a1,color:#1f2937 style RA fill:#bae6fd,stroke:#0369a1,color:#1f2937 style TS fill:#bae6fd,stroke:#0369a1,color:#1f2937 style Account fill:#bae6fd,stroke:#0369a1,color:#1f2937 style Contact fill:#bae6fd,stroke:#0369a1,color:#1f2937 style User fill:#bae6fd,stroke:#0369a1,color:#1f2937 ``` --- ## Key Concepts ### Scheduling Flow ```text Customer (Contact) → WorkType → ServiceAppointment ← ServiceResource ↓ ServiceTerritory ``` ### Resource Availability | Object | Purpose | |--------|---------| | OperatingHours | Business hours definition | | TimeSlot | Available booking slots | | ResourceAbsence | Time off, breaks | | ServiceTerritoryMember | Territory assignment + hours | ### ServiceResource Types | Type | Description | |------|-------------| | Technician | Field service worker | | Dispatcher | Scheduling coordinator | | Crew | Group of resources | | Asset | Equipment, vehicles | --- ## Simplified Version (Core Objects Only) For presentations focusing on core scheduling flow: ```mermaid %%{init: {"flowchart": {"nodeSpacing": 50, "rankSpacing": 80}} }%% flowchart LR Contact["Contact"] SA["ServiceAppointment"] SR["ServiceResource"] ST["ServiceTerritory"] Contact -->|"LK"| SA ST -->|"LK"| SA SA ==>|"MD assigned"| SR style Contact fill:#bae6fd,stroke:#0369a1,color:#1f2937 style SA fill:#bae6fd,stroke:#0369a1,color:#1f2937 style SR fill:#bae6fd,stroke:#0369a1,color:#1f2937 style ST fill:#bae6fd,stroke:#0369a1,color:#1f2937 ``` --- ## Territory & Resource Model ```mermaid %%{init: {"flowchart": {"nodeSpacing": 50, "rankSpacing": 80}} }%% flowchart LR ST["ServiceTerritory"] SR["ServiceResource"] STM["ServiceTerritoryMember"] OpHrs["OperatingHours"] ST ==>|"MD"| STM SR -->|"LK"| STM ST -->|"LK"| OpHrs style ST fill:#bae6fd,stroke:#0369a1,color:#1f2937 style SR fill:#bae6fd,stroke:#0369a1,color:#1f2937 style STM fill:#bae6fd,stroke:#0369a1,color:#1f2937 style OpHrs fill:#bae6fd,stroke:#0369a1,color:#1f2937 ``` --- ## ASCII Fallback ```text ┌─────────────────────────────────────────────────────────────────────────────┐ │ SALESFORCE SCHEDULER DATA MODEL (L→R) │ │ Legend: LK = Lookup (-->), MD = Master-Detail (==>) │ └─────────────────────────────────────────────────────────────────────────────┘ ┌──────────────┐ ┌──────────────────────┐ │ ACCOUNT │──────────── LK ─────────────>│ SERVICE_APPOINTMENT │ │ (count) │ │ (count) │ └──────────────┘ └──────────┬───────────┘ │ ┌──────────────┐ │ MD │ CONTACT │──────────── LK ─────────────────────────┤ │ (count) │ ▼ └──────────────┘ ┌──────────────────────┐ │ ASSIGNED_RESOURCE │ ┌──────────────┐ │ (count) │ │ WORK_TYPE │──────────── LK ──────────────│ │ │ (count) │ └──────────┬───────────┘ └──────────────┘ │ LK ▼ ┌───────────────────┐ ┌────────────────────────────────────────┐ │ SERVICE_TERRITORY │═══ MD ═>│ SERVICE_TERRITORY_MEMBER │ │ (count) │ │ (count) │ └───────────────────┘ └────────────────────┬───────────────────┘ │ │ LK │ LK ▼ └───────────────────────────────>┌──────────────────────┐ │ SERVICE_RESOURCE │ │ (count) │ └──────────┬───────────┘ │ MD ▼ ┌──────────────────────┐ │ RESOURCE_ABSENCE │ │ (count) │ └──────────────────────┘ ``` --- ## Key Relationships Summary | Parent | Child | Type | Behavior | |--------|-------|------|----------| | ServiceTerritory | ServiceTerritoryMember | MD | Cascade delete | | ServiceResource | ServiceTerritoryMember | LK | Resource reference | | ServiceAppointment | AssignedResource | MD | Cascade delete | | ServiceResource | AssignedResource | LK | Resource reference | | ServiceResource | ResourceAbsence | MD | Cascade delete | | WorkTypeGroup | WorkTypeGroupMember | MD | Cascade delete | | WorkType | WorkTypeGroupMember | LK | Work type reference | | Account | ServiceAppointment | LK | Customer | | Contact | ServiceAppointment | LK | Contact person | | ServiceTerritory | ServiceAppointment | LK | Service location | | WorkType | ServiceAppointment | LK | Appointment type | --- ## Limits & Considerations | Limit | Value | |-------|-------| | Resources per territory | Unlimited | | Territories per resource | Unlimited | | Appointments per day | Performance consideration | | Operating hours slots | 24 per day max | | Time slot duration | Configurable (minutes) | --- ## Scheduler vs Field Service | Feature | Scheduler | Field Service | |---------|-----------|---------------| | Focus | Appointments | Work orders | | Optimization | Basic | Advanced (FSL) | | Gantt | No | Yes | | Dispatch | Manual | Automated | | Mobile | Standard app | FSL Mobile | --- ## 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