Skip to content

Case Study 06: HomeNest Property Group — Worked Solution

AI-Generated Content — Use for Reference Only

This content is AI-generated and has only been validated by AI review processes. It has NOT been reviewed or validated by certified Salesforce CTAs or human subject matter experts. Do not rely on this content as authoritative or completely accurate. Use it solely as a reference point for your own study and preparation. Always verify architectural recommendations against official Salesforce documentation.

Solution Context

Heavy domains: D1 System Architecture, D2 Security, D5 Integration | Difficulty: Intermediate Time budget: 180 minutes | Key frameworks: 9 Essential Artifacts

Attempt the Scenario First

If you have not yet worked through the scenario paper, stop here. Set a 180-minute timer and build your own solution before reading this one.

Assumptions

  1. Single org for HNPG with Salesforce-to-Salesforce (S2S) or MuleSoft bridging to FixRight’s org during 12-month coexistence. FixRight users migrate to the main org as external contracts wind down. Rejected immediate org merge because FixRight must maintain its external client operations independently.
  2. Sales Cloud + Service Cloud + Field Service + Experience Cloud (two communities) — Sales Cloud for leasing, Service Cloud for maintenance case management, Field Service for 150 technicians with offline mobile, Experience Cloud for tenant and owner portals.
  3. Yardi remains system of record for lease/financial data. Salesforce holds operational copies synced via middleware. Rejected replacing Yardi because it handles complex property accounting (CAM reconciliation, owner distributions) that Salesforce cannot replicate within budget.
  4. MuleSoft Anypoint as integration middleware — 8 external systems, dual-portal traffic, IoT events, and Yardi bidirectional sync require centralized orchestration and monitoring. Rejected point-to-point because Yardi sync reliability is critical and needs a single monitoring layer.
  5. Field Service Mobile with offline-first architecture — 150 technicians using Salesforce Field Service mobile app with offline briefcase configuration. Covers zero-connectivity scenarios in basements and garages.

Key Architectural Decisions

Decision 1: Multi-Portal Architecture (D1/D2)

Two Experience Cloud communities on the main org:

  • Tenant Portal — Customer Community Plus licenses for 45,000 tenants. Sharing sets scoped via Account (property) and Contact (tenant). Tenants submit maintenance requests, view lease details (read-only from Yardi), and track work order status.
  • Owner Portal — Partner Community licenses for 300 owners. Partner role hierarchy gives each owner visibility to their properties only. Owners view dashboards, approve high-cost maintenance, and download financial statements.

Rejected a single portal with role-based views because tenant and owner data models, security requirements, and license economics are fundamentally different. Customer Community Plus at ~$8/user/month for tenants vs. Partner Community at ~$25/user/month for 300 owners is cost-effective.

Decision 2: Five-Population Sharing Model (D2)

PopulationLicenseOWD on PropertyVisibility
Regional ManagersInternal (Full)PrivateTerritory-based sharing rules for their region
Leasing AgentsInternal (Full)PrivateSharing rules on assigned properties only
TechniciansInternal (Field Service)PrivateWork Order assignment grants property access
Tenants (45K)Customer Community PlusPrivateSharing set via Account-Contact relationship
Owners (300)Partner CommunityPrivatePartner role hierarchy scoped to owned properties

Property is Private OWD. Work Order is Controlled by Parent (inherits from Property). Lease, Unit, and Maintenance Request all inherit via Controlled by Parent. This ensures no lateral visibility between tenants, no cross-portfolio visibility between owners, and no cross-region visibility between managers.

Decision 3: Multi-Org Coexistence (D1/D5)

FixRight’s org runs independently for 12 months serving external clients. HNPG-assigned work orders route to FixRight technicians via MuleSoft:

  • HNPG org creates Work Order, publishes Platform Event
  • MuleSoft catches the event, creates corresponding Work Order in FixRight org
  • FixRight technicians complete work in their org
  • MuleSoft syncs completion status, photos, and time back to HNPG org

At month 12, FixRight external contracts expire. Technician users migrate to HNPG org with Field Service licenses. FixRight org decommissioned. Rejected Salesforce-to-Salesforce connection because MuleSoft is already in the stack and provides better monitoring, error handling, and transformation.

Artifact 1: System Landscape

graph TB
    subgraph LEGEND["Legend"]
        L1["🟢 NEW — being built"]
        L2["⚪ KEEPING — no changes"]
        L3["🔴 RETIRING — decommission"]
        L4["🟠 INTEGRATION LAYER"]
    end

    subgraph SF["HNPG Salesforce Org"]
        SC[Sales Cloud — Leasing]
        SVC[Service Cloud — Maintenance]
        FSL[Field Service — Technicians]
        TP[Experience Cloud — Tenant Portal]
        OP[Experience Cloud — Owner Portal]
    end

    subgraph MW["MuleSoft Anypoint"]
        EXP[Experience APIs]
        PROC[Process APIs]
        SYS[System APIs]
    end

    subgraph EXT["External Systems"]
        YARDI[Yardi Voyager]
        QB[QuickBooks Enterprise]
        STRIPE[Stripe Payments]
        TU[TransUnion SmartMove]
        DS[DocuSign]
        TWILIO[Twilio SMS]
    end

    subgraph IOT["IoT Platform"]
        PARTICLE[Particle Cloud]
        LOCKS[2,400 Smart Locks]
        HVAC[1,800 HVAC Sensors]
        WATER[600 Leak Detectors]
    end

    subgraph FIX["FixRight Org — 12-month coexistence"]
        FRSVC[Service Cloud]
        FRFS[Field Dispatch]
    end

    subgraph ID["Identity"]
        GOOG[Google Workspace — SAML 2.0]
    end

    SF -->|Platform Events + CDC| MW
    TP -->|REST real-time| EXP
    OP -->|REST real-time| EXP
    EXP --> PROC
    PROC --> SYS
    SYS -->|REST/SOAP bidirectional poll 15min| YARDI
    SYS -->|REST batch nightly| QB
    SYS -->|REST webhooks| STRIPE
    SYS -->|REST request-reply| TU
    SYS -->|REST callbacks| DS
    SYS -->|REST fire-and-forget| TWILIO
    SYS -->|MQTT/webhooks| PARTICLE
    MW <-->|REST bidirectional WO sync| FIX
    GOOG -->|SAML 2.0 SSO| SF

    style SC fill:#2e7d32,color:#fff
    style SVC fill:#2e7d32,color:#fff
    style FSL fill:#2e7d32,color:#fff
    style TP fill:#2e7d32,color:#fff
    style OP fill:#2e7d32,color:#fff
    style EXP fill:#e65100,color:#fff
    style PROC fill:#e65100,color:#fff
    style SYS fill:#e65100,color:#fff
    style YARDI fill:#9e9e9e,color:#000
    style QB fill:#9e9e9e,color:#000
    style STRIPE fill:#9e9e9e,color:#000
    style TU fill:#9e9e9e,color:#000
    style DS fill:#9e9e9e,color:#000
    style TWILIO fill:#9e9e9e,color:#000
    style PARTICLE fill:#2e7d32,color:#fff
    style LOCKS fill:#9e9e9e,color:#000
    style HVAC fill:#9e9e9e,color:#000
    style WATER fill:#9e9e9e,color:#000
    style FRSVC stroke:#c62828,stroke-width:3px,stroke-dasharray: 5 5
    style FRFS stroke:#c62828,stroke-width:3px,stroke-dasharray: 5 5
    style GOOG fill:#9e9e9e,color:#000

Artifact 2: Data Model

erDiagram
    OWNER ||--o{ PROPERTY : owns
    PROPERTY ||--o{ BUILDING : contains
    BUILDING ||--o{ UNIT : has
    UNIT ||--o{ LEASE : governs
    LEASE }o--|| TENANT_CONTACT : signed_by
    UNIT ||--o{ MAINTENANCE_REQUEST : generates
    MAINTENANCE_REQUEST ||--|| WORK_ORDER : creates
    WORK_ORDER }o--|| TECHNICIAN : assigned_to
    WORK_ORDER ||--o{ SERVICE_APPOINTMENT : scheduled_as
    PROPERTY ||--o{ SENSOR_DEVICE : monitored_by
    SENSOR_DEVICE ||--o{ SENSOR_EVENT : emits
    LEASE ||--o{ PAYMENT : tracks

    OWNER {
        string Name
        string PortalUserId
        picklist OwnerTier
    }
    PROPERTY {
        string PropertyName
        picklist Type "Residential / Commercial"
        picklist Region "TX / AZ / CO / NV / CA / FL"
        lookup Owner
        number TotalUnits
        percent OccupancyRate
    }
    UNIT {
        string UnitNumber
        picklist Status "Occupied / Vacant / Maintenance"
        currency MonthlyRent
        lookup CurrentLease
    }
    LEASE {
        date StartDate
        date EndDate
        currency MonthlyRent
        picklist Status "Application / Active / Renewal / Terminated"
        string YardiLeaseId
    }
    WORK_ORDER {
        picklist Priority "Emergency / Urgent / Standard / Preventive"
        picklist Status
        string CompletionPhotos
        number LaborHours
        currency PartsCost
    }
    SENSOR_DEVICE {
        picklist Type "Lock / HVAC / Water"
        string DeviceId
        picklist Status "Active / Offline / Alert"
    }
  • Property hierarchy (Owner > Property > Building > Unit) enables roll-up summaries and scoped sharing.
  • Lease references both Unit and Tenant Contact; YardiLeaseId is the external key for sync.
  • Work Order uses standard Field Service object, extended with custom fields for parts cost, completion photos, and owner approval status.
  • Sensor Device and Sensor Event are lightweight — events older than 90 days archived. Alerts create Maintenance Requests automatically.

Artifact 3: Role Hierarchy & Sharing Model

graph TB
    CEO["CEO"]
    CEO --> VPTech["VP Technology"]
    CEO --> VPProp["VP Property Mgmt"]
    CEO --> VPFin["VP Finance"]
    CEO --> FixGM["FixRight GM"]

    VPProp --> RMTX["Regional Mgr — TX"]
    VPProp --> RMAZ["Regional Mgr — AZ"]
    VPProp --> RMCO["Regional Mgr — CO"]
    VPProp --> RMFL["Regional Mgr — FL"]
    RMTX --> LATX["Leasing Agents — TX"]
    RMTX --> PMTX["Property Mgrs — TX"]
    RMAZ --> LAAZ["Leasing Agents — AZ"]

    FixGM --> TECHSUP["Tech Supervisors"]
    TECHSUP --> TECHS["Field Technicians"]
ObjectOWDSharing Mechanism
PropertyPrivateTerritory-based sharing (6 state territories)
UnitControlled by ParentInherits from Property
LeaseControlled by ParentInherits from Unit
Work OrderControlled by ParentInherits from Property + technician assignment
Maintenance RequestControlled by ParentInherits from Unit
Owner (Account)PrivateDirect ownership; portal partner roles
Tenant (Contact/Account)PrivateSharing set scoped to Account-Contact relationship
PaymentControlled by ParentInherits from Lease

Technician visibility: Technicians see Work Orders assigned to them (assignment-based sharing). The parent Property record is shared via work order lookup, but only property access information (address, access codes, gate instructions) is exposed via field-level security. Lease terms, rent amounts, and owner financials are hidden from the technician profile.

Restriction Rules: Financial fields on Property (revenue, owner distributions, NOI) restricted to VP Finance role and Owner portal profile only.

Artifact 4: Integration Architecture

graph LR
    subgraph LEGEND["Legend"]
        L1["🟢 NEW"]
        L2["⚪ KEEPING"]
        L3["🔴 RETIRING"]
        L4["🟠 INTEGRATION LAYER"]
    end

    subgraph SF["Salesforce"]
        PE[Platform Events]
        CDC[Change Data Capture]
        REST_IN[Inbound REST]
    end

    subgraph Mule["MuleSoft Anypoint"]
        EXP["Experience APIs"]
        PROC["Process APIs"]
        SYS["System APIs"]
        AMQ[Anypoint MQ]
    end

    subgraph EXT["External Systems"]
        YARDI[Yardi Voyager]
        QB[QuickBooks]
        STRIPE[Stripe]
        TU[TransUnion]
        PARTICLE[Particle IoT]
        DS[DocuSign]
        TWILIO[Twilio]
        FIXR[FixRight Org]
    end

    PE -->|Platform Events publish| Mule
    CDC -->|CDC events — Property/WO changes| Mule
    Mule -->|REST/Bulk API| REST_IN
    EXP --> PROC
    PROC --> SYS
    PROC --> AMQ
    AMQ --> SYS
    SYS -->|REST/SOAP poll 15min| YARDI
    SYS -->|REST batch nightly| QB
    SYS -->|REST webhooks| STRIPE
    SYS -->|REST request-reply| TU
    SYS -->|MQTT/webhooks| PARTICLE
    SYS -->|REST callbacks| DS
    SYS -->|REST fire-and-forget| TWILIO
    SYS <-->|REST bidirectional WO sync| FIXR

    style PE fill:#1a73e8,color:#fff
    style CDC fill:#1a73e8,color:#fff
    style REST_IN fill:#1a73e8,color:#fff
    style EXP fill:#e65100,color:#fff
    style PROC fill:#e65100,color:#fff
    style SYS fill:#e65100,color:#fff
    style AMQ fill:#e65100,color:#fff
    style YARDI fill:#9e9e9e,color:#000
    style QB fill:#9e9e9e,color:#000
    style STRIPE fill:#9e9e9e,color:#000
    style TU fill:#9e9e9e,color:#000
    style PARTICLE fill:#2e7d32,color:#fff
    style DS fill:#9e9e9e,color:#000
    style TWILIO fill:#9e9e9e,color:#000
    style FIXR stroke:#c62828,stroke-width:3px,stroke-dasharray: 5 5
SystemPatternDirectionProtocol
Yardi VoyagerBidirectional SyncBothREST/SOAP via MuleSoft; Yardi is master for lease/financial, SF is master for work orders
QuickBooksEvent-DrivenInboundREST; financial transactions sync nightly for owner reporting
StripeWebhookInboundREST webhooks to MuleSoft; payment events update Lease payment status
TransUnionRequest-ReplyOutboundREST; triggered from lease application Flow, response updates screening status
Particle IoTEvent-DrivenInboundMQTT/webhooks to MuleSoft; alerts create Maintenance Requests
DocuSignEvent-DrivenBothREST; lease sent for signing, completion callback updates Lease status
TwilioFire-and-ForgetOutboundREST; triggered by work order status changes and payment reminders
FixRight OrgBidirectional SyncBothMuleSoft bridges Work Orders between orgs during coexistence

Yardi sync detail: MuleSoft runs a scheduled poll every 15 minutes for lease changes in Yardi. New leases, renewals, and terminations flow to Salesforce. Work order completions in Salesforce push cost data back to Yardi for owner financial reporting. Conflict resolution: Yardi wins for lease/financial fields; Salesforce wins for maintenance/operational fields.

IoT flow: Particle publishes sensor events to MuleSoft via webhook. MuleSoft evaluates alert thresholds. Water leak alerts immediately create an Emergency Maintenance Request in Salesforce and trigger Twilio SMS to the property manager and assigned technician. HVAC anomalies create Standard-priority preventive work orders.

Artifact 5: Identity & SSO

  • Internal employees (950): Google Workspace SAML 2.0 SSO. Google Directory API syncs user provisioning (create, deactivate). Google groups map to Salesforce permission set groups for regional access.
  • Tenant portal (45,000): Salesforce Identity with self-registration. Email verification + password. MFA optional (SMS via Twilio). No SSO federation — tenants use Salesforce credentials.
  • Owner portal (300): Salesforce Identity with invitation-based registration. MFA required (TOTP app). Owners managing multiple properties use a single login mapped to their Owner Account.
  • FixRight technicians (150): During coexistence, technicians authenticate to FixRight org via existing credentials. At migration, JIT provisioning on first Google Workspace SSO login after accounts are created in Google.
  • Field Service mobile: Salesforce Mobile app with certificate-based device trust for company-provided tablets. BYOD personal phones use standard SSO + mobile MFA.

Artifact 6: Data Migration Strategy

Phase 1 — Core Platform + Field Service (Months 1-7):

  1. Deploy global data model: Property hierarchy (Owner > Property > Building > Unit), Work Order extensions, Sensor Device objects (months 1-3)
  2. Yardi initial sync: Load 12,000 properties, 45,000 tenant records, active leases via MuleSoft bulk job. Yardi IDs stored as external keys for ongoing sync.
  3. FixRight Work Order history: Export 3 years of completed work orders from SQL Server backup (ServiceTitan) + current FixRight org. Load as read-only historical records. ~85,000 records total.
  4. Establish MuleSoft Yardi bidirectional sync and validate 30 days of parallel data.
  5. Field Service go-live: 150 technicians begin using HNPG org for HNPG-assigned work orders (month 7). MuleSoft bridges new assignments to FixRight org for external client work.

Phase 2 — Portals (Months 5-12):

  1. Tenant portal build and load test. Migrate tenants in waves: 5,000 pilot (month 8), 20,000 (month 9), remaining 20,000 (month 10). PHP portal remains active during parallel run.
  2. Owner portal: 300 owners onboarded manually by account managers. Dashboard configuration per owner tier.
  3. PHP portal decommissioned after 30-day parallel run with zero critical issues (month 11-12).

Phase 3 — Smart Building + Analytics (Months 10-16):

  1. IoT integration for 120 smart properties. Sensor Device records created, Particle webhook configured.
  2. CRM Analytics dashboards for regional managers, owners, and executives.

FixRight org migration (Month 12-14):

  1. External contracts expire. FixRight accounts/contacts merged or archived. 150 technician users provisioned in HNPG org via Google Workspace. FixRight org decommissioned.

Artifact 7: Governance

Architecture Review Board (ARB): Bi-weekly. VP Technology (chair), FixRight GM, SI lead, integration lead. Reviews data model changes, integration modifications, and security changes.

Change TypeApprovalLead Time
Data model / object changesARB2 sprints
Integration changesARB + integration lead2 sprints
Portal configurationVP Technology1 sprint
Field Service configFixRight GM + ARB1 sprint
Emergency fixes (P1)VP TechnologySame day

Standards: API naming: HNPG_[Domain]_[Object]_[Purpose]. Apex: 85% code coverage minimum. All integrations through MuleSoft — no direct Apex callouts to external systems. Flow-first for automation; Apex only when Flow cannot meet the requirement.

Portal governance: Tenant-facing changes require UX review and load testing before deployment. Owner-facing financial data changes require VP Finance sign-off.

Artifact 8: Environment Strategy

EnvironmentPurposeRefresh
Full Copy SandboxUAT + Performance testing (45K tenant load simulation)Monthly
Partial Copy — MainSprint UAT, portal testingBi-weekly
Partial Copy — Field ServiceFS mobile testing, offline scenariosBi-weekly
Developer Sandbox (x3)Core / Integration / Portal teamsSprint start
Developer Pro SandboxSI PartnerSprint start

CI/CD: Salesforce CLI + GitHub + GitHub Actions. Branch strategy: main (production), release/* (UAT), feature/* (dev). Promotion: Dev Sandbox > Partial Copy > Full Copy > Production. Automated PMD scan + unit test execution on every PR.

Portal load testing: Full Copy sandbox with synthetic 45K tenant dataset. k6 load tests simulate 5,000 concurrent logins, 1,200 maintenance request submissions, and 300 owner dashboard refreshes.

Artifact 9: Phased Delivery Roadmap

gantt
    title HomeNest Property Group — 18-Month Delivery
    dateFormat YYYY-MM
    axisFormat %b %Y

    section Phase 1 — Core + Field Service
    Data model + org setup              :p1a, 2026-05, 3M
    MuleSoft + Yardi integration         :p1b, 2026-05, 4M
    Field Service configuration          :p1c, 2026-07, 3M
    FixRight bridge (MuleSoft)           :p1d, 2026-08, 2M
    Field Service Go-Live               :milestone, m1, 2026-11, 0d

    section Phase 2 — Portals
    Tenant portal build                  :p2a, 2026-09, 3M
    Owner portal build                   :p2b, 2026-10, 3M
    Tenant migration waves               :p2c, 2026-12, 3M
    PHP portal decommission              :milestone, m2, 2027-04, 0d

    section Phase 3 — Smart Building
    IoT integration (120 properties)     :p3a, 2027-02, 3M
    CRM Analytics dashboards             :p3b, 2027-03, 3M
    Smart Building Go-Live              :milestone, m3, 2027-06, 0d

    section Cross-Cutting
    FixRight org migration               :cc1, 2027-04, 3M
    Training + change management         :cc2, 2026-05, 14M
    Yardi ongoing sync validation        :cc3, 2026-07, 12M

Sequencing rationale: Field Service first because 150 technicians are the most operationally impacted group and FixRight bridge must be established early. Portals start month 5 to overlap with Field Service UAT — different teams, no dependency. IoT is last because it only affects 120 properties today and has no blocking dependency. FixRight org migration at month 12-14 after external contracts expire.

Governance & DevOps

Environment Promotion Flow

flowchart LR
    DEV1[Developer Sandbox\nCore / Data Model] --> PC_MAIN[Partial Copy — Main\nSprint UAT + Portal]
    DEV2[Developer Sandbox\nIntegration Team] --> PC_MAIN
    DEV3[Developer Sandbox\nPortal Team] --> PC_MAIN
    DEVPRO[Developer Pro\nSI Partner] --> PC_MAIN
    PC_FS[Partial Copy — FS\nField Service + Offline] --> FC[Full Copy\nUAT + Performance\n45K Tenant Load]
    PC_MAIN --> FC
    FC --> PROD[Production]

    FB1[Feature: Yardi\nBidirectional Sync] --> DEV2
    FB2[Feature: Tenant\nPortal UX] --> DEV3
    FB3[Feature: FS Mobile\nOffline Config] --> PC_FS
    FB4[Feature: IoT\nSensor Alerts] --> DEV2

Branching Strategy

HNPG has three delivery teams (core platform, portals, field service) with staggered go-lives over 18 months. The branching model supports long-running phase branches alongside sprint-level feature development.

BranchPurposeMerge Target
mainProduction — deployed code onlyN/A
release/phase-1-fs, release/phase-2-portals, release/phase-3-iotRelease stabilization per major go-livemain
developIntegration branch for all teamsrelease/*
feature/HNPG-[ticket]-[description]Individual feature workdevelop
hotfix/HNPG-[ticket]-[description]Production emergency fixes (P1 maintenance escalations)main + develop

Merge cadence: Feature branches merge to develop via PR with 1 required reviewer. Portal changes require additional UX review. develop merges to the active release/* branch at sprint boundaries (2-week sprints). Hotfix branch exists specifically for emergency maintenance escalation issues that affect tenant safety (water leaks, gas leaks).

Sandbox Strategy

SandboxTypePurposeRefresh CadenceData Seeding
HNPG-DEV-COREDeveloperCore data model, sharing rules, territory setupSprint startMinimal: 100 properties across 3 regions, 500 units, 200 tenants, 10 owners
HNPG-DEV-INTDeveloperMuleSoft integration testing (Yardi, Stripe, Particle IoT)Sprint startMinimal: Yardi-mapped properties with external IDs, mock IoT devices
HNPG-DEV-PORTALDeveloperTenant and owner portal development (Experience Cloud)Sprint startMinimal: 50 tenant portal users, 10 owner portal users, sample lease data
HNPG-SIDeveloper ProSI partner team — portal customization, analyticsSprint startSame as portal dev + additional sample financial data for owner dashboards
HNPG-INTPartial Copy (Main)Sprint UAT, portal testing, sharing model validationBi-weeklyPartial: 2,000 properties, 5,000 tenants, all 6 regions, 50 owners, 500 work orders
HNPG-FSPartial Copy (FS)Field Service mobile testing, offline scenarios, dispatchBi-weeklyPartial: 500 properties with GPS coordinates, 50 technicians, 200 open work orders, mock sensor devices
HNPG-UATFull CopyUAT + performance testing with full tenant load simulationMonthlyFull copy: 12K properties, 45K tenants, 300 owners, 5K work orders, IoT sensor data for 120 properties

Data seeding notes: Portal load testing requires synthetic 45,000 tenant accounts with realistic login patterns. The Full Copy sandbox receives a post-refresh data masking script that anonymizes tenant PII (names, emails, phone numbers) while preserving data relationships for testing. Owner financial data is masked but retains realistic dollar ranges for dashboard validation. Yardi external IDs are preserved across sandbox refreshes to maintain integration testing continuity.

Testing Strategy

Test TypeCoverage TargetScopeAutomation
Unit tests (Apex)85% minimum (HNPG standard)Sharing model enforcement, territory assignment, lease lifecycle, owner approval workflows, IoT alert processingApex tests run on every PR via GitHub Actions
Integration testsAll 8 external systems + FixRight org bridgeYardi bidirectional sync (lease changes + work order costs), Stripe payment webhooks, TransUnion screening request-reply, Particle IoT sensor alerts, DocuSign lease signing callbacks, Twilio SMS dispatch, FixRight work order bridgeMuleSoft MUnit tests; run before release branch merge
Performance / Load tests5,000 concurrent tenant logins; 1,200 maintenance requests/hour; 300 owner dashboard refreshesTenant portal concurrent access, maintenance request submission throughput, owner dashboard rendering with financial roll-ups, Field Service mobile sync performancek6 load tests against Full Copy sandbox; run before each go-live
Offline / Field tests150 technicians, zero-connectivity scenariosField Service mobile: create work order, capture photos, record parts/time, obtain signature — all offline. Sync on reconnect with conflict resolutionManual testing in Partial Copy FS sandbox with airplane mode on test devices
UATAll 5 user populationsTenant portal end-to-end, owner approval workflow, regional manager territory isolation, technician work order lifecycle, leasing agent application-to-move-in flowManual test scripts with business stakeholders per population
Security / Sharing testsAll 5 populations verified for zero lateral visibilityTenant A cannot see Tenant B data; Owner X cannot see Owner Y portfolio; Regional Manager TX cannot see AZ properties; Technician sees assigned work orders only; Leasing agent sees assigned properties onlyAutomated sharing verification scripts (Apex test class that asserts [SELECT ... WITH SECURITY_ENFORCED] returns expected row counts per user context)

Center of Excellence & Ongoing Governance

HNPG Platform CoE (established Phase 1, month 2):

  • CoE lead: VP Technology (Raj Mehta) — sponsors; day-to-day led by senior Salesforce admin
  • Members: 3 Salesforce admins, 2 developers (internal), SI architect (advisory through month 18), integration lead, FixRight IT liaison (2 people)
  • Responsibilities: Approve all data model changes, review sharing rule modifications, manage portal release process, coordinate FixRight org bridge changes, oversee IoT scalability
  • Release cadence: Production deployments bi-weekly (sprint boundaries). Portal-facing changes require additional UX review + load test pass. Emergency fixes (P1 maintenance — tenant safety): same-day deployment with VP Technology approval.
  • Portal governance: Tenant-facing changes require UX review, accessibility check, and load test before deployment. Owner-facing financial data changes require VP Finance (Michelle Park) sign-off. Portal downtime windows communicated 48 hours in advance.
  • FixRight transition governance: Months 1-12: FixRight GM (Tanya Brooks) approves all Field Service configuration changes. Joint ARB reviews for MuleSoft bridge modifications. Month 12-14: FixRight org migration plan reviewed by ARB at months 10, 11, 12 checkpoints. Technician user provisioning rehearsed in Full Copy sandbox before production cutover.
  • Post-program maintenance: SI partner transitions to 15-hour/month managed services retainer for 6 months. Knowledge transfer sessions recorded. Internal team of 3 admins + 4 developers handles BAU. FixRight IT staff (2 people) integrated into HNPG IT team.
  • IoT scalability governance: Smart building expansion from 120 to 2,000+ properties managed via IoT onboarding playbook. Each new property batch (50-100 properties) tested in Partial Copy FS sandbox before production sensor registration. Particle webhook throughput reviewed quarterly.

Identity & SSO Flow

Internal Employee SSO (SAML 2.0)

sequenceDiagram
    participant User as HNPG Employee (950)
    participant Browser as Browser
    participant Google as Google Workspace<br/>(Corporate IdP)
    participant SF as Salesforce

    User->>Browser: Navigate to Salesforce
    Browser->>SF: Request login page
    SF->>Browser: Redirect to Google (SP-Initiated SSO)
    Browser->>Google: SAML AuthnRequest
    Google->>Google: Authenticate (password + MFA)
    Google->>Browser: SAML Response with Assertion
    Note over Google,Browser: Assertion contains: email,<br/>region (TX/AZ/CO/NV/CA/FL),<br/>department, Federation ID
    Browser->>SF: POST SAML Assertion to ACS URL
    SF->>SF: Match Federation ID to User record
    SF->>SF: Assign territory-based permissions<br/>via Google group → Permission Set Group
    SF->>Browser: Session established

IdP: Google Workspace (existing for all 950 employees). Google Directory API syncs user lifecycle events (hire, terminate, transfer) to Salesforce. Google groups map to Salesforce permission set groups segmented by region and role: HNPG-TX-RegionalMgr, HNPG-AZ-LeasingAgent, HNPG-FieldService-Supervisor, etc.

MFA: Enforced at Google Workspace level for all internal users. Satisfies Salesforce MFA requirement via federated identity exception.

Tenant Portal Authentication

sequenceDiagram
    participant Tenant as Tenant (45,000)
    participant Browser as Mobile/Desktop Browser
    participant EC as Experience Cloud<br/>Tenant Portal
    participant SF as Salesforce Identity

    Tenant->>Browser: Navigate to tenant portal
    Browser->>EC: Login page
    alt New Tenant — Self-Registration
        Tenant->>EC: Click "Create Account"
        EC->>SF: Self-registration flow
        SF->>SF: Verify email matches<br/>Yardi tenant record
        SF->>Tenant: Email verification link
        Tenant->>SF: Click link, set password
        SF->>SF: Create Community user<br/>(Customer Community Plus license)
        SF->>Browser: Portal session
    else Existing Tenant — Login
        Tenant->>EC: Email + Password
        EC->>SF: Verify credentials
        SF->>SF: Optional SMS MFA via Twilio
        SF->>Browser: Portal session<br/>(scoped to tenant's unit + lease)
    end

Identity approach: Salesforce Identity with self-registration. Email addresses matched against Yardi-synced tenant records during registration to prevent unauthorized signups. No SSO federation — tenants use Salesforce credentials because they have no shared enterprise IdP.

MFA: Optional SMS-based MFA (via Twilio). Not mandatory for tenants because it creates adoption friction for the 72% mobile user base. Encouraged for tenants who enable autopay.

Owner Portal Authentication

sequenceDiagram
    participant Owner as Property Owner (300)
    participant Browser as Browser
    participant EC as Experience Cloud<br/>Owner Portal
    participant SF as Salesforce Identity

    Owner->>Browser: Navigate to owner portal
    Browser->>EC: Login page
    Owner->>EC: Email + Password
    EC->>SF: Verify credentials
    SF->>SF: MFA challenge (TOTP app required)
    Owner->>SF: TOTP code
    SF->>SF: Verify MFA
    SF->>SF: Load Partner Community session<br/>(scoped to owned properties)
    SF->>Browser: Owner dashboard<br/>(portfolio view)

Identity approach: Invitation-based registration only. Account managers send portal invitations to verified property owners. No self-registration to prevent unauthorized access to financial data.

MFA: Mandatory TOTP (authenticator app) for all owner portal users. Financial data visibility (property P&L, rent collection, maintenance spend) requires higher security than tenant portal.

FixRight Technician Authentication (Coexistence + Migration)

sequenceDiagram
    participant Tech as Technician (150)
    participant Device as Mobile Device<br/>(iOS/Android)
    participant FixOrg as FixRight Org<br/>(Months 1-12)
    participant Google as Google Workspace
    participant HNPGOrg as HNPG Org<br/>(Month 12+)

    alt During Coexistence (Months 1-12)
        Tech->>Device: Open Salesforce Mobile
        Device->>FixOrg: Login with existing<br/>FixRight credentials
        FixOrg->>Device: Session (FixRight work orders)
        Note over Device,FixOrg: HNPG work orders bridged<br/>via MuleSoft from HNPG org
    else After Migration (Month 12+)
        Tech->>Device: Open Salesforce Mobile
        Device->>Google: Google Workspace SSO<br/>(JIT provisioning on first login)
        Google->>Google: Authenticate + MFA
        Google->>HNPGOrg: SAML Assertion
        HNPGOrg->>HNPGOrg: Create/match user via JIT
        HNPGOrg->>Device: Session (all HNPG work orders)
    end

Migration identity plan: At month 12, FixRight technicians are provisioned in Google Workspace (HNPG corporate IdP). On first Salesforce login via Google SSO, JIT (Just-In-Time) provisioning creates their HNPG org user with Field Service license and appropriate permission set group. Company-provided tablets use certificate-based device trust. BYOD personal phones use standard SSO + mobile MFA.

Integration Error Handling

IntegrationPatternRetry StrategyDead Letter QueueMonitoring & AlertsFallback (Extended Outage)
Yardi VoyagerBidirectional poll (15-min) via MuleSoft3 retries, exponential backoff (30s, 2min, 10min). If all fail, queued for next 15-min poll cycleAnypoint MQ DLQ for failed lease/financial records. Records flagged with YardiSyncError__c = true in SalesforcePagerDuty alert to integration lead if 2 consecutive poll cycles fail. Daily Yardi sync health dashboard for VP TechnologySalesforce operates with last-synced lease data. Work order creation continues uninterrupted (SF is master for maintenance). Financial data on owner portal shows “last updated” timestamp. Manual Yardi reconciliation triggered within 4 hours
QuickBooks EnterpriseBatch nightly via MuleSoftFull retry next nightly cycle. Individual transaction failures: 2 retries with 30s intervalFailed financial transactions stored in Anypoint MQ DLQ. VP Finance notified of any failed owner distribution recordsEmail alert to VP Finance if nightly batch fails. Individual transaction failures aggregated in daily error reportOwner financial statements show stale data with “as of” date. AP/AR processing continues in QuickBooks independently. Manual reconciliation after outage resolution
StripeInbound webhooks via MuleSoft3 retries at MuleSoft layer (1s, 10s, 60s). Stripe natively retries webhook delivery for up to 72 hoursFailed payment events in Anypoint MQ DLQ. Payment failure events (declined cards) escalated immediately to subscriber opsPagerDuty alert if payment webhook failure rate exceeds 5% in any 30-minute window. Real-time Stripe dashboard monitored by finance teamPayment status not updated in Salesforce. Dunning workflows delayed. Stripe continues processing payments independently — no revenue loss. Reconciliation batch runs on outage recovery
TransUnion SmartMoveRequest-reply (synchronous) via MuleSoft2 retries with 5s interval. If TransUnion unavailable, screening request queuedPending screening requests stored in Salesforce custom queue (Screening_Request__c with Status = Pending)Alert to Director of Leasing if screening unavailable for >30 minutes during business hoursLease application process pauses at screening step. Leasing agents informed via in-app notification. Applications queue and auto-submit when TransUnion returns. No manual workaround (regulatory requirement — cannot skip screening)
Particle IoTInbound webhooks (MQTT/REST) via MuleSoft3 retries with 1s interval for alert-type events. Non-alert telemetry: no retry (acceptable data loss)Emergency alerts (water leak, HVAC failure) stored in DLQ with immediate escalation. Telemetry data loss acceptable for non-alert eventsPagerDuty alert to Head of Smart Building for any failed emergency sensor alert. Weekly telemetry data quality report for non-critical sensorsEmergency alerts: fallback to direct SMS notification from Particle platform to property manager (configured as backup channel in Particle Cloud). Preventive maintenance work orders delayed until IoT connectivity restores
DocuSignEvent-driven callbacks via MuleSoft3 retries with exponential backoff (5s, 30s, 5min). DocuSign natively retries callbacksFailed signing callbacks stored in Anypoint MQ DLQ. Lease status not updated until callback processedAlert to leasing operations if signing callback pending >2 hoursLease status shows “Signing in Progress” until callback received. Leasing agents can manually check DocuSign dashboard and update status. No impact on tenant — signing continues in DocuSign
Twilio (SMS)Fire-and-forget outbound via MuleSoft2 retries with 5s interval. Twilio handles delivery retries to carrierFailed SMS logged to Error_Log__c. No DLQ — SMS is non-critical notificationDaily SMS delivery report reviewed by ops. Alert only if failure rate exceeds 10% for maintenance notificationsNotifications delayed. Tenants and technicians do not receive SMS updates. In-app portal notifications serve as primary fallback. Email notifications as secondary fallback
FixRight OrgBidirectional work order sync via MuleSoft3 retries with exponential backoff (5s, 30s, 5min). Both create and completion sync retried independentlyFailed work order syncs in Anypoint MQ DLQ. FixRight GM notified of any sync failure affecting active dispatchesReal-time sync dashboard monitored by integration lead. PagerDuty alert if any HNPG-originated work order fails to reach FixRight org within 15 minutesHNPG dispatchers call FixRight dispatch directly for urgent work orders. Non-urgent work orders queue in DLQ. Manual reconciliation required on recovery. During extended outage (>4h), FixRight dispatchers access HNPG org directly via temporary read-only login

Reporting Domain Note

Reporting is a significant domain in this scenario (Req 24-27) spanning four distinct dashboards for four audiences. Regional manager dashboards use territory-filtered reports with roll-up summary fields from the Property hierarchy. Owner dashboards leverage Partner Community analytics with sharing-scoped data. Maintenance operations dashboards use Field Service standard reporting objects (Service Appointment, Work Order). Executive dashboards use CRM Analytics for cross-object joins that standard reports cannot handle (e.g., revenue per unit requires Property + Lease + Payment joins). All dashboards respect the five-population sharing model — a dashboard shared across roles only surfaces data the viewer is authorized to see.

Presentation Strategy

In 30 minutes, go deep on two decisions: (1) the five-population sharing model — this is the hardest architectural problem in this scenario, (2) the multi-org coexistence and migration path. Cover portals and Field Service at supporting level. IoT is a brief mention.