Skip to content

Case Study 02: CareBridge Health System (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 Arch, D2 Security, D3 Data, D5 Integration | Difficulty: Advanced Time budget: 180 minutes | Key frameworks: 9 Essential Artifacts, Five-Finger Method

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. Health Cloud — care plans, care teams, health timelines, and HIPAA requirements map directly to Health Cloud’s standard data model. Rejected Service Cloud + custom objects because Health Cloud provides these out of the box with BAA coverage.
  2. Salesforce Shield — Req 6 mandates customer-managed encryption keys (Shield BYOK) and Req 7 mandates 7-year immutable audit trails (Field Audit Trail + Event Monitoring).
  3. Experience Cloud for patient portal — 400K users needing scheduling, messaging, results, bill pay. Inherits Salesforce sharing model, supports Customer Community Plus licensing.
  4. MuleSoft Anypoint — 5+ integration targets across FHIR R4, HL7v2, and REST protocols with HIPAA audit requirements on all data flows. Rejected point-to-point Apex callouts due to unmaintainable technical debt.
  5. Salesforce Mobile with Mobile Offline for home health — offline read/write on iPads using configurable offline record sets and offline data capture. Rejected custom native app due to timeline and budget constraints.

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 Health Cloud"]
        HC[Health Cloud<br/>Patients · Care Plans<br/>Care Teams · Referrals]
        Shield[Shield<br/>BYOK + FAT + Event Mon]
        EC[Experience Cloud<br/>Patient Portal 400K]
        Mobile[Mobile Offline<br/>Home Health iPads]
        Analytics[CRM Analytics]
        Flows[Flow + Apex<br/>RPM Alert Engine]
    end

    subgraph MW["MuleSoft Anypoint"]
        API_GW[API Gateway — mTLS + OAuth]
        FHIR[FHIR R4 Connector]
        HL7[HL7v2 MLLP Adapter]
        REST[REST Connectors]
        DLQ[Error Hospital + DLQ]
    end

    subgraph Clinical["Clinical Systems"]
        Epic[Epic EHR]
        Labs[LabCorp + Quest]
    end

    subgraph Ops["Operational Systems"]
        Kronos[Kronos WFM]
        DocuSign[DocuSign]
        Philips[Philips RPM]
    end

    subgraph ID["Identity"]
        Entra[Entra ID]
        PatAuth[EC Identity]
    end

    subgraph RET["Retiring"]
        Meditech[Meditech EHR]
    end

    HC <-->|"REST / Bulk API"| API_GW
    API_GW <--> FHIR
    FHIR <-->|"FHIR R4 mTLS — 3.5M encounters/yr"| Epic
    API_GW <--> HL7
    HL7 <-->|"HL7v2 MLLP — 3,300 results/day"| Labs
    API_GW <--> REST
    REST -->|"REST batch daily — 200 schedules"| Kronos
    REST <-->|"REST webhook — 50K docs/yr"| DocuSign
    REST -->|"REST polling 5-min — 15K readings/day"| Philips
    Entra -->|"SAML 2.0 SSO + JIT"| HC
    PatAuth -->|"MFA + self-registration"| EC
    Meditech -.->|"Flat file extract via Informatica CDQ"| HC

    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,HC,Shield,EC,Mobile,Analytics,Flows sfSystem
    class MW,API_GW,FHIR,HL7,REST,DLQ integrationLayer
    class Epic,Labs keepSystem
    class Kronos,DocuSign,Philips keepSystem
    class Entra,PatAuth keepSystem
    class Meditech retireSystem
    class L1 newSystem
    class L2 keepSystem
    class L3 retireSystem
    class L4 integrationLayer

Artifact 2: Data Model

erDiagram
    ACCOUNT_PATIENT ||--o{ CARE_PLAN : has
    ACCOUNT_PATIENT ||--o{ CARE_TEAM : assigned
    ACCOUNT_PATIENT ||--o{ ENCOUNTER : participates_in
    ACCOUNT_PATIENT ||--o{ REFERRAL : subject_of
    ACCOUNT_PATIENT ||--o{ RPM_READING__C : generates
    ACCOUNT_PATIENT ||--o{ CONSENT_RECORD__C : signs
    CARE_PLAN ||--o{ CARE_PLAN_GOAL : includes
    CARE_PLAN ||--o{ CARE_PLAN_TASK : contains
    CARE_PLAN }o--|| CARE_TEAM : managed_by
    CARE_TEAM ||--o{ CARE_TEAM_MEMBER : comprises
    CARE_TEAM_MEMBER }o--|| CONTACT_PROVIDER : is_a
    REFERRAL }o--|| CONTACT_PROVIDER : referred_by
    REFERRAL }o--|| CONTACT_PROVIDER : referred_to
    RPM_READING__C }o--|| RPM_DEVICE__C : from_device
    RPM_READING__C ||--o{ RPM_ALERT__C : triggers

    ACCOUNT_PATIENT {
        string MRN "Master Patient Index"
        boolean VIP_Flag "Restriction Trigger"
        string Home_State "NC or SC"
    }
    CARE_PLAN {
        string Status "Active / Completed"
        string Owning_Department "Access Routing"
    }
    RPM_READING__C {
        string Reading_Type "BP / Glucose / SpO2 / Weight"
        decimal Value "Measured Value"
        boolean Threshold_Breached "Alert Trigger"
    }
    REFERRAL {
        string Referral_Type "Internal / External"
        string Status "Pending / Accepted / Completed"
        string Priority "Routine / Urgent"
    }

Data Model Notes

  • Person Accounts for patients with Health Cloud patient fields
  • CarePlan / CareTeam / CareTeamMember / Encounter / Referral are standard Health Cloud objects
  • RPM_Reading__c, RPM_Alert__c, RPM_Device__c, Consent_Record__c are custom objects
  • Health Timeline is a UI Lightning component reading from multiple objects, not a storage object
  • Clinical notes from Epic are fetched on-demand via FHIR, NOT persisted in Salesforce

Artifact 3: Role Hierarchy and Sharing Model

OWD Settings:

ObjectOWDRationale
Account (Patient)Private8 user types each see different patient populations
Care Plan / Encounter / Care TeamControlled by ParentInherit from Account
ReferralPrivateExternal providers see only their referrals
RPM Reading / Lab ResultControlled by ParentInherit from Account

Sharing mechanisms:

  • Physicians: Criteria-based sharing rule per department (e.g., Department__c = 'Cardiology' to Public Group ‘Cardiologists’). Chiefs see all via role hierarchy.
  • Specialists: Apex-managed sharing via Care Team Member — share created on referral acceptance, removed on episode close. Dynamic and event-driven.
  • Hospital nurses: Criteria-based sharing rule per unit (e.g., Current_Unit__c = 'ICU').
  • Home health nurses: Apex-managed sharing from daily Kronos schedule sync. Offline briefcase pre-loads assigned patients.
  • Care coordinators: Criteria-based sharing on Care_Program field.
  • Patient Access: FLS restricts to demographics and scheduling fields; clinical fields hidden.
  • Revenue Cycle: FLS restricts to encounter details and Dx codes; clinical notes hidden.
  • External referral providers: Experience Cloud partner portal with sharing set scoped to their referrals only.
  • VIP restriction: Restriction Rule on Account where VIP_Flag = true. Runs AFTER all sharing rules. Only VIP_Access permission set bypasses it.

Judge Signal

Judges will probe VIP restriction, specialist dynamic access (referral-driven, not department-based), and home health offline sync (how records pre-load before nurses go offline). Prepare to explain criteria-based vs. Apex-managed sharing.

Artifact 4: Integration Architecture

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

    subgraph SF["Health Cloud"]
        PE[Platform Events — Inbound]
        CDC[Change Data Capture — Outbound]
        Apex[RPM Alert Engine]
    end

    subgraph Mule["MuleSoft Anypoint"]
        FHIR_API[FHIR R4 System API]
        HL7_L[HL7v2 MLLP Listener]
        RPM_P[RPM Poller — 5 min]
        K_Sync[Kronos Sync — Daily 5 AM]
        DS_Hook[DocuSign Webhook Listener]
        ErrH[Error Hospital + DLQ]
    end

    subgraph Ext["External Systems"]
        Epic[Epic EHR]
        LC[LabCorp]
        QD[Quest]
        Phil[Philips RPM]
        Kron[Kronos WFM]
        DS[DocuSign]
    end

    CDC -->|"Pub/Sub API — demographics changes"| FHIR_API
    FHIR_API <-->|"FHIR R4 mTLS — bidirectional clinical data"| Epic
    FHIR_API -->|"Platform Event — clinical data inbound"| PE
    LC -->|"HL7v2 MLLP — lab results"| HL7_L
    QD -->|"HL7v2 MLLP — lab results"| HL7_L
    HL7_L -->|"Platform Event — 3,300 results/day"| PE
    RPM_P -->|"REST OAuth polling — 15K readings/day"| Phil
    RPM_P -->|"Platform Event — RPM readings"| PE
    K_Sync -->|"REST OAuth batch — 200 schedules/day"| Kron
    K_Sync -->|"Platform Event — schedule sync"| PE
    DS_Hook -->|"REST webhook — 50K docs/yr"| DS
    DS_Hook -->|"Platform Event — consent status"| PE

    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,Apex sfSystem
    class Mule,FHIR_API,HL7_L,RPM_P,K_Sync,DS_Hook,ErrH integrationLayer
    class Epic,LC,QD,Phil,Kron,DS keepSystem
    class L1 newSystem
    class L2 keepSystem
    class L3 integrationLayer
IntegrationPatternProtocolDirectionVolume
Epic EHRRequest-Reply + Event-DrivenFHIR R4 / HTTPS (mTLS)Bidirectional3.5M encounters/yr
LabCorp/QuestEvent-DrivenHL7v2 via MLLPInbound3,300 results/day
Philips RPMPollingREST / OAuth 2.0Inbound15,000 readings/day
KronosBatchREST / OAuth 2.0Inbound200 schedules/day
DocuSignEvent-Driven (webhook)REST / OAuth 2.0Inbound50,000 docs/year

Epic FHIR detail: Outbound demographics changes flow via CDC/Pub/Sub API to MuleSoft, mapped to FHIR Patient resource. Inbound clinical data via Epic FHIR Subscriptions for Encounter, Observation, MedicationRequest, DiagnosticReport. Health Timeline uses on-demand FHIR read — data displayed but NOT persisted (avoids PHI duplication).

RPM alert flow: MuleSoft polls Philips every 5 minutes, writes RPM_Reading records via Platform Events. Apex trigger evaluates against patient thresholds; if breached, creates RPM_Alert, assigns task to care team, sends push notification.

Artifact 5: Identity and Access Management

  • Employees (8,500): SAML 2.0 SSO with Entra ID. JIT provisioning creates/updates users on login. Department, role, and permission sets derived from Entra group membership. MFA enforced at Entra.
  • Patients (400,000): Experience Cloud Identity with self-registration, email + password + MFA (SMS/authenticator). Customer Community Plus licenses. Social login subject to HIPAA BAA review.
  • External providers (390): Partner Community licenses, username + password + MFA. Sharing set limits view to their referral records only.
  • Device management (Req 20): iPads enrolled in corporate MDM (Intune/Jamf). Salesforce Mobile deployed as managed app enabling selective container wipe. Offline data encrypted at rest.

Artifact 6: Data Migration Strategy

Source: Meditech — 850K patients, 2.1M encounters, 4.5M referrals.

Phase 1 — Profiling and cleansing (Months 1-4): Extract via flat-file exports. Profile with Informatica Cloud Data Quality. Dedup strategy: composite key (Last Name + DOB + Gender + Last 4 SSN) with fuzzy matching. Survivorship: Epic wins for clinical data, Meditech wins for administrative data not in Epic. Create Master Patient Index mapping table; legacy MRNs preserved as alternate identifiers.

Phase 2 — Historical load (Months 5-8):

TierRecordsTargetAccess
Hot (Active + 3 years)400K patients, 1.2M encountersHealth Cloud objectsImmediate SOQL
Warm (3-7 years)300K patients, 600K encountersBig ObjectsAsync SOQL
Cold (7+ years)150K patients, 300K encountersExternal lake via Data CloudCompliance retrieval

Load sequence: Accounts (Patients) -> Providers (Contacts) -> Care Plans -> Encounters -> Referrals. Hot tier via Bulk API 2.0; Big Objects via Apex batch DML. Validation: record count reconciliation, referential integrity checks, 500-record clinical SME spot-check.

Phase 3 — Parallel run (Months 9-11): Both systems operate; new data in Health Cloud, Meditech read-only. Daily automated reconciliation. Exit criteria: 30 days zero critical discrepancies, all users trained, all integrations live.

Phase 4 — Decommission (Months 12-14): Final extract, Meditech powered down, database backup retained 7 years. Completes month 14 — 2 months before vendor deadline.

Artifact 7: Governance Framework

Data DomainOwnerSystem of Record
Clinical encounters, orders, medsCMOEpic
Patient demographics, insuranceVP Patient AccessHealth Cloud
Care plans, care teamsCNOHealth Cloud
ReferralsCMO + CNO (joint)Health Cloud
RPM vitalsDirector RPMPhilips (raw) / Health Cloud (alerts)
Compliance and auditCCOSalesforce Shield
  • CAB: CIO (chair), CMO rep, CNO rep, CCO rep, IT Director, 2 clinical SMEs. Biweekly during implementation, monthly post-go-live.
  • Change classification: Emergency (<4hr), Standard (CAB approval), Major (CAB + executive sign-off)
  • Clinical impact assessment required for every change affecting clinical workflows (CMO sign-off)
  • Release cadence: 2-week sprints during implementation; monthly post-go-live with full regression, clinical UAT, CCO compliance review, 48-hour hypercare

Artifact 8: Environment Strategy

EnvironmentPurposeRefresh
ProductionLive systemN/A
Full SandboxStaging / UATMonthly
Partial SandboxTraining (Data Mask applied)Quarterly
Partial SandboxIntegration testingBi-weekly
Developer Pro (x4)Feature developmentOn-demand
Developer Pro (x1)Hotfix / emergencyOn-demand

CI/CD: Git (GitHub) with branch protection. Salesforce CLI via GitHub Actions. Pipeline: feature branch -> dev sandbox -> PR review -> integration sandbox -> Full sandbox (UAT) -> production. 80% Apex test coverage enforced.

PHI in non-production: Data Mask applied to all non-production environments. Training uses Partial Copy (never Full Copy for trainer access — HIPAA violation). Only production contains real patient data.

Artifact 9: Phased Delivery Roadmap

gantt
    title CareBridge — 24-Month Delivery
    dateFormat YYYY-MM
    axisFormat %b %Y

    section Phase 1: Foundation
    Platform + Shield + SSO + data model  :p1a, 2026-04, 3M
    MuleSoft setup                        :p1b, 2026-05, 2M
    Data profiling + cleansing            :p1c, 2026-04, 4M

    section Phase 2: Core Clinical
    Epic FHIR integration                 :p2a, 2026-07, 4M
    Lab results integration               :p2b, 2026-08, 3M
    Role hierarchy + sharing model        :p2c, 2026-07, 3M
    Care plan + care team config          :p2d, 2026-08, 2M
    Historical data migration (hot)       :p2e, 2026-08, 4M

    section Phase 3: Portal + Mobile
    Experience Cloud patient portal       :p3a, 2026-11, 4M
    Patient identity + registration       :p3b, 2026-11, 2M
    Home health mobile + offline          :p3c, 2027-01, 3M
    Kronos schedule integration           :p3d, 2027-01, 2M
    Legacy portal migration               :p3e, 2027-02, 2M

    section Phase 4: Advanced
    RPM integration (Philips)             :p4a, 2027-04, 3M
    RPM alerting engine                   :p4b, 2027-05, 2M
    DocuSign consent integration          :p4c, 2027-04, 2M
    Referral management + partner portal  :p4d, 2027-04, 3M

    section Migration + Cutover
    Meditech parallel run                 :crit, p5a, 2027-01, 3M
    Meditech decommission                 :crit, p5b, 2027-04, 2M

    section Cross-Cutting
    Training (role-specific, per phase)   :p6a, 2026-10, 14M
    Hypercare + stabilization             :p6b, 2027-07, 5M

Sequencing rationale: Phase 1 is foundational (cannot integrate without the platform). Phase 2 delivers clinical value first (physicians are hardest to win over). Phase 3 addresses highest-risk external-facing component (400K-user portal). Phase 4 handles advanced capabilities building on the core. Meditech decommission has 2 months of buffer before vendor end-of-support.

PhaseGo-Live Gate
Phase 1Shield encryption verified, SSO working, data model validated
Phase 2Epic integration stable 14 days, sharing model UAT passed by CCO, hot-tier migration validated
Phase 3Portal load-tested to 50K concurrent, offline sync field-validated, 99.9% uptime for 30 days
Phase 4RPM alerts validated by Dr. Patel, referral SLA tracking confirmed, external provider UAT

Identity & SSO Flow

sequenceDiagram
    participant EmpBrowser as Employee Browser
    participant Entra as Microsoft Entra ID
    participant HC as Health Cloud
    participant PatBrowser as Patient Browser
    participant ECID as EC Identity
    participant Portal as Patient Portal
    participant ExtDoc as External Provider
    participant PartnerPortal as Referral Portal
    participant MuleSoft as MuleSoft (System-to-System)

    rect rgb(230, 240, 255)
    Note over EmpBrowser,HC: Internal Employee SSO (8,500 users)
    EmpBrowser->>Entra: Navigate to Salesforce (SP-initiated)
    Entra->>Entra: Authenticate (password + MFA enforced)
    Entra->>Entra: Evaluate group membership<br/>(department, role, unit/zone)
    Entra->>EmpBrowser: SAML 2.0 Assertion (Federation ID + attributes)
    EmpBrowser->>HC: POST Assertion to ACS URL
    HC->>HC: JIT Provisioning — create/update User<br/>(Profile, Permission Sets from Entra groups)
    HC->>EmpBrowser: Session (role-appropriate access)
    end

    rect rgb(230, 255, 230)
    Note over PatBrowser,Portal: Patient Portal Authentication (400,000 users)
    PatBrowser->>ECID: Self-registration or login
    ECID->>ECID: Verify email + password
    ECID->>ECID: Enforce MFA (SMS or authenticator app)
    ECID->>Portal: Authenticated session (Customer Community Plus)
    Portal->>Portal: Sharing model scopes to own records
    Portal->>PatBrowser: Patient dashboard (own data only)
    end

    rect rgb(255, 240, 230)
    Note over ExtDoc,PartnerPortal: External Provider Access (390 providers)
    ExtDoc->>PartnerPortal: Login (username + password + MFA)
    PartnerPortal->>PartnerPortal: Partner Community license<br/>Sharing set: own referrals only
    PartnerPortal->>ExtDoc: Referral status view (no full patient record)
    end

    rect rgb(255, 245, 230)
    Note over MuleSoft,HC: System-to-System Integration Auth
    MuleSoft->>HC: OAuth 2.0 Client Credentials (per Connected App)
    HC->>MuleSoft: Access token (integration user)
    MuleSoft->>HC: API calls (REST / Platform Events / Bulk)
    end

Identity architecture rationale:

  • Entra ID SAML 2.0 for all 8,500 employees. JIT provisioning maps Entra group membership (department, clinical unit, geographic zone) to Salesforce Permission Set Groups. Physicians receive department-specific access on login; nurses receive unit- or zone-based access. Home health nurses’ Entra groups include geographic zone assignment, which JIT maps to the correct permission set for offline briefcase pre-loading. 8-hour session timeout for desktop; 4-hour for mobile (iPad).
  • Patient portal (Experience Cloud native identity) with self-registration, email + password + MFA. Customer Community Plus licenses support sharing model inheritance. Social login (Google, Apple) subject to HIPAA BAA review — initially disabled, evaluated in Phase 3 after legal review. 400,000 existing credentials from the legacy Java portal require a migration strategy: bulk import hashed credentials with forced password reset on first EC login via a custom self-service flow.
  • External provider portal using Partner Community licenses with username + password + MFA. Each external provider sees only referrals where they are the referring or referred-to provider (sharing set scoped via provider Contact lookup). 350 community physicians + 40 specialty practices = ~390 portal users. No access to full patient records — referral status and basic demographics only.
  • System-to-system authentication via OAuth 2.0 Client Credentials. Each integration target (Epic, LabCorp/Quest, Philips, Kronos, DocuSign) has its own Connected App with scoped permissions. Named Credentials manage token lifecycle. No shared or interactive service accounts (HIPAA Security Rule requires unique identification for all system access — audit trail must trace every API call to a specific integration context).
  • iPad device management (Req 20): iPads enrolled in corporate MDM (Intune or Jamf). Salesforce Mobile deployed as a managed app with selective container wipe capability. Offline data encrypted at rest on device. If device reported lost/stolen, MDM triggers remote wipe within 15 minutes. MFA re-required after any offline period exceeding 8 hours.

Integration Error Handling

Each integration has error handling tailored to clinical urgency, HIPAA compliance requirements, and data volume.

IntegrationPatternRetry StrategyDead Letter QueueMonitoring & AlertsFallback (Extended Outage)
Epic EHR (FHIR R4 bidirectional)Request-Reply + Event-DrivenOutbound demographics: exponential backoff (30s, 2m, 10m), max 5 retries. Inbound clinical via FHIR Subscriptions: Epic resends per subscription retry policy; MuleSoft acknowledges idempotentlyAnypoint MQ DLQ for failed demographic updates and unprocessable clinical events. Correlation ID links SF record to Epic FHIR resource IDMuleSoft Anypoint Monitoring: sync lag dashboard, error rate by resource type. PagerDuty alert if sync gap >30 min for demographics or >2 hours for clinicalDemographics: Health Cloud is authoritative — Epic shows stale until sync restores. Clinical: physicians use Epic directly (always available); Health Timeline shows “clinical data refresh pending” banner. No patient care impact — Epic is the clinical SOR
LabCorp / Quest (HL7v2 MLLP)Event-DrivenMuleSoft MLLP adapter retries connection 3x at 1-min intervals on socket failure. Message-level: ACK/NAK per HL7 spec — NAK triggers retry up to 3xFailed messages written to DLQ with HL7 segment detail. 2% patient ID mismatches (per paper) routed to reconciliation queue for manual resolutionDashboard: results received vs. expected (baseline ~3,300/day). Alert if volume drops >20% from rolling average. Alert on reconciliation queue depth >50Lab results continue flowing to Epic via Interconnect (parallel path). Health Cloud shows “lab results temporarily unavailable — view in Epic.” Critical value alerts remain through Epic (no disruption to clinical workflow)
Philips RPM (polling 5-min)PollingMuleSoft polls Philips REST API every 5 min. On poll failure: retry 3x at 1-min intervals. On throttle (429): respect Retry-After header (1,000 req/min rate limit)Failed readings written to DLQ with patient ID and reading type. Alert thresholds require readings to be present — DLQ entries trigger “stale reading” alert to RPM nurse teamDashboard: readings received per 5-min window vs. expected (~50/window). Alert if reading volume drops >30%. Alert if any patient has no readings for >30 min (device or connectivity issue)RPM nurses revert to Philips dashboard directly (always available). Salesforce RPM_Alert records paused — no false alerts generated from missing data. Catch-up load runs on restoration to backfill missed readings
Kronos WFM (daily batch)BatchMuleSoft retrieves schedules via REST API. Retry 3x at 15-min intervals if Kronos unavailable at 5 AM sync. Record-level: failed schedule records logged individuallyDLQ for individual schedule records that fail validation (invalid patient ID, missing address). Ops team reviews before nurse dispatchAlert if schedule sync not complete by 6:30 AM (nurses need schedules by 7 AM). Alert on DLQ depth >10 records. Dashboard: schedule count vs. expected (~200/day)Home health nurses use prior-day schedule as fallback (most visits are recurring). Dispatchers manually pull Kronos schedule and communicate via phone/SMS to affected nurses. Offline briefcase uses last-synced patient list
DocuSign (webhook)Event-drivenDocuSign retries webhook delivery per their policy (up to 24 hours). MuleSoft acknowledges idempotently. On processing failure: retry 3x from DocuSign status APIFailed consent linkages written to DLQ with envelope ID, patient ID, and document type. Compliance team reviews weeklyAlert if >5 unsigned consent forms pending >72 hours (state-mandated consent timelines). Dashboard: consent completion rates by type and facilityConsent forms can be printed and wet-signed as fallback (paper process). Scanned copies uploaded manually to patient record. Electronic signing resumes on restoration

Clinical Safety Note

For all integrations, the design ensures that no integration failure prevents clinical care delivery. Epic is the clinical system of record and remains independently accessible. All Salesforce integration failures result in “data temporarily unavailable” states, never in incorrect or misleading clinical information. RPM alerts pause rather than generate false alerts from missing data.

Governance & DevOps

Environment Topology

flowchart LR
    subgraph DevEnvs["Developer Sandboxes"]
        DEV1["DEV 1\n(Developer Pro)\nCore team"]
        DEV2["DEV 2\n(Developer Pro)\nIntegration"]
        DEV3["DEV 3\n(Developer Pro)\nPortal"]
        DEV4["DEV 4\n(Developer Pro)\nMobile"]
        HOTFIX["HOTFIX\n(Developer Pro)\nEmergency only"]
    end

    subgraph TestEnvs["Test Environments"]
        INT["Integration Test\n(Partial Copy)\nMuleSoft endpoints"]
        TRAIN["Training\n(Partial Copy)\nMasked PHI — HIPAA"]
        UAT["UAT / Staging\n(Full Copy)\nCompliance + performance"]
    end

    DEV1 -->|"PR merge to develop"| INT
    DEV2 -->|"PR merge to develop"| INT
    DEV3 -->|"PR merge to develop"| INT
    DEV4 -->|"PR merge to develop"| INT
    INT -->|"Release candidate"| UAT
    UAT -->|"CAB approval +\nClinical impact assessment\n+ CCO sign-off"| PROD["PRODUCTION"]
    HOTFIX -->|"CIO + IT Director\nEmergency path"| PROD

    style PROD fill:#d4edda,stroke:#28a745,color:#000
    style INT fill:#fff3cd,stroke:#fd7e14,color:#000
    style UAT fill:#cce5ff,stroke:#0d6efd,color:#000
    style TRAIN fill:#e8daef,stroke:#8e44ad,color:#000
    style HOTFIX fill:#f8d7da,stroke:#dc3545,color:#000

Branching Strategy

Adapted for a healthcare environment where changes affect clinical workflows and patient safety:

  • main — mirrors production. Only release manager deploys after CAB approval. Protected branch with required reviews.
  • develop — integration branch. Feature branches merge here via PR. Auto-deploys to Integration Testing (Partial Copy) on merge.
  • feature/* — one branch per work item. Developer validates in Developer Pro sandbox before PR. Minimum 80% Apex test coverage enforced at PR gate.
  • release/* — cut from develop for UAT cycle. Deployed to Full Copy sandbox. Bug fixes only after release branch is cut. Clinical impact assessment required for any change affecting clinical workflows.
  • hotfix/* — emergency path from main. Requires CIO + IT Director approval. Must include rollback plan. Merged to main and develop. 48-hour post-hoc CAB review.

Sandbox Strategy

SandboxTypePurposeDataRefresh
DEV 1-4Developer Pro (x4)Feature development by teamMetadata only — no PHIOn-demand
HOTFIXDeveloper Pro (x1)Emergency fixesMetadata onlyOn-demand
Integration TestPartial CopyMuleSoft end-to-end testing, Epic FHIR stagingMasked PHI (Data Mask applied)Bi-weekly
TrainingPartial CopyRole-specific training per phase go-liveMasked PHI (Data Mask applied) with synthetic patient scenariosQuarterly
UAT / StagingFull CopyCompliance review, performance testing, load testingFull production clone with Data Mask applied post-refreshMonthly

HIPAA data masking (mandatory for all non-production):

  • Salesforce Data Mask applied to all non-production environments immediately after refresh
  • Masked: patient name, DOB, SSN, MRN, address, phone, email, insurance ID, diagnoses, medication names
  • Training environment uses synthetic patient data sets validated by clinical SMEs — never real PHI
  • Only production contains real patient data — BAA with Salesforce covers production only
  • Developer Pro sandboxes contain metadata only (no data copied) — HIPAA safe by design

Testing Strategy

Test TypeTargetEnvironmentGate
Unit tests (Apex)>= 80% coverage (Salesforce standard)Developer sandboxPR merge to develop
Integration testsMuleSoft + Salesforce + external system stubs (Epic FHIR, HL7v2, RPM, Kronos, DocuSign)Integration Test (Partial Copy)Sprint completion
Regression testsFull test suite: sharing model, VIP restriction, department-based access, referral-driven sharingIntegration TestRelease branch cut
Performance tests2,200 concurrent internal users, nightly processing (3,300 lab results + 15K RPM readings), portal 5,000 concurrentUAT (Full Copy)Release to production
Security / compliance UATVIP access restriction, department-based physician access, home health nurse zone isolation, external provider referral scoping, audit trail completenessUAT with CCO + clinical SMEsCCO sign-off
Clinical UATCare plan workflows, referral lifecycle, RPM alerting, Epic data display, offline home health visit documentationUAT with physicians, nurses, care coordinatorsCMO/CNO sign-off
Offline sync testingHome health iPad: load patient list, go offline, document visits, restore connectivity, verify syncField testing with 3-5 nurses in controlled environmentCNO sign-off

Clinical impact assessment (required for every production change):

  • Any change affecting clinical workflows requires CMO delegate sign-off before production promotion
  • Assessment form: what clinical workflows are affected, what is the risk of patient care disruption, what is the rollback plan, has the change been validated by clinical SMEs
  • Changes during December freeze (last 2 weeks + first week January) require CIO + CMO emergency approval

CoE & Ongoing Governance

Internal team (8 FTEs + clinical SMEs):

RoleCountResponsibility
IT Director (CoE Lead)1Release management, CAB coordination, vendor oversight
Salesforce Administrators2Configuration, user management, declarative automation
Salesforce Developers2Apex, LWC, integration development, code review
Integration Specialist1MuleSoft development, HL7v2/FHIR mapping, Epic interface
Data Migration Specialist1Meditech extraction, dedup, load, validation
Clinical SMEs (part-time)4Requirements validation, UAT, workflow sign-off (physician, nurse, coordinator, patient access)

Legacy portal team transition: 3 Java developers retrained into Salesforce roles. Training plan: Trailhead fundamentals (months 1-2), shadowing existing SF admins (months 3-4), hands-on portal development in DEV-3 sandbox (months 5+). Target: 2 developers productive on Experience Cloud by month 6, 1 as LWC specialist by month 9.

CAB (Change Advisory Board):

  • Composition: CIO (chair), CMO representative, CNO representative, CCO representative, IT Director, 2 clinical SMEs
  • During implementation: biweekly meetings reviewing upcoming sprint deployments
  • Post-go-live: monthly CAB with full regression and clinical UAT before every release
  • Emergency changes: CIO + IT Director can approve with mandatory 48-hour post-hoc CAB review

Release cadence:

  • During implementation: 2-week sprints; production deployments every 4 weeks after clinical UAT
  • Post-go-live: Monthly releases with full regression. 48-hour hypercare after each deployment with on-call clinical liaison
  • Change freeze: Last 2 weeks of December + first week of January (per constraint). Also frozen 48 hours before and after any Joint Commission survey notification
  • Union notice: 90-day advance notice before any change affecting daily nursing workflows (home health). Phase 3 mobile rollout triggers this notice

Ongoing operations:

  • MuleSoft Anypoint Monitoring for integration health — alerting on Epic FHIR sync lag, lab result volumes, RPM reading rates
  • Shield Event Monitoring reviewed weekly by CCO delegate for inappropriate patient record access
  • Quarterly platform health: storage trending, API consumption, sharing model performance
  • Annual security assessment: HIPAA Security Rule compliance review, BAA renewals, penetration testing

Reporting Approach

CRM Analytics delivers clinical dashboards (care plan adherence, readmission rates, referral turnaround against 2-day SLA, RPM alert response times), compliance dashboards (VIP access audits from Shield Event Monitoring, consent completion rates, nurse license expiration alerts), and operational dashboards (portal usage, home health visit completion from Kronos sync, integration health from MuleSoft Anypoint Monitoring). RPM CMS billing reports (CPT 99453/99454/99457/99458) pull precise time-tracking data from RPM_Reading and Care_Plan_Task objects for accurate reimbursement documentation.