automotive-cloud-setup
Use this skill when setting up or extending Salesforce Automotive Cloud — including the Vehicle / VehicleDefinition data model, dealer-OEM relationship modeling via AccountAccountRelation, ActionableEvent orchestration for service campaigns and recalls, FinancialAccount lifecycle for retail-credit deals, and DriverQualification / WarrantyTerm extensions. Triggers on: Automotive Cloud setup, Salesforce Automotive Cloud data model, Vehicle vs VehicleDefinition, dealer hierarchy AccountAccountRelation, Automotive Cloud actionable events, recall campaign Salesforce. NOT for general Sales Cloud opportunity work on a vehicle product (use standard Opportunity), NOT for Manufacturing Cloud sales agreements (use manufacturing-cloud-setup), NOT for Field Service vehicle inventory (use FSL skills).
Best use case
automotive-cloud-setup is best used when you need a repeatable AI agent workflow instead of a one-off prompt.
Use this skill when setting up or extending Salesforce Automotive Cloud — including the Vehicle / VehicleDefinition data model, dealer-OEM relationship modeling via AccountAccountRelation, ActionableEvent orchestration for service campaigns and recalls, FinancialAccount lifecycle for retail-credit deals, and DriverQualification / WarrantyTerm extensions. Triggers on: Automotive Cloud setup, Salesforce Automotive Cloud data model, Vehicle vs VehicleDefinition, dealer hierarchy AccountAccountRelation, Automotive Cloud actionable events, recall campaign Salesforce. NOT for general Sales Cloud opportunity work on a vehicle product (use standard Opportunity), NOT for Manufacturing Cloud sales agreements (use manufacturing-cloud-setup), NOT for Field Service vehicle inventory (use FSL skills).
Teams using automotive-cloud-setup should expect a more consistent output, faster repeated execution, less prompt rewriting.
When to use this skill
- You want a reusable workflow that can be run more than once with consistent structure.
When not to use this skill
- You only need a quick one-off answer and do not need a reusable workflow.
- You cannot install or maintain the underlying files, dependencies, or repository context.
Installation
Claude Code / Cursor / Codex
Manual Installation
- Download SKILL.md from GitHub
- Place it in
.claude/skills/automotive-cloud-setup/SKILL.mdinside your project - Restart your AI agent — it will auto-discover the skill
How automotive-cloud-setup Compares
| Feature / Agent | automotive-cloud-setup | Standard Approach |
|---|---|---|
| Platform Support | Not specified | Limited / Varies |
| Context Awareness | High | Baseline |
| Installation Complexity | Unknown | N/A |
Frequently Asked Questions
What does this skill do?
Use this skill when setting up or extending Salesforce Automotive Cloud — including the Vehicle / VehicleDefinition data model, dealer-OEM relationship modeling via AccountAccountRelation, ActionableEvent orchestration for service campaigns and recalls, FinancialAccount lifecycle for retail-credit deals, and DriverQualification / WarrantyTerm extensions. Triggers on: Automotive Cloud setup, Salesforce Automotive Cloud data model, Vehicle vs VehicleDefinition, dealer hierarchy AccountAccountRelation, Automotive Cloud actionable events, recall campaign Salesforce. NOT for general Sales Cloud opportunity work on a vehicle product (use standard Opportunity), NOT for Manufacturing Cloud sales agreements (use manufacturing-cloud-setup), NOT for Field Service vehicle inventory (use FSL skills).
Where can I find the source code?
You can find the source code on GitHub using the link provided at the top of the page.
SKILL.md Source
# Automotive Cloud Setup
This skill activates when a practitioner is setting up Salesforce Automotive Cloud — the industry cloud that adds a VIN-centric data model, dealer hierarchy patterns, lifecycle event orchestration, and retail-credit financial objects on top of Sales / Service Cloud. It covers the Vehicle vs VehicleDefinition split, dealer-OEM relationship modeling, ActionableEvent orchestration, and FinancialAccount lifecycle. It does NOT cover Field Service mobile inventory, Manufacturing Cloud forecasting, or generic Sales Cloud opportunity flows that happen to reference a vehicle.
---
## Before Starting
Gather this context before working in this domain:
- Confirm the org has the Automotive Cloud license — the skill's standard objects (`Vehicle`, `VehicleDefinition`, `DriverQualification`, `WarrantyTerm`, the `Scope3CrbnFtprnt` family, etc.) are gated behind that license and will not appear in Object Manager otherwise.
- Identify the source-of-truth for VIN data. In most installations the OEM inventory feed or a Dealer Management System (DMS) is upstream — Automotive Cloud is rarely the system of record for vehicle build data.
- Map the dealer org structure on paper before configuring `AccountAccountRelation`. Multi-tenant OEM-dealer-customer hierarchies are difficult to refactor once relationship records exist.
- Identify which lifecycle events ActionableEvent will orchestrate (recalls, service campaigns, warranty notifications). The `ActionableEventType` design happens up-front, not iteratively.
---
## Core Concepts
### Vehicle vs VehicleDefinition
This is the foundational data-model split practitioners get wrong on day one:
**`VehicleDefinition`** — the model/trim/year template ("2026 Ford F-150 Lariat 4x4"). One record per build configuration, shared across many physical vehicles. Owns specifications, MSRP, available options, and `VehDefSearchableField` records used by inventory search.
**`Vehicle`** — the physical, VIN-identified asset. One record per VIN. Points to its `VehicleDefinition` via `VehicleDefinitionId`. Owns the per-instance state: current owner, current dealer, mileage, registration, warranty start date.
Mixing these — for example, putting MSRP on `Vehicle` instead of `VehicleDefinition` — duplicates pricing data across every VIN and breaks model-level reporting. Putting VIN on `VehicleDefinition` collapses the model into a single instance and breaks inventory search.
### Dealer-OEM Hierarchy via AccountAccountRelation
Automotive Cloud uses Account for dealers, OEMs, and customers, but the dealer ↔ OEM relationship is modeled through **`AccountAccountRelation`** rather than the classic `ParentId` field. This is deliberate: a dealer can sell vehicles from multiple OEMs (multi-franchise dealerships are the norm), and a parent account hierarchy is single-valued.
Each `AccountAccountRelation` carries a relationship role (e.g., `Franchisee`, `Distributor`, `Service Partner`) and effective dates. Sharing rules and visibility decisions should reference these relations rather than `ParentId`.
### ActionableEvent for Lifecycle Orchestration
Automotive Cloud ships an event-driven orchestration model for recalls, service campaigns, and other multi-step lifecycle actions:
- **`ActionableEventType`** — the template ("FY26 Q2 Brake Recall"). Defines the orchestration recipe.
- **`ActionableEventTypeDef`** — versioned definition rows attached to the type. Lets the recipe change over time without losing history.
- **`ActionableEventOrchestration`** — the runtime instance attached to a specific Vehicle / Account. Tracks state across the orchestration steps.
- **`ActionableEventSubtype`** — sub-categories within a type, used to fan out the recipe.
This is how a recall campaign reaches every affected VIN, opens a Case at the responsible dealer, and tracks remedy completion — without bespoke automation.
### FinancialAccount for Retail Credit
`FinancialAccount`, `FinancialAccountAddress`, `FinancialAccountBalance`, `FinancialAccountFee` — these objects model the loan / lease / financing tied to a vehicle sale. They are the same objects used by Financial Services Cloud, sharing the data model across the Industries platform. Connect them to the Vehicle (via a junction or custom lookup), to the customer Account, and to the Opportunity that closed the deal.
### DriverQualification and Fleet
`DriverQualification` tracks license, endorsement, and medical-certificate state for fleet drivers. It is paired with `Driver`, `DrivingLicense`, and `Fleet` for commercial/fleet operations. Unused for retail consumer scenarios — only enable when the org actually has fleet customers.
---
## Common Patterns
### Pattern 1: VIN Ingestion from OEM / DMS Feed
**When to use:** Standing up a new dealer org or migrating from a legacy DMS.
**How it works:**
1. Bulk-load `VehicleDefinition` records first — one per model/trim/year, deduplicated on the natural key (Make + Model + ModelYear + Trim).
2. Bulk-load `Vehicle` records, lookup-resolving `VehicleDefinitionId` from the staged definitions. Use external IDs on both objects to make the load idempotent.
3. Populate `VehDefSearchableField` rows for every searchable spec attribute on the definition (this drives inventory UX search).
4. Wire a delta feed (Platform Event or Bulk API 2.0) for ongoing inventory sync — full reload on every run is wasteful at fleet scale.
**Why deduplicate definitions first:** Without a clean definitions table, VIN ingestion produces a definition explosion (one definition per VIN), breaking model-level reporting and inflating storage.
### Pattern 2: Dealer Hierarchy with Multi-Franchise Support
**When to use:** Any org modeling dealers that sell more than one OEM brand.
**How it works:**
1. Create the OEM as an `Account` of record type `OEM` (or equivalent custom record type).
2. Create each Dealer as an `Account` of record type `Dealer`.
3. For each OEM-Dealer pairing, create an `AccountAccountRelation` with role `Franchisee` and effective dates.
4. Build sharing rules and report filters off `AccountAccountRelation`, not `ParentId`.
5. Customer Accounts link to the selling Dealer via a custom lookup, never via `ParentId` (which would break OEM-Dealer hierarchy).
### Pattern 3: Recall Campaign Orchestration
**When to use:** OEM issues a recall affecting a defined VIN range.
**How it works:**
1. Define an `ActionableEventType` for the recall family (e.g., "Brake Component Recall").
2. Create an `ActionableEventTypeDef` for this specific recall instance — the version of the recipe that applies right now.
3. For each affected VIN, generate an `ActionableEventOrchestration` referencing the Vehicle and the type.
4. The orchestration steps notify the customer, open a Case at the assigned dealer, and track remedy completion through the orchestration state.
5. Report on completion rate by querying orchestration state per type.
---
## Decision Guidance
| Situation | Recommended Approach | Reason |
|---|---|---|
| Multi-franchise dealer (sells multiple OEM brands) | `AccountAccountRelation` per OEM-Dealer pair | `ParentId` is single-valued; can't model multi-franchise |
| Pricing / MSRP / build specs | Fields on `VehicleDefinition` | Belongs to the model template, not the VIN |
| Per-VIN state (mileage, owner, registration) | Fields on `Vehicle` | Belongs to the physical asset |
| Recall affecting a VIN range | `ActionableEventType` + per-VIN `ActionableEventOrchestration` | Built-in orchestration; avoids bespoke trigger code |
| Retail loan / lease tied to a vehicle sale | `FinancialAccount` + `FinancialAccountBalance` + lookup to Vehicle | Industries-shared data model; reuse rather than custom Account hierarchy |
| Fleet / commercial driver tracking | `Driver` + `DriverQualification` + `Fleet` | Standard fleet objects; do not invent custom Driver |
| Used-car appraisal workflow | `Appraisal` standard object | Ships with Automotive Cloud — do not build custom |
---
## Recommended Workflow
1. Confirm Automotive Cloud license is provisioned and standard objects appear in Object Manager.
2. Map the dealer/OEM/customer org structure on paper. Decide whether `AccountAccountRelation` is needed (any multi-franchise scenario → yes).
3. Build the `VehicleDefinition` master from the OEM build catalog, with external IDs for idempotent reload.
4. Implement `Vehicle` ingestion using the definition lookup, with a delta-feed pattern (Platform Event or Bulk API 2.0).
5. Configure `AccountAccountRelation` records and rebuild sharing rules to reference them.
6. For each lifecycle program (recall, service campaign, warranty notification), define `ActionableEventType` and `ActionableEventTypeDef` versions before generating orchestrations.
7. If retail financing is in scope, configure `FinancialAccount` lifecycle and link to Vehicle + Opportunity.
8. Test the end-to-end flow with a representative VIN: dealer assignment, recall orchestration, financial account creation.
---
## Review Checklist
- [ ] `VehicleDefinition` and `Vehicle` correctly separated — pricing / specs not duplicated per VIN
- [ ] External IDs on both Vehicle and VehicleDefinition for idempotent reload
- [ ] `AccountAccountRelation` used for OEM-Dealer relationships (not `ParentId`)
- [ ] Sharing rules reference `AccountAccountRelation`, not `ParentId`
- [ ] `ActionableEventType` + `ActionableEventTypeDef` defined before generating orchestrations
- [ ] FinancialAccount records linked to both Vehicle and Opportunity (no orphan financials)
- [ ] DriverQualification only populated for fleet-customer scenarios (not retail)
- [ ] `Appraisal` standard object used rather than a custom `Appraisal__c`
---
## Salesforce-Specific Gotchas
1. **Vehicle vs VehicleDefinition Confusion** — Putting MSRP, options, or build specs on `Vehicle` instead of `VehicleDefinition` duplicates data per VIN and breaks model-level reporting. Always keep the model template separate from the per-VIN instance.
2. **`ParentId` Hierarchy Cannot Model Multi-Franchise Dealers** — A dealer that sells Ford and Toyota has two OEM relationships. `ParentId` is single-valued and breaks at the second OEM. Use `AccountAccountRelation` from day one.
3. **ActionableEvent Without TypeDef Versioning** — Skipping `ActionableEventTypeDef` and pointing orchestrations directly at `ActionableEventType` works initially, but the moment the recipe changes (recall remedy steps update), historical orchestrations get rewritten retroactively. Always create a TypeDef per version.
4. **VIN as External ID on the Wrong Object** — Marking VIN as the external ID on `VehicleDefinition` collapses the entire model into one record. VIN is a per-instance attribute and belongs as the external ID on `Vehicle` only.
5. **DriverQualification for Retail Customers** — Populating `DriverQualification` on consumer Accounts pulls in fleet-management compliance UX (license expiry alerts, medical-cert tracking) that retail orgs do not need. Only enable for fleet customers.
6. **Skipping `VehDefSearchableField` Population** — Without these rows, the inventory search UI returns no results even when `VehicleDefinition` records exist. The searchable fields table is a separate population step.
---
## Output Artifacts
| Artifact | Description |
|---|---|
| Data model design document | VehicleDefinition vs Vehicle field placement, external ID strategy |
| Dealer hierarchy map | OEM/Dealer/Customer Accounts with AccountAccountRelation roles |
| ActionableEvent type catalog | Type + TypeDef versions for each lifecycle program (recall, service, warranty) |
| FinancialAccount integration plan | Loan/lease lifecycle linking Vehicle, Opportunity, Account |
| Inventory ingestion runbook | OEM/DMS → VehicleDefinition → Vehicle load sequence with delta-feed pattern |
---
## Related Skills
- manufacturing-cloud-setup — for OEM-side production planning and account-based forecasting that feeds the dealer inventory
- industries-cloud-selection — for the architect-level decision of whether Automotive Cloud is the right vertical fit
- ha-dr-architecture — for backup strategy across the high-volume Vehicle / FinancialAccount data modelRelated Skills
shield-kms-byok-setup
Configure Shield Platform Encryption with customer-supplied (BYOK) or customer-held (Cache-Only Key Service) tenant secrets, rotate them, and recover. NOT for Classic Encryption or field masking.
experience-cloud-security
Use when configuring access controls, sharing, or site security for authenticated or guest Experience Cloud (community) users: external OWD, Sharing Sets, Share Groups, CSP, clickjack protection, guest user record access. NOT for internal sharing model configuration (use sharing-and-visibility).
headless-experience-cloud
Use when building custom frontends (React, Vue, mobile, static sites) that consume Salesforce CMS content via the Connect REST API headless delivery endpoint. Triggers: 'headless Salesforce CMS', 'deliver CMS content to external frontend', 'React app Salesforce content API', 'custom frontend Experience Cloud data', 'CMS delivery channel API'. NOT for standard Experience Builder site development. NOT for CMS Connect (3rd-party CMS federation into Experience Builder). NOT for Experience Cloud LWC components rendered inside a site.
experience-cloud-search-customization
Use this skill when configuring or extending search on an Experience Cloud site — covering Search Manager scope configuration, LWR vs Aura search component selection, federated search setup, guest user search access, and custom search result components. NOT for SOSL/SOQL query development. NOT for internal Salesforce global search or Einstein Search for agents.
experience-cloud-multi-idp-sso
Use this skill when configuring multiple identity providers (OIDC and/or SAML) on a single Experience Cloud site or across tenant-specific portals in the same org — covering auth provider registration, Start SSO URL routing, Federation ID mapping, RegistrationHandler implementation, and simultaneous SP+IdP topology. Trigger keywords: multiple identity providers Experience Cloud, multi-tenant SSO community portal, vendor and citizen portal same site, OIDC SAML both on login page, tenant-specific login routing community. NOT for internal Salesforce employee SSO configuration. NOT for single auth provider setups — see experience-cloud-authentication for basic SSO.
experience-cloud-lwc-components
Use when building custom LWC components for Experience Cloud (Experience Builder sites, LWR portals, Aura-based communities). Covers community context imports, guest user Apex access patterns, navigation API differences between LWR and Aura, and JS-meta.xml target configuration for Experience Builder exposure. NOT for internal LWC components deployed to Lightning App Builder or standard record pages (see lwc/lwc-development). NOT for Aura community components. Trigger keywords: build LWC for Experience Cloud, custom component community portal LWC, guest user LWC component, community context import salesforce, lightningCommunity target, @salesforce/community, guest Apex.
experience-cloud-authentication
Use when building custom login pages, social SSO flows, self-registration flows, or passwordless OTP login for Experience Cloud (community) sites. Trigger keywords: custom login page Experience Cloud, social SSO community portal, passwordless login Experience Cloud, self-registration custom flow, headless authentication community, auth provider OIDC SAML site. NOT for internal SSO configuration (use identity/sso skills). NOT for standard username/password authentication with no customization.
experience-cloud-api-access
Use this skill when configuring or troubleshooting API access for Experience Cloud external users and guest users: guest user Apex data access, Customer Community Plus or Partner Community REST/SOAP API access, external user OAuth scopes, and sharing enforcement on API responses. Trigger keywords: Experience Cloud API access external user, community user REST API, guest user API limits, Customer Community API permissions, external user OAuth. NOT for internal Salesforce API authentication, non-community OAuth flows, or internal user API security.
slack-salesforce-integration-setup
Use this skill when setting up or troubleshooting the Salesforce for Slack managed app — including connecting a Salesforce org to a Slack workspace, configuring the three-party admin handshake, linking Slack channels to Salesforce records, enabling record preview sharing, and managing org-level limits. Triggers on: Salesforce for Slack app not connecting, Slack org connection setup, Salesforce record sharing in Slack, Slack workspace admin approval, connecting Salesforce to Slack. NOT for building custom Slack apps or Slack bots (separate development platform), not for Slack Workflow Builder Salesforce connector (use slack-workflow-builder skill), not for Flow-based Slack messaging (use flow-for-slack skill).
salesforce-maps-setup
Use when configuring Salesforce Maps (formerly MapAnything) — territory planning, route optimization, live tracking, geo-grid visualizations, and check-in/check-out workflows for Sales or Service field reps not on Field Service. Covers package installation order (Maps + Maps Advanced + Maps Routing/Live Tracking add-ons), the MapsTerritoryPlan / MapsAdvancedRoute / MapsLayer object family, base-data syncs (Geocoding and Routing services), and integration with Sales and Service Cloud records. Triggers: 'Salesforce Maps setup', 'MapAnything migration', 'territory planning by polygon', 'route optimization for sales reps', 'live tracking field reps', 'plot accounts on a map', 'check-in to the closest account'. NOT for Field Service Lightning territory and scheduling (use admin/fsl-scheduling-optimization-design and data/fsl-territory-data-setup) — Maps and FSL are different products. NOT for Consumer Goods Cloud retail visit planning (use admin/consumer-goods-cloud-setup) — RoutePlan/Visit objects are CG-specific. NOT for Tableau / CRM Analytics geo charts.
private-connect-setup
Configure Private Connect between Salesforce and AWS/Azure for traffic to stay on private networks. NOT for standard internet callouts.
net-zero-cloud-setup
Use this skill when configuring Salesforce Net Zero Cloud — including Scope 1/2/3 emission source modeling via the StnryAssetCrbnFtprnt / VehicleAssetCrbnFtprnt / Scope3CrbnFtprnt object families, emission factor library setup (EmssnFctr / EmssnFctrSet), DPE-driven carbon calculation jobs, supplier engagement scoring, and CSRD / ESRS / TCFD disclosure pack mapping. Triggers on: Net Zero Cloud setup, Sustainability Cloud carbon accounting, Scope 1 2 3 emissions Salesforce, emission factor library, supplier engagement Net Zero, ESG disclosure pack mapping. NOT for ESG content scoring (use Marketing Cloud), NOT for general financial reporting (use Accounting Subledger), NOT for energy-only utility billing (use Energy & Utilities Cloud).