Cleaning Operations Implementation

Cleaning Operations CRM — Implementation Document
Implementation Document

Cleaning Operations CRM

A step-by-step implementation guide covering every phase of the Salesforce build — from org setup and custom object configuration through to flow automation, security design, test results, and a full troubleshooting guide.

Implementation Guide 7 Phases Custom Objects Flow Automation Test Results Troubleshooting Impl Doc v1.0
Implementation Context

“This document captures the full implementation of the Cleaning Operations CRM in Salesforce — detailing every configuration step, automation build, security setup, and test result. Produced as a portfolio demonstration of end-to-end Salesforce administration capability.”

📄 Full Implementation Document

The complete Word document includes all 7 phases, full field configuration tables, Flow setup steps, a 10-item test checklist, and a 6-issue troubleshooting guide.

Download Document
Implementation Overview — Visual Summary
Cleaning CRM Implementation Overview showing objects, automation flows, process flow and key features

Cleaning CRM — Implementation Overview · Objects · Flows · Process

Key Features Delivered

The implementation delivers the following core capabilities for the cleaning business.

Automated Invoice Creation

A Cleaning Invoice is automatically generated every time a Cleaning Job is created — zero manual steps required.

Real-Time Payment Tracking

Payments update the Invoice balance instantly. Invoice status changes to Paid automatically when fully settled.

Real-Time Balance Calculation

Formula fields and roll-up summaries keep the outstanding balance accurate at all times with no manual calculation.

Clean Data Relationships

Master-Detail and Lookup relationships connect Account → Property → Job → Invoice → Payment in a clear, navigable chain.

Role-Based Security

Cleaners can only access their own Jobs. Financial data is restricted to management only via profiles and permission sets.

Operations Dashboard

6-component real-time dashboard covering job status, upcoming work, outstanding invoices, revenue, and cleaner workload.

🗓️

Implementation Phases

The build was completed across 7 structured phases. All phases are complete.

Phase 1
Org Setup & Lightning App
✓ Complete
  • Configured Salesforce Developer Edition org — company settings, fiscal year, custom domain
  • Built custom Lightning App: Cleaning Operations CRM with full object navigation
Phase 2
Custom Objects & Fields
✓ Complete
  • Created 4 custom objects: Properties, Cleaning Jobs, Cleaning Invoices, Cleaning Payments
  • Configured all fields — picklists, currency, formula, roll-up summary, lookups, master-detail
  • Set auto-number formats: PROP-{000}, JOB-{0000}, INV-{0000}, PAY-{0000}
Phase 3
Page Layouts & Compact Layouts
✓ Complete
  • Tailored page layouts for all 4 custom objects — removed clutter, organised related lists
  • Compact layouts configured for Cleaning Jobs and Invoices to show key fields in highlights panel
Phase 4
Flow Automation (3 Flows)
✓ Complete
  • Flow 1: Job → Invoice — record-triggered on Job creation, auto-creates linked Invoice
  • Flow 2: Payment → Invoice Update — updates Amount Paid, recalculates balance, sets status to Paid
  • Flow 3: Job Completion → stamps Completed Date, updates Invoice status
Phase 5
Security & Access Control
✓ Complete
  • 3-tier Role Hierarchy: Owner/Admin → Operations Manager → Cleaner/Staff
  • Custom Cleaner profile — read/edit own Jobs only, no Invoice or Payment access
  • Permission sets: Job Management, Invoice & Payment Access, Read-Only Reporting
Phase 6
Reports & Dashboards
✓ Complete
  • 6 reports: Jobs by Status, Upcoming Jobs, Outstanding Invoices, Revenue by Month, Lead Pipeline, Property Activity
  • Operations Dashboard with 6 components: donut chart, list, metric, bar chart, funnel, table
Phase 7
Sample Data Loading
✓ Complete
  • Loaded 5 Accounts, 8 Properties, 12 Cleaning Jobs (various statuses), 12 Invoices, 9 Payments
  • Demonstrates full end-to-end process flow live in the org

Automation Configuration

Three record-triggered Flows handle the core automation. Each is activated and tested end-to-end.

Flow 1 Job → Invoice Creation
⚡ Trigger: After Cleaning Job is Created (Record-Triggered, After Save)
  1. Flow fires immediately after Job record is saved
  2. Creates a new Cleaning Invoice record
  3. Sets: Invoice Amount = Job Amount, Status = Unpaid, Due Date = Job Date + 14 days
  4. Links Invoice back to parent Job via Master-Detail
Flow 2 Payment → Invoice Update
⚡ Trigger: After Cleaning Payment is Created or Updated
  1. Roll-Up Summary on Invoice recalculates Amount Paid automatically
  2. Flow evaluates Balance Due (formula: Invoice Amount − Amount Paid)
  3. If Balance = 0 → sets Invoice Status to Paid
  4. If Balance > 0 and Amount Paid > 0 → sets Invoice Status to Part-Paid
Flow 3 Job Completion Status Update
⚡ Trigger: After Cleaning Job Status changes to Completed
  1. Stamps today’s date into the Completed Date field on the Job
  2. Retrieves linked Cleaning Invoice
  3. Updates Invoice Status to reflect job completion
🧪

Test Results

Ten end-to-end tests were carried out to validate the implementation. All tests passed.

Ref Test Scenario Expected Result Result
T-001Create a new Cleaning JobJob saved. Flow fires and creates a linked Invoice with Status = Unpaid.Pass
T-002Invoice auto-created on Job saveCleaning Invoice in related list. Amount populated. Status = Unpaid.Pass
T-003Record a Cleaning PaymentPayment saved. Amount Paid on Invoice updates. Balance recalculates.Pass
T-004Full payment clears invoiceWhen payments equal Invoice Amount, Invoice Status → Paid automatically.Pass
T-005Mark Job as CompletedCompleted Date stamped. Invoice Status updates via Flow 3.Pass
T-006Lead conversion to AccountLead converts. No duplicate Account created if one already exists.Pass
T-007Property linked to AccountProperty saved and visible in related list on Account record.Pass
T-008Cleaner login — restricted accessCleaner sees only own Jobs. No access to Invoices or Payments.Pass
T-009Operations Dashboard loadsAll 6 components render with current data. Refresh works.Pass
T-010Part-payment updates balancePartial payment logged. Amount Paid updates. Balance reduces. Status = Part-Paid.Pass
🔧

Troubleshooting Guide

Common issues encountered during implementation and their resolutions.

Flow not triggering on Job creation

Check the Flow is Activated (not just Saved). Confirm the entry condition is set to run when the record is Created. Use Flow Debug to step through logic with a new test record.

Invoice Amount Paid not updating

Verify the Roll-Up Summary field on Invoice is linked to Cleaning Payments via the correct Master-Detail relationship. Check field API names match exactly what the Flow references.

Invoice Status not changing to Paid

Check the Flow 2 decision condition. Ensure the Balance Due formula field is calculating correctly. Test with a payment equal to the exact Invoice Amount — rounding differences can prevent the condition firing.

Cleaner can see other users’ Jobs

Review the OWD setting for Cleaning Jobs — it should be set to Private. Confirm the Role Hierarchy is correctly configured with Cleaner at the bottom tier with no upward visibility.

Dashboard shows no data

Remove all report filters temporarily to confirm records are accessible, then re-add filters one at a time to identify which filter is excluding records from the component.

Property not appearing in Account related list

Confirm the Property object has a Lookup field pointing to Account. Check the Related List has been added to the Account page layout via the Layout Editor.

👉 Non Profit B2B Portfolio
👉 Apex Operations Portfolio