This document provides a step-by-step record of the build process — covering configuration decisions, sequencing, challenges encountered, and how they were resolved.
Case Object: Fields & Data Model
The first step was to establish the Case object data model before building any screens or automation.
Custom Fields Created
| Field | Type | Notes |
|---|---|---|
| Property Type | Picklist | Values: Residential, Commercial |
| Clean Date | Date | Date of the clean related to the query |
| Frequency | Picklist | Values: One-off, Weekly, Fortnightly, Monthly |
| Assigned Cleaner | Lookup (User) | Links case to cleaning operative user record |
| Resolution Notes | Long Text Area | 32,768 character limit |
Case Status Picklist Updated
Status values updated: New, In Progress, Escalated, Awaiting Client, Resolved, Closed. Resolved and Closed are marked as Closed status values.
In the existing Sales Cloud CRM, Assigned Cleaner was a text field. For the Service Cloud build this was upgraded to a Lookup to User — enabling proper reporting. In reality most cleaners are subcontractors; in a live implementation a Contact or custom object would be more appropriate, but User lookup demonstrates the relationship concept cleanly for portfolio purposes.
Service Console App
- App name: CRM App (deliberately generic — avoids implying this is a live production system)
- Navigation items: Cases, Accounts, Contacts, Entitlements, Knowledge, Tasks, Reports, Dashboards
- Utility bar: Omni-Channel, History, Macros
- User profiles: System Administrator, Standard User, Standard Platform User
Case List Views
| List View | Filter Logic |
|---|---|
| All Open Cases | Closed equals False — captures all non-closed cases regardless of status value |
| High Priority Cases | Priority equals High AND Closed equals False |
Columns configured: Account Name, Case Number, Contact Name, Subject, Case Type, Status, Priority, Date/Time Opened, Entitlement Name, Property Type.
Using ‘Closed equals False’ rather than filtering by specific status values ensures the list view automatically excludes any future closed status values without needing to be manually updated — a more scalable approach.
Case Record Page Layout
The default Case Lightning Record Page was edited in Lightning App Builder. Template changed to Header and Three Regions for a three-column console layout.
Highlights Panel
Compact Layout updated to show: Case Number, Status, Priority, Case Origin, Clean Date, Subject.
Case Detail Sections
Classic page layout editor used to organise fields into labelled sections: Case Details, Customer Details, Service Details, Description Information, Resolution Details.
Knowledge Component
Knowledge was not initially available as a component. Enabling Lightning Knowledge in Setup made it available. Once added, articles surface automatically based on case subject — no agent search required.
Case Assignment Rules
- Rule Entry 1: Priority equals High → Assigned to named agent
- Rule Entry 2: Priority equals Medium → Assigned to named agent
- Rule Entry 3: No criteria (catch-all) → Assigned to default agent
In this demo org all entries assign to a single user. The structure demonstrates the pattern used in a live implementation with queues and multiple agents.
Entitlements & Milestones
Enabling Entitlement Management
Entitlement Management was enabled in Setup → Entitlement Settings before any configuration could begin.
Entitlement Process
- First Response to Customer — 60 minutes from Entitlement Process start
- Close Case — 240 minutes from Milestone Criteria
Entitlement Record
A single Entitlement record called ‘Standard Cleaning SLA’ was created, linked to the Cleaning Support Desk SLA process.
Flow: Auto-Assign Entitlement
A record-triggered Flow was built to automatically assign the Entitlement to cases on creation — removing the need for manual agent input.
| Element | Configuration |
|---|---|
| Trigger | Object: Case. When: A record is created. Optimised for: Actions and Related Records |
| Get Records | Object: Entitlement. Filter: Name equals ‘Standard Cleaning SLA’ AND Account ID equals Triggering Record > Account ID |
| Update Records | Set: Entitlement ID = Entitlement from Get Records > ID |
The Flow was setting the Entitlement ID using the Entitlement Process ID — a different field. Resolved by mapping the correct ‘ID’ field in Update Records.
The Flow failed to activate because the Account ID filter referenced ‘$Record’ as an SObject element. Resolved by changing to ‘Triggering Record > Account ID’.
Case Path
Path Settings was enabled and a new path created on the Case object using the Status field. Six stages configured with Key Fields and Guidance for Success text: New, In Progress, Escalated, Awaiting Client, Resolved, Closed. Activated and added to the middle region of the Case record page.
Knowledge Base
- What to do when a client reports a missed clean
- How to handle an invoice or payment query
- Processing a booking or scheduling change request
- What to do if a clean fails inventory checks
The Knowledge component was confirmed to surface relevant articles automatically based on case subject.
Macros
Unable to Reach Client
- Instruction 1: Select Active Case Tab
- Instruction 2: Update Status to Awaiting Client
- Instruction 3: Close Tab
Request More Information
A second macro was configured to support agents requesting further information from clients.
Log a Call and Create Task instruction types were not available in the Developer Edition org. This is a platform limitation, not a configuration gap. In a full production licence, the macro would also log a call and create a follow-up task.
Quick Text
| Template | Category | Channel |
|---|---|---|
| Agent Greeting | Greeting | Email, Phone |
| Unable to Reach Client | Follow Up | |
| Case Resolved | Resolution |
Note: Category picklist values were not available by default and were added manually before saving each template.
Web-to-Case
Web-to-Case was enabled and an HTML form generated including: Contact Name, Email, Phone, Subject, Property Type, Clean Date, Description, Access Details. The form was styled and embedded on the portfolio website at salesforcesharon.com. Submitted forms create a Case record and trigger assignment rules automatically.
Reports & Dashboard
A dashboard called ‘Cleaning Service Performance Dashboard’ was created as the Service Console homepage with four components:
- Cases By Case Type — horizontal bar chart showing volume by case type
- Open Cases By Queue — table view with contact name, priority, subject, case number, property type
- Cases By Priority — bar chart across High, Medium, and Low priority
- Cases By Property Type — donut chart showing Residential vs Commercial split
Test Data
- Multiple accounts representing residential clients, letting agencies, and property management companies
- Contacts linked to each account with realistic names and email addresses
- Cases across all case types, priorities, and statuses — including Web-to-Case submissions
- Entitlements linked to accounts so the auto-assign Flow could be tested end to end
Build Summary
- Case object data modelling with custom fields and organised page layout sections
- Service Console configuration with utility bar and multi-tab working
- Automated case routing via Assignment Rules
- SLA enforcement via Entitlements and Milestones with automated countdown timers
- Flow automation for entitlement assignment — including real troubleshooting and resolution
- Multi-channel case creation via Web-to-Case and Email-to-Case
- Agent productivity tools — Macros, Quick Text, Knowledge Base
- Real-time operational visibility via Reports and Dashboard
This build was completed as a portfolio demonstration project. All business names, client data, and scenarios are fictional. The org is a Developer Edition org and some features are limited compared to a full production licence.
