Skip to content

Case Study 04: EduPath Learning Solutions — 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, D4 Solution, 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 Salesforce org — Sales Cloud (B2B pipeline), Service Cloud (learner support), Experience Cloud (two portals: corporate admin + instructor). Covers all business requirements without multi-org complexity.
  2. LMS remains system of record for course content, video delivery, assessments, and grading. Salesforce stores summarized learner data (enrollments, completions, certifications) — not raw progress events.
  3. MuleSoft Anypoint for integration — bidirectional LMS sync, Stripe, HubSpot, Zoom, and DocuSign. Rejected point-to-point Apex callouts given 5+ external systems and bidirectional data flows.
  4. Auth0 stays as learner IdP — Salesforce trusts Auth0 via OIDC for portal users. Employees authenticate via Google Workspace SAML. Corporate clients federate via their own SAML IdP.
  5. Shield Platform Encryption + custom consent framework for FERPA/GDPR/Privacy Act — no single product covers all three jurisdictions, so a combination of Shield encryption, field-level security, custom consent objects, and automated retention policies.

Key Architectural Decisions

Decision 1: LMS Integration Pattern (D5)

The LMS holds 42M progress events. Salesforce does not need raw progress data — it needs summarized metrics for sales conversations, support context, and corporate dashboards.

Pattern: Event-driven inbound (LMS to SF) + request-reply outbound (SF to LMS).

  • LMS publishes webhook events on enrollment, milestone completion, course completion, certification earned, and assessment final score
  • MuleSoft receives events, transforms to Salesforce canonical model, upserts to Salesforce
  • Salesforce sends enrollment/unenrollment requests to LMS via MuleSoft when corporate admins act through the portal
  • Daily batch sync reconciles enrollment counts and completion stats as a safety net

Trade-off: Salesforce does not have granular lesson-by-lesson progress. Corporate dashboards show completion percentages and milestones, not “learner watched 47% of video 3.” This is sufficient for renewal conversations and training manager dashboards.

Decision 2: Multi-Portal Architecture (D4)

Two Experience Cloud portals on a single org:

  • Corporate Portal (Customer Community Plus): training managers and corporate admins manage enrollments, view dashboards, download reports. Licensed per corporate admin user (~2,000 active admins across 15K accounts).
  • Instructor Portal (Partner Community): 45 content creators view course performance, revenue share, and student feedback. Partner Community licenses.

Individual learners do NOT get a Salesforce portal. They use the LMS directly (Auth0 authenticated). Corporate training managers see aggregated data in Salesforce — individual learners interact only with the LMS.

Trade-off: No Salesforce-based learner portal eliminates a 250K-user licensing problem. Corporate admins (~2K) and instructors (45) are manageable portal populations.

Decision 3: FERPA Compliance Architecture (D2)

FERPA applies to K-12 partnerships only (subset of corporate accounts). Architecture:

  • K12_Partnership__c flag on Account identifies FERPA-scoped accounts
  • Learner records under K-12 accounts tagged with FERPA_Protected__c = true
  • Restriction Rules limit FERPA-tagged learner data to users with “K12 Data Access” permission set
  • Shield Platform Encryption on learner PII fields (name, email, date of birth)
  • Consent object tracks parental consent with version, date, and withdrawal capability
  • Shield Event Monitoring for audit trail on all FERPA record access

Must be operational by month 6 — this drives Phase 1 scope.

Artifact 1: System Landscape

graph TB
    subgraph Legend["Legend"]
        L1["🟢 NEW system"]
        L2["⚪ KEEPING as-is"]
        L3["🔴 RETIRING"]
        L4["🟠 INTEGRATION LAYER"]
    end

    subgraph SF["Salesforce Org"]
        SC[Sales Cloud]
        SVC[Service Cloud]
        EC1[Experience Cloud<br/>Corporate Portal ~2K admins]
        EC2[Experience Cloud<br/>Instructor Portal 45]
        Shield[Shield — Encryption + Audit]
        CRMA[CRM Analytics]
    end

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

    subgraph EXT["External Systems"]
        LMS[Custom LMS — AWS]
        ST[Stripe]
        HB[HubSpot]
        DS[DocuSign]
        ZM[Zoom]
    end

    subgraph ID["Identity"]
        AUTH0[Auth0]
        GOOG[Google Workspace]
        CORP_IDP[Corporate IdPs]
    end

    subgraph RET["Retiring"]
        ZD[Zendesk]
    end

    SF <-->|"REST / Bulk API"| MW
    EC1 -->|"REST"| EXP
    EXP --> PROC
    PROC --> SYS
    SYS <-->|"REST webhooks + API — bidirectional"| LMS
    SYS <--|"REST webhooks — payment events"| ST
    SYS <--|"REST API — hourly lead sync"| HB
    SYS <-->|"REST — on-demand contracts"| DS
    SYS <--|"REST webhook — attendance"| ZM
    GOOG -->|"SAML 2.0 SSO"| SF
    AUTH0 -->|"OIDC"| EC1
    CORP_IDP -->|"SAML federation"| EC1
    LMS -->|"Webhooks — enrollment, completion, cert"| MW
    ZD -.->|"Migrating 180K tickets to Service Cloud"| SVC

    classDef newSystem fill:#d4edda,stroke:#28a745,color:#000
    classDef keepSystem fill:#f8f9fa,stroke:#6c757d,color:#000
    classDef retireSystem fill:#f8d7da,stroke:#dc3545,color:#000,stroke-dasharray:5 5
    classDef integrationLayer fill:#fff3cd,stroke:#fd7e14,color:#000
    classDef sfSystem fill:#cce5ff,stroke:#0d6efd,color:#000

    class SF,SC,SVC,EC1,EC2,Shield,CRMA sfSystem
    class MW,EXP,PROC,SYS integrationLayer
    class LMS,ST,HB,DS,ZM keepSystem
    class AUTH0,GOOG,CORP_IDP keepSystem
    class ZD retireSystem
    class L1 newSystem
    class L2 keepSystem
    class L3 retireSystem
    class L4 integrationLayer

Artifact 2: Data Model

erDiagram
    ACCOUNT ||--o{ CONTACT : has
    ACCOUNT ||--o{ OPPORTUNITY : generates
    ACCOUNT ||--o{ CONTRACT : signs
    ACCOUNT ||--o{ LICENSE_ALLOCATION : holds
    CONTACT ||--o{ ENROLLMENT : enrolled_in
    ENROLLMENT }o--|| COURSE : for_course
    ENROLLMENT ||--o{ COMPLETION : achieves
    CONTACT ||--o{ CERTIFICATION : earns
    COURSE ||--o{ COURSE_METRIC : tracked_by
    COURSE }o--|| INSTRUCTOR : taught_by
    INSTRUCTOR ||--o{ REVENUE_SHARE : earns
    CASE ||--o{ CONTACT : reported_by
    CONTACT ||--o{ CONSENT_RECORD : governs

    ACCOUNT {
        string Type "B2B / K12 / Individual"
        boolean K12_Partnership
        string Region "US / UK / AU"
        number Health_Score
    }
    ENROLLMENT {
        string LMS_Enrollment_Id
        picklist Status "Active / Completed / Dropped"
        percent Completion_Pct
        date Enrolled_Date
    }
    CERTIFICATION {
        string Certification_Name
        date Earned_Date
        date Expiry_Date
        boolean Active
    }
    COURSE {
        string LMS_Course_Id
        string Track
        number Avg_Rating
        number Total_Enrollments
    }
    CONSENT_RECORD {
        picklist Regulation "FERPA / GDPR / Privacy_Act"
        picklist Status "Granted / Withdrawn"
        date Consent_Date
        boolean Parental
    }
  • Enrollment is the bridge between Contact (learner) and Course. Stores summarized progress from LMS, not granular events.
  • Course and Course Metric store aggregate performance data synced from LMS daily.
  • License Allocation tracks how many seats a corporate account has purchased vs. consumed.
  • Consent Record handles multi-jurisdiction consent tracking with regulation-specific logic.
  • Certification is separate from Enrollment — a learner may have multiple enrollments contributing to one certification.

Artifact 3: Role Hierarchy & Sharing Model

graph TB
    CEO --> CRO
    CEO --> VPCS["VP Customer Success"]
    CEO --> VPEng["VP Engineering"]
    CEO --> Legal
    CRO --> USSales["US Sales Mgr"]
    CRO --> UKSales["UK Sales Mgr"]
    CRO --> AUSales["AU Sales Mgr"]
    USSales --> USReps["US Sales Reps"]
    UKSales --> UKReps["UK Sales Reps"]
    AUSales --> AUReps["AU Sales Reps"]
    VPCS --> SvcMgr["Service Manager"]
    SvcMgr --> CorpAgents["Corporate Support Agents"]
    SvcMgr --> IndAgents["Individual Support Agents"]
    VPCS --> CSMMgr["CSM Manager"]
    CSMMgr --> CSMs["Customer Success Managers"]
ObjectOWDMechanism
AccountPrivateTerritory Management (US / UK / AU)
ContactControlled by ParentInherits from Account
OpportunityPrivateOwner-based + sharing rules for team selling
EnrollmentControlled by ParentInherits from Contact (which inherits from Account)
CasePrivateAssignment rules + queue-based sharing
CoursePublic Read OnlyAll internal users can view
CertificationControlled by ParentInherits from Contact
Consent RecordPrivateK12 Data Access permission set only

Portal sharing: Customer Community Plus uses sharing sets. Corporate admin sees only their own Account’s Contacts, Enrollments, and Certifications via Account relationship.

FERPA restriction: Restriction Rules on Contact and Enrollment where FERPA_Protected__c = true — only users with “K12 Data Access” permission set can view.

Artifact 4: Integration Architecture

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

    subgraph SF["Salesforce"]
        PE[Platform Events]
        CDC[Change Data Capture]
        API[REST API + Bulk API]
    end

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

    subgraph Systems["External Systems"]
        LMS["Custom LMS — AWS"]
        STR[Stripe]
        HUB[HubSpot]
        DOC[DocuSign]
        ZOM[Zoom]
    end

    LMS -->|"REST webhooks — enrollment,<br/>completion, certification events"| SYS
    SYS -->|"REST API — enroll/unenroll requests"| LMS
    EXP -->|"REST API upsert"| API
    PE -->|"Platform Events — enrollment actions"| EXP
    CDC -->|"CDC — account/contact changes"| EXP
    EXP --> PROC
    PROC --> SYS
    PROC -->|"Async queue — retry + DLQ"| AMQ
    AMQ --> SYS
    STR -->|"REST webhooks — real-time payment events"| SYS
    HUB -->|"REST API — hourly lead sync + MQL events"| SYS
    SYS <-->|"REST — on-demand contract generation"| DOC
    SYS <--|"REST webhook — post-session attendance"| ZOM

    classDef keepSystem fill:#f8f9fa,stroke:#6c757d,color:#000
    classDef integrationLayer fill:#fff3cd,stroke:#fd7e14,color:#000
    classDef sfSystem fill:#cce5ff,stroke:#0d6efd,color:#000
    classDef newSystem fill:#d4edda,stroke:#28a745,color:#000

    class SF,PE,CDC,API sfSystem
    class Mule,EXP,PROC,SYS,AMQ integrationLayer
    class LMS,STR,HUB,DOC,ZOM keepSystem
    class L1 newSystem
    class L2 keepSystem
    class L3 integrationLayer
SystemPatternDirectionProtocolFrequency
LMSEvent-driven + request-replyBidirectionalREST webhooks + REST API via MuleSoftReal-time events + daily batch reconciliation
StripeEvent-drivenInboundWebhooks to MuleSoftReal-time payment events
HubSpotBatch + eventInbound (leads)REST API via MuleSoftHourly lead sync + real-time MQL events
DocuSignRequest-replyBidirectionalREST via MuleSoftOn-demand (contract generation/signing)
ZoomEvent-drivenInboundREST webhook (attendance)Post-session attendance sync

LMS sync detail: MuleSoft receives LMS webhook events (enrollment created, milestone reached, course completed, certification earned, assessment scored). Each event maps to a canonical Learner Event schema. MuleSoft upserts Enrollment, Completion, and Certification records using LMS_Enrollment_Id__c and LMS_Course_Id__c as external IDs. Daily batch reconciliation compares Salesforce enrollment counts per account against LMS totals, flagging discrepancies.

Corporate enrollment flow: Corporate admin enrolls employees via portal. Salesforce publishes a Platform Event. MuleSoft subscribes, calls LMS enrollment API, receives confirmation, updates Enrollment record status.

Artifact 5: Identity & SSO

graph LR
    subgraph Users["User Populations"]
        EMP[800 Employees]
        CORP[~2,000 Corporate Admins]
        INST[45 Instructors]
        LEARN[250K Learners]
    end

    subgraph IdPs["Identity Providers"]
        GOOG[Google Workspace]
        AUTH0[Auth0]
        CIdP[Corporate IdPs]
    end

    subgraph SF["Salesforce"]
        CORE[Core Org]
        CP[Corporate Portal]
        IP[Instructor Portal]
    end

    EMP -->|SAML 2.0| GOOG -->|SSO| CORE
    CORP -->|SAML Federation| CIdP -->|SSO| CP
    CORP -->|Auth0 fallback| AUTH0 -->|OIDC| CP
    INST -->|SAML 2.0| GOOG -->|SSO| IP
    LEARN -->|Auth0 OIDC| AUTH0 -->|LMS only| LMS[LMS]
  • Employees (800): Google Workspace SAML 2.0 for Salesforce core org. SCIM not needed at 800 users — manual provisioning with JIT attribute updates.
  • Corporate portal admins (~2,000): Two auth paths. Large enterprise clients federate via their own SAML IdP (Connected App per client). Smaller companies use Auth0 (same credentials as LMS). Auth0 as fallback ensures all corporate admins can access the portal.
  • Instructors (45): Google Workspace SAML into Partner Community (same IdP as employees, different profile).
  • Individual learners (250K): Auth0 for LMS only. No Salesforce portal access — eliminates 250K-user licensing and auth complexity.

MFA: Enforced for all Salesforce internal users. Portal users via enterprise IdP inherit their corporate MFA. Auth0 portal users require TOTP or SMS second factor.

Artifact 6: Data Migration Strategy

Phase 1 (Months 1-6):

  1. HubSpot: Migrate 15K company records as Accounts, 450K contacts (deduplicate against LMS learner data using email match). Contacts without corporate Account association become Person Accounts or are excluded based on engagement score (inactive >12 months excluded). HubSpot marketing automation continues — MuleSoft syncs new MQLs going forward.
  2. LMS initial load: Bulk extract of 250K active learners as Contacts (matched to Accounts where corporate), 1.8M enrollments, 85 courses, active certifications. Progress events are NOT migrated — only current completion percentages per enrollment.
  3. FERPA framework: Consent objects, restriction rules, Shield encryption deployed and validated before K-12 launch at month 6.

Phase 2 (Months 4-12):

  1. Zendesk: 180K historical tickets migrated as read-only Cases (closed status, archived). Active tickets cut over during a maintenance window — MuleSoft dual-writes for 2-week parallel period.
  2. Stripe: No bulk migration. MuleSoft syncs active subscription status and payment events going forward. Historical payment data remains in Stripe (accessible via API if needed).
  3. DocuSign: Connect via MuleSoft for new contracts. Historical contracts remain in DocuSign with links stored on Account/Contract records.

Phase 3 (Months 10-18):

  1. Zoom attendance: Historical not migrated. Real-time sync from month 10 onward.
  2. HubSpot decommission assessment: Evaluate whether HubSpot can be replaced by Marketing Cloud or Pardot, or remains for top-of-funnel.

Data volume management: 42M LMS progress events stay in LMS. Salesforce holds ~2M enrollment records, ~500K certification records, ~15K accounts — well within standard limits. Growth at 20% YoY is manageable for 3+ years without LDV strategies.

Artifact 7: Governance

Architecture Review Board (ARB): Bi-weekly. VP Engineering (chair), IT Director, SI lead architect, Legal representative. Reviews integration changes, data model modifications, security configurations.

Change TypeApprovalLead Time
Data model / integrationARB2 sprints
Portal configurationIT Director1 sprint
Privacy / complianceARB + Legal2 sprints
Emergency fixIT Director + VP EngSame day

Standards:

  • Naming: EP_[Object]_[Purpose] (e.g., EP_Enrollment_CompletionSync)
  • All integrations through MuleSoft — no direct Apex callouts to external systems
  • 85% Apex test coverage minimum
  • All Flows documented in a central registry

Center of Excellence: Given the small team (12 internal + 15 SI), establish a 3-person CoE (1 architect, 1 admin, 1 integration lead) to own standards and train the broader team. SI partner handles build; CoE ensures knowledge transfer.

Artifact 8: Environment Strategy

EnvironmentPurposeRefresh
Full Copy SandboxUAT + performance testingMonthly
Partial CopyIntegration testing (LMS, Stripe, HubSpot)Bi-weekly
Developer Sandbox (x2)Core team + SI partnerSprint start
Developer Pro SandboxPortal development + testingSprint start

CI/CD: Salesforce CLI + GitHub + GitHub Actions. Branch strategy: main (prod), release/* (UAT), feature/* (dev). All deployments automated — no manual metadata moves.

LMS integration testing: Dedicated LMS staging environment mirrors production data structure. MuleSoft CloudHub sandbox connects Salesforce Partial Copy to LMS staging for end-to-end integration testing.

Privacy testing: Full Copy sandbox with data masking for learner PII. FERPA consent workflows tested with synthetic K-12 data.

Artifact 9: Phased Delivery Roadmap

gantt
    title EduPath — 18-Month Delivery
    dateFormat  YYYY-MM
    axisFormat  %b %Y

    section Phase 1 — Foundation
    Salesforce org setup + data model     :p1a, 2026-05, 2M
    Sales Cloud + territory config        :p1b, 2026-06, 2M
    MuleSoft + LMS integration            :p1c, 2026-05, 4M
    HubSpot migration                     :p1d, 2026-07, 2M
    FERPA compliance framework            :p1e, 2026-06, 3M
    FERPA Go-Live                         :milestone, m1, 2026-10, 0d

    section Phase 2 — Service + Portals
    Service Cloud + Zendesk migration     :p2a, 2026-09, 4M
    Corporate Portal (Exp Cloud)          :p2b, 2026-10, 4M
    Instructor Portal (Exp Cloud)         :p2c, 2027-01, 3M
    Stripe + billing integration          :p2d, 2026-10, 3M
    Portals Live                          :milestone, m2, 2027-04, 0d

    section Phase 3 — Analytics + Optimization
    CRM Analytics dashboards              :p3a, 2027-03, 3M
    GDPR + Privacy Act hardening          :p3b, 2027-03, 2M
    Mobile optimization                   :p3c, 2027-05, 2M
    Zoom attendance integration           :p3d, 2027-05, 2M
    Program Complete                      :milestone, m3, 2027-10, 0d

    section Cross-Cutting
    LMS ongoing sync + reconciliation     :cc1, 2026-05, 18M
    Training + change management          :cc2, 2026-06, 14M

Sequencing rationale: FERPA drives Phase 1 deadline — K-12 partnerships cannot launch without it. LMS integration starts month 1 because every subsequent phase depends on learner data flowing into Salesforce. Service Cloud and portals overlap in Phase 2 because portal users will generate support cases. GDPR/Privacy Act hardening in Phase 3 because UK and AU operations already function (compliance is improvement, not blocker). Analytics last because it requires data maturity across all integrated systems.

Identity & SSO Flow

sequenceDiagram
    participant EmpBrowser as Employee Browser
    participant Google as Google Workspace
    participant SF as Salesforce Core Org
    participant CorpAdmin as Corporate Admin
    participant CorpIdP as Corporate SAML IdP
    participant Auth0 as Auth0
    participant CorpPortal as Corporate Portal (EC)
    participant Instructor as Instructor
    participant InstPortal as Instructor Portal (EC)
    participant MuleSoft as MuleSoft (System-to-System)

    rect rgb(230, 240, 255)
    Note over EmpBrowser,SF: Internal Employee SSO (800 users)
    EmpBrowser->>Google: Navigate to Salesforce (SP-initiated)
    Google->>Google: Authenticate (Google MFA)
    Google->>EmpBrowser: SAML 2.0 Assertion
    EmpBrowser->>SF: POST Assertion to ACS URL
    SF->>SF: JIT attribute update (role, territory)
    SF->>EmpBrowser: Session established
    end

    rect rgb(230, 255, 230)
    Note over CorpAdmin,CorpPortal: Corporate Portal — Federated Enterprise Client
    CorpAdmin->>CorpPortal: Navigate to Corporate Portal
    CorpPortal->>CorpIdP: SAML redirect (SF as SP)
    CorpIdP->>CorpIdP: Corporate SSO + MFA
    CorpIdP->>CorpPortal: SAML Assertion
    CorpPortal->>CorpPortal: Match to portal user, apply sharing set
    CorpPortal->>CorpAdmin: Account-scoped learner dashboard
    end

    rect rgb(255, 245, 230)
    Note over CorpAdmin,CorpPortal: Corporate Portal — Auth0 Fallback
    CorpAdmin->>Auth0: Login (same credentials as LMS)
    Auth0->>Auth0: Authenticate + MFA (TOTP/SMS)
    Auth0->>CorpPortal: OIDC token
    CorpPortal->>CorpPortal: Map to portal user, apply sharing set
    CorpPortal->>CorpAdmin: Account-scoped learner dashboard
    end

    rect rgb(245, 235, 250)
    Note over Instructor,InstPortal: Instructor Portal (45 users)
    Instructor->>Google: Navigate to Instructor Portal (SP-initiated)
    Google->>Google: Authenticate (Google MFA)
    Google->>InstPortal: SAML 2.0 Assertion
    InstPortal->>InstPortal: Partner Community profile applied
    InstPortal->>Instructor: Course metrics + revenue share dashboard
    end

    rect rgb(240, 240, 240)
    Note over MuleSoft,SF: System-to-System Integration Auth
    MuleSoft->>SF: OAuth 2.0 Client Credentials
    SF->>MuleSoft: Access token (integration user)
    MuleSoft->>SF: API calls (REST / Platform Events / Bulk)
    end

Identity architecture rationale:

  • Google Workspace SAML 2.0 for 800 internal employees. Google is already the corporate IdP (per paper). JIT attribute updates on login map Google Workspace groups to Salesforce territory assignments (US, UK, AU) and role-based Permission Set Groups. At 800 users, SCIM provisioning is not strictly necessary — manual user provisioning with JIT attribute sync is sufficient and avoids SCIM setup complexity.
  • Corporate portal (two auth paths): Large enterprise clients (major tech companies, consulting firms) federate via their own SAML IdP — a Connected App is created per federated client with Salesforce as SP. Smaller companies and individual corporate admins use Auth0 (OIDC) — the same credentials they already use for LMS access. This dual path ensures all ~2,000 corporate admins can access the portal without forcing every company through SAML federation setup. MFA enforced on both paths: corporate MFA for federated, Auth0 MFA (TOTP/SMS) for non-federated.
  • Instructor portal uses Google Workspace SAML (same IdP as employees, different Experience Cloud profile). 45 instructors are either employees or close contractors — Google Workspace accounts exist for all of them. Partner Community licenses with Partner profile restrict access to course metrics, revenue share, and student feedback only.
  • Individual learners (250,000) do NOT access Salesforce. They use the LMS directly via Auth0 OIDC. This is the key architectural decision: no Salesforce portal for individual learners eliminates a 250K-user licensing and authentication problem. Learner data flows into Salesforce via MuleSoft integration, but learners never log into Salesforce.
  • System-to-system authentication via OAuth 2.0 Client Credentials on Named Credentials. Each integration (LMS, Stripe, HubSpot, DocuSign, Zoom) has its own Connected App with scoped permissions. MuleSoft manages token lifecycle.

K-12 FERPA Implication for Auth

K-12 learners (minors) never access the Salesforce portal directly. K-12 partnerships use the corporate portal path (school district training managers as corporate admins). Parental consent workflows are backend processes — parents interact via the LMS or paper forms, not Salesforce. This keeps FERPA-protected minors out of the Salesforce authentication surface entirely.

Integration Error Handling

Error handling tailored to each integration’s business criticality, with special attention to the LMS as the foundational data source.

IntegrationPatternRetry StrategyDead Letter QueueMonitoring & AlertsFallback (Extended Outage)
LMS (bidirectional — primary)Event-driven inbound + request-reply outboundInbound webhooks: MuleSoft acknowledges idempotently (LMS_Enrollment_Id as dedup key). Processing failure: Anypoint MQ retry 3x at 5-min intervals. Outbound enrollment requests: retry 3x with exponential backoff (30s, 2m, 10m)Anypoint MQ DLQ for failed inbound events (enrollment, completion, certification). DLQ entries include LMS event ID, learner email, and error detail. DLQ reviewed daily by integration leadDashboard: event volume by type (enrollment, completion, cert). Alert if event volume drops >30% from baseline. Alert if DLQ depth >10. Daily reconciliation job flags SF-vs-LMS enrollment count mismatches per accountInbound: Salesforce shows stale learner data (last successful sync timestamp displayed). Corporate dashboards note “data as of [timestamp].” Daily batch reconciliation catches up when LMS restores. Outbound: corporate admin enrollment requests queued in Anypoint MQ — LMS enrollments delayed but not lost. Manual enrollment via LMS admin panel as last resort
LMS (daily batch reconciliation)Batch (safety net)Nightly at 2 AM UTC. On failure: retry once at 4 AM. If both fail: alert integration lead for manual runDiscrepancy records written to LMS_Reconciliation__c staging object for reviewAlert if reconciliation finds >1% discrepancy between SF and LMS enrollment counts. Dashboard: discrepancy trend over timeReconciliation is a safety net, not primary. Webhook-driven sync continues independently. Manual reconciliation if batch fails 2 consecutive days
Stripe (inbound payment events)Event-driven (webhooks)Stripe retries webhooks per their exponential backoff policy (up to 72 hours). MuleSoft acknowledges idempotently. Processing failure: retry from Anypoint MQ 3xDLQ for failed payment events with Stripe event ID, customer email, and amount. Finance team reviews weeklyAlert if payment event volume drops >50% from baseline (may indicate webhook URL misconfiguration). Dashboard: payment events received vs. expectedStripe continues processing payments independently — no disruption to 85K subscribers. SF payment history temporarily stale. Finance team reconciles manually from Stripe dashboard for corporate invoicing
HubSpot (hourly lead sync)Batch + EventHourly sync: retry 3x at 10-min intervals. MQL webhook events: retry from Anypoint MQ 3xDLQ for failed lead records with HubSpot contact ID and error detail. Marketing ops reviews weeklyAlert if hourly sync fails 2 consecutive times. Dashboard: lead volume synced per hourSales team uses HubSpot directly for lead details. SF pipeline data temporarily incomplete. No revenue impact — leads are top-of-funnel
DocuSign (on-demand contracts)Request-Reply (bidirectional)Outbound (send for signature): retry 3x with 30s backoff. Inbound (signed doc webhook): DocuSign retries per their policy; MuleSoft processes idempotentlyDLQ for failed envelope creation requests with Account ID and contract details. Legal ops reviews dailyAlert if >5 pending envelopes fail to send in 1 hour. Dashboard: envelope volume, success rateSales team sends contracts directly via DocuSign web UI. Signed documents linked to SF Account manually on restoration
Zoom (post-session attendance)Event-driven (webhook)MuleSoft acknowledges idempotently. Processing failure: retry from Anypoint MQ 3x at 5-min intervalsDLQ for failed attendance records with Zoom meeting ID and attendee listAlert if attendance events missing for scheduled sessions. Dashboard: sessions tracked vs. scheduledAttendance data is supplementary — not blocking for any critical workflow. Instructors can pull attendance from Zoom reports. Catch-up sync on restoration

Judge Signal

The LMS integration is the most critical because corporate dashboards, renewal conversations, and FERPA compliance all depend on learner data flowing accurately. Be ready to explain: (a) why webhook + daily reconciliation is better than pure batch (real-time enrollment actions from portal), (b) why discrepancy alerting matters (stale data directly impacts corporate renewal rate), and (c) why outbound enrollment requests queue in Anypoint MQ rather than failing silently (corporate admin experience).

Governance & DevOps

Environment Topology

flowchart LR
    subgraph DevEnvs["Developer Sandboxes"]
        DEV1["DEV Core\n(Developer Sandbox)\nInternal team"]
        DEV2["DEV Portal\n(Developer Pro)\nPortal development"]
        DEV_SI["DEV SI Partner\n(Developer Sandbox)"]
    end

    subgraph TestEnvs["Test Environments"]
        INT["Integration Test\n(Partial Copy)\nMuleSoft + LMS staging"]
        UAT["UAT / Staging\n(Full Copy)\nCompliance + performance"]
    end

    DEV1 -->|"PR merge to develop"| INT
    DEV2 -->|"PR merge to develop"| INT
    DEV_SI -->|"PR merge to develop"| INT
    INT -->|"Release candidate"| UAT
    UAT -->|"ARB approval +\nLegal sign-off (privacy changes)"| PROD["PRODUCTION"]

    style PROD fill:#d4edda,stroke:#28a745,color:#000
    style INT fill:#fff3cd,stroke:#fd7e14,color:#000
    style UAT fill:#cce5ff,stroke:#0d6efd,color:#000

Branching Strategy

Streamlined for a small team (12 internal + 15 SI) with 18-month delivery:

  • main — mirrors production. Only IT Director deploys after ARB approval. Protected branch.
  • develop — integration branch. Feature branches merge via PR. Auto-deploys to Integration Test (Partial Copy) on merge.
  • feature/* — one branch per work item. 85% Apex coverage + naming convention check enforced at PR. Team prefixes: feature/core-*, feature/portal-*, feature/int-*.
  • release/* — cut from develop for UAT cycle. Deployed to Full Copy. Bug fixes only after cut. Privacy/FERPA changes require Legal sign-off before production promotion.
  • hotfix/* — emergency path. IT Director + VP Engineering approval. Merged to main and develop.

Sandbox Strategy

SandboxTypePurposeDataRefresh
DEV CoreDeveloper SandboxCore platform, Sales/Service CloudMetadata only (200 MB)Sprint start
DEV PortalDeveloper ProExperience Cloud portal developmentMetadata onlySprint start
DEV SI PartnerDeveloper SandboxSI partner feature developmentMetadata only (200 MB)Sprint start
Integration TestPartial CopyMuleSoft + LMS staging end-to-endMasked learner PII (Data Mask)Bi-weekly
UAT / StagingFull CopyCompliance review, performance, FERPA validationFull production clone with Data MaskMonthly

LMS integration testing setup: Dedicated LMS staging environment (AWS) mirrors production data structure. MuleSoft CloudHub sandbox connects Salesforce Partial Copy to LMS staging. End-to-end flow tested: enrollment webhook -> MuleSoft -> SF record creation -> corporate portal display. Stripe and HubSpot use sandbox/test environments with test API keys.

Privacy testing (FERPA/GDPR/Privacy Act):

  • Full Copy sandbox with Data Mask for learner PII (name, email, DOB, assessment scores)
  • Synthetic K-12 data set for FERPA workflow testing: parental consent capture, restriction rule validation, audit trail verification
  • GDPR workflows tested with synthetic UK learner data: consent management, right-to-erasure, data processing records
  • Privacy Act tested with synthetic AU learner data: breach notification readiness, cross-border transfer controls

Testing Strategy

Test TypeTargetEnvironmentGate
Unit tests (Apex)>= 85% coverage (all Flows documented in registry)Developer sandboxPR merge to develop
Integration testsMuleSoft + LMS end-to-end (enrollment, completion, cert events); Stripe payment webhooks; HubSpot lead syncIntegration Test (Partial Copy) with LMS stagingSprint completion
Portal UATCorporate admin: enrollment, dashboards, reports, bulk CSV upload. Instructor: course metrics, revenue shareIntegration Test with representative portal usersProduct owner sign-off
Performance tests2,000 concurrent corporate portal users, LMS webhook throughput (enrollment events at 20% YoY growth projection), daily reconciliation at 250K+ enrollment recordsUAT (Full Copy)ARB sign-off
FERPA compliance testsK-12 account restriction rules, parental consent workflow, FERPA audit trail completeness, minor age verification gateUAT with Legal + compliance representativeLegal Counsel sign-off (month 6 deadline)
GDPR / Privacy Act testsUK learner consent, right to erasure, AU breach notification, cross-border transferUAT with LegalLegal sign-off (Phase 3)
Auth flow testsEmployee Google SSO, corporate SAML federation (test IdP), Auth0 OIDC portal login, instructor portal loginIntegration TestIT Director sign-off

CoE & Ongoing Governance

Architecture Review Board (ARB):

  • Composition: VP Engineering (chair), IT Director, SI lead architect, Legal representative
  • Bi-weekly during implementation; monthly post-go-live
  • Reviews: integration changes, data model modifications, privacy configurations, portal updates

Internal team (12 people):

RoleCountResponsibility
IT Director (CoE Lead)1Release management, ARB coordination, vendor oversight
Salesforce Administrators2 (existing, SF-experienced)Configuration, user management, declarative automation
Salesforce Developer1 (existing, SF-experienced)Apex, LWC, code review, integration support
Integration Lead1 (cross-trained from LMS team)MuleSoft development, LMS API mapping
LMS Engineers5LMS API endpoints, webhook implementation, staging environment
Infrastructure4AWS hosting, networking, deployment support

SI partner (mid-size, 15 people): Handles primary build for Phases 1-2, transitions to advisory in Phase 3. Knowledge transfer: each SI consultant paired with internal team member. SI exits at month 16 with 2-month hypercare overlap.

Legacy portal team transition: 3 Java developers retrained. Month 1-3: Salesforce Trailhead + Admin cert path. Month 4-6: hands-on Experience Cloud development in DEV Portal sandbox. Month 7+: productive on portal configuration. Target: all 3 cross-trained by Phase 2 portal launch.

Release cadence:

  • During implementation: 2-week sprints; production deployments every 4 weeks after ARB approval
  • Post-go-live: Monthly releases with full regression. 48-hour hypercare after each deployment. Emergency fixes via hotfix branch with IT Director + VP Eng approval.

Standards:

  • Naming: EP_[Object]_[Purpose] (e.g., EP_Enrollment_CompletionSync)
  • All integrations through MuleSoft — no direct Apex callouts
  • 85% Apex test coverage minimum
  • All Flows documented in central registry (flow name, trigger, purpose, last modified)
  • FERPA changes require Legal sign-off at PR level (GitHub CODEOWNERS rule)

Ongoing operations:

  • MuleSoft Anypoint Monitoring: LMS sync health, payment event flow, lead sync rates
  • Daily LMS reconciliation: automated discrepancy alerting with threshold (>1% flags for review)
  • Shield Event Monitoring: FERPA record access audit (weekly review by IT Director)
  • Quarterly platform review: enrollment data volume growth, API consumption, portal usage metrics
  • Semi-annual privacy compliance review: FERPA audit trail completeness, GDPR consent records, Privacy Act breach readiness

Reporting Approach

CRM Analytics delivers the executive dashboard (revenue by B2B vs. B2C segment, renewal rates correlated with LMS utilization and completion data, learner growth trajectory, course performance rankings), the sales dashboard (pipeline, ARR, account health scores derived from LMS enrollment/completion metrics via MuleSoft, territory performance across US/UK/AU), and the operations dashboard (ticket volumes from Service Cloud, resolution times by channel, self-service deflection rates from the knowledge base). Corporate training managers access account-level dashboards directly in the Experience Cloud portal — enrollments, completion rates, certification status, and time-to-completion by department — powered by summarized LMS data synced through MuleSoft.

Presentation Strategy

For this intermediate scenario, allocate time roughly equally across artifacts but go deeper on: (1) LMS integration pattern — the make-or-break technical decision, (2) multi-portal architecture — shows solution design thinking, and (3) FERPA compliance — the timeline-driven risk. Cover remaining artifacts at summary level with confident, concise explanations.