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, theScope3CrbnFtprntfamily, 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
ActionableEventTypedesign 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:
- Bulk-load
VehicleDefinitionrecords first — one per model/trim/year, deduplicated on the natural key (Make + Model + ModelYear + Trim). - Bulk-load
Vehiclerecords, lookup-resolvingVehicleDefinitionIdfrom the staged definitions. Use external IDs on both objects to make the load idempotent. - Populate
VehDefSearchableFieldrows for every searchable spec attribute on the definition (this drives inventory UX search). - 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:
- Create the OEM as an
Accountof record typeOEM(or equivalent custom record type). - Create each Dealer as an
Accountof record typeDealer. - For each OEM-Dealer pairing, create an
AccountAccountRelationwith roleFranchiseeand effective dates. - Build sharing rules and report filters off
AccountAccountRelation, notParentId. - 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:
- Define an
ActionableEventTypefor the recall family (e.g., "Brake Component Recall"). - Create an
ActionableEventTypeDeffor this specific recall instance — the version of the recipe that applies right now. - For each affected VIN, generate an
ActionableEventOrchestrationreferencing the Vehicle and the type. - The orchestration steps notify the customer, open a Case at the assigned dealer, and track remedy completion through the orchestration state.
- 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
- Confirm Automotive Cloud license is provisioned and standard objects appear in Object Manager.
- Map the dealer/OEM/customer org structure on paper. Decide whether
AccountAccountRelationis needed (any multi-franchise scenario → yes). - Build the
VehicleDefinitionmaster from the OEM build catalog, with external IDs for idempotent reload. - Implement
Vehicleingestion using the definition lookup, with a delta-feed pattern (Platform Event or Bulk API 2.0). - Configure
AccountAccountRelationrecords and rebuild sharing rules to reference them. - For each lifecycle program (recall, service campaign, warranty notification), define
ActionableEventTypeandActionableEventTypeDefversions before generating orchestrations. - If retail financing is in scope, configure the
FinancialAccountlifecycle and link it to Vehicle + Opportunity. Then test end-to-end with a representative VIN: dealer assignment, recall orchestration, financial account creation.
Review Checklist
-
VehicleDefinitionandVehiclecorrectly separated — pricing / specs not duplicated per VIN - External IDs on both Vehicle and VehicleDefinition for idempotent reload
-
AccountAccountRelationused for OEM-Dealer relationships (notParentId) - Sharing rules reference
AccountAccountRelation, notParentId -
ActionableEventType+ActionableEventTypeDefdefined before generating orchestrations - FinancialAccount records linked to both Vehicle and Opportunity (no orphan financials)
- DriverQualification only populated for fleet-customer scenarios (not retail)
-
Appraisalstandard object used rather than a customAppraisal__c
Salesforce-Specific Gotchas
Vehicle vs VehicleDefinition Confusion — Putting MSRP, options, or build specs on
Vehicleinstead ofVehicleDefinitionduplicates data per VIN and breaks model-level reporting. Always keep the model template separate from the per-VIN instance.ParentIdHierarchy Cannot Model Multi-Franchise Dealers — A dealer that sells Ford and Toyota has two OEM relationships.ParentIdis single-valued and breaks at the second OEM. UseAccountAccountRelationfrom day one.ActionableEvent Without TypeDef Versioning — Skipping
ActionableEventTypeDefand pointing orchestrations directly atActionableEventTypeworks initially, but the moment the recipe changes (recall remedy steps update), historical orchestrations get rewritten retroactively. Always create a TypeDef per version.VIN as External ID on the Wrong Object — Marking VIN as the external ID on
VehicleDefinitioncollapses the entire model into one record. VIN is a per-instance attribute and belongs as the external ID onVehicleonly.DriverQualification for Retail Customers — Populating
DriverQualificationon 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.Skipping
VehDefSearchableFieldPopulation — Without these rows, the inventory search UI returns no results even whenVehicleDefinitionrecords 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 model