Salesforce Administrator Portfolio

CavendishESG

A custom Salesforce org for ESG data intake, validation, and compliance tracking — built for a £4.2bn asset manager operating across EMEA. Inspired by firsthand experience in ESG data infrastructure at LSEG.

OBJECT FIELDS RULES PERIOD APP NAV ALL SUBS METRICS FLOWS ROLES PROFILES ESG REPORTS RPT 1 RPT 2 RPT 3 RPT 4 FY24 H125 FLAGS DASH
ESG 20 screens
Hover outer · click to open
Custom Object Modelling Validation Rules Record-Triggered Flows Scheduled Flows Role Hierarchy Profile Permissions ESG Compliance Data Import Wizard Executive Dashboard Reporting Periods LSEG Industry Experience Cavendish Sustainable Finance £4.2bn AUM Custom Object Modelling Validation Rules Record-Triggered Flows Scheduled Flows Role Hierarchy Profile Permissions ESG Compliance Data Import Wizard Executive Dashboard Reporting Periods LSEG Industry Experience Cavendish Sustainable Finance £4.2bn AUM

Data integrity at institutional scale

Cavendish Sustainable Finance is a £4.2bn EMEA-focused asset manager with mandatory ESG reporting obligations across four business units. Their compliance team needed a system to collect metrics, enforce data quality, automate escalation, and give the CCO a live regulatory status view — without relying on spreadsheets.

"Built on firsthand experience ingesting, validating, and rationale-drafting ESG classification data at LSEG — the same operational rigour, now native to Salesforce."

The org manages the full compliance pipeline: business units submit ESG metrics per reporting period, reviewers approve or reject submissions, validation rules enforce data quality at point of entry, automated flows create compliance flags, and the executive dashboard surfaces regulatory status in real time.

Custom objects5 custom · 0 standard
Custom fields35+ across all objects
Validation rules5 rules on ESG Submission
Automated flows3 flows — record-triggered + scheduled
Profiles & roles3 personas — Submitter · Reviewer · CCO
Reporting periodsFY 2024 · H1 2025
Sample submissions28 records · 4 business units · 12 metrics
Dashboard components4 components · 4 reports
Data Model

Object architecture

Five custom objects — no standard CRM objects required. A purpose-built internal operational system where every object and relationship reflects real ESG compliance process logic, not CRM convention.

Custom Object
Reporting Period
The master record every submission anchors to. Defines the regulatory cycle, framework, date range, and operational status.
Period_Name__c Start_Date__c End_Date__c Framework__c Status__c Period_Owner__c Period_External_ID__c
Custom Object
Business Unit
Internal departments responsible for ESG data submission. Investment Management, Risk & Compliance, Operations, Corporate Affairs.
Unit_Name__c Region__c Unit_Head__c Active__c Unit_External_ID__c
Custom Object
ESG Metric
Master catalogue of 12 data points across Environmental, Social, and Governance categories — each with unit of measure and framework tag.
Metric_Name__c Category__c Unit_of_Measure__c Mandatory__c Framework_Tag__c Metric_External_ID__c
Core Object
ESG Submission
One record per metric per business unit per period. The operational heartbeat — submission, review, approval, rejection, and escalation all happen here.
Reporting_Period__c Business_Unit__c ESG_Metric__c Submitted_Value__c Status__c Submitted_By__c Approved_By__c Approval_Date__c
Child Object
Compliance Flag
Auto-created by Flow when a submission is overdue, rejected, or escalated. Assigns to the submitting user. Tracks resolution status.
ESG_Submission__c Flag_Type__c Flag_Date__c Resolved__c Assigned_To__c Resolution_Notes__c
Standard Object
User
The only standard object dependency. Referenced via Lookup across all five objects — Period Owner, Unit Head, Submitted By, Approved By, Assigned To.
Period_Owner__c → Unit_Head__c → Submitted_By__c → Approved_By__c → Assigned_To__c →

Three flows, zero manual intervention

The compliance workflow runs automatically. Approvals are date-stamped the moment they happen. Rejections create a flag and notify the submitter immediately. Overdue submissions are caught every morning before the team starts work.

All three flows are admin-tier only — no Apex, no custom code. Built entirely with Salesforce Flow Builder in a Developer Edition org.

01
Approval Date Stamp
Record-triggered · Status → Approved
Fires when ESG Submission Status changes to Approved
Updates Approval_Date__c with NOW() formula — current datetime
Enforces audit trail — approval timestamp is system-generated, not user-entered
02
Rejection Compliance Flag
Record-triggered · Status → Rejected
Fires when Status changes to Rejected on any ESG Submission
Creates a Compliance Flag record with Flag Type = Rejected
Assigns flag to the original submitting user for resolution
03
Overdue Submission Flag
Scheduled · Daily 08:00
Runs every morning — queries all Submitted records past Submission Date
Loops through results — creates one Overdue flag per record
Assigns each flag to the submitting user with Flag Date = today
Sample Data

Two reporting periods. Institutional scale.

Sample data generated via Python CSV and imported with Salesforce Data Import Wizard. Figures reflect real-world benchmarks for a mid-large UK EMEA asset manager — credible in an interview, grounded in LSEG industry context.

£4.2bn
Assets under management
28
ESG submission records
12
ESG metrics tracked
4
Business units
2
Reporting periods — FY 2024 · H1 2025
73%
ESG-screened AUM — FY 2024
1,840
Total Scope 1 & 2 tCO2e
41%
Female leadership ratio
Security Model

Three-tier access hierarchy

ESG Submitter
Data Entry
R C E D
Reporting Period
✓
–
–
–
Business Unit
✓
–
–
–
ESG Metric
✓
–
–
–
ESG Submission
✓
✓
✓
–
Compliance Flag
✓
–
–
–
ESG Reviewer
Review & Approve
R C E D
Reporting Period
✓
✓
✓
–
Business Unit
✓
✓
✓
–
ESG Metric
✓
✓
✓
–
ESG Submission
✓
✓
✓
–
Compliance Flag
✓
✓
✓
–
CCO Executive
Read-Only · Full View
R C E D
Reporting Period
✓
–
–
–
Business Unit
✓
–
–
–
ESG Metric
✓
–
–
–
ESG Submission
✓
–
–
–
Compliance Flag
✓
–
–
–

How it was built

Built in a Salesforce Developer Edition org across a structured multi-session build. The design draws directly on Lionel's background in ESG data infrastructure at LSEG — every object, field, and workflow reflects a real operational compliance requirement, not a textbook exercise.

Phase 1
Data model & custom app
Created the Cavendish Sustainable Finance Lightning app. Built 5 custom objects from scratch with full field sets, picklist values, and master-detail/lookup relationships. External ID fields added to all parent objects for data import compatibility.
Phase 2
Validation rules
Five validation rules on ESG Submission — blocking negative values, enforcing approval date logic, requiring Approved By user on approval, and enforcing segregation of duties (approver cannot be submitter).
Phase 3
Page layouts
Custom page layouts for all 5 objects — two-column field arrangement, logical section grouping, Compliance Flags related list surfaced on the ESG Submission layout.
Phase 4
Flow automation
Three flows: approval date stamp (record-triggered), rejection compliance flag (record-triggered), and daily overdue check (scheduled with loop). All admin-tier — no Apex.
Phase 5
Security model
Role hierarchy built across 3 tiers. Three custom profiles cloned from Standard User with object-level permissions enforcing submitter, reviewer, and CCO access boundaries.
Phase 6
Data import
28 ESG submissions across 2 reporting periods imported via Data Import Wizard using Python-generated CSVs. Multiple import strategies tested — resolved via hardcoded Salesforce Record IDs after External ID lookup limitations in the wizard for converted lookup relationships.
Phase 7
Reports & dashboard
Four reports — submission status by business unit, compliance flags by type, approval rate by period, and outstanding submissions. Four-component executive dashboard giving the CCO a single-screen regulatory status view.
Architectural Decisions

Key design notes

No standard CRM objects
No Accounts, Contacts, or Opportunities. This is a fully internal operational tool — all five core objects are purpose-built for ESG compliance. Demonstrates the ability to design a domain-specific data model from scratch rather than extending the standard CRM schema.
Master-Detail converted to Lookup
Reporting Period was initially a Master-Detail relationship on ESG Submission. Converted to Lookup to enable data import via the wizard — the wizard cannot resolve Master-Detail parent references via External ID. A deliberate trade-off: import compatibility over cascade delete behaviour.
Segregation of duties in validation
The approver cannot be the same user as the submitter — enforced via validation rule at point of entry. Mirrors real financial services governance requirements where the preparer and reviewer must be distinct individuals. Directly transferable to a live compliance environment.