Solution 07: ConnectAll Communications
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.
Spoiler Warning
Attempt Scenario 07: ConnectAll Communications FIRST. Set a 180-minute timer and build your own solution before reading this.
Assumptions
- Communications Cloud (Industries package) and Industries CPQ licensed for product catalog and order management
- Amdocs BSS/OSS remains billing system of record; Salesforce is the CRM/engagement layer
- MuleSoft Anypoint available as integration middleware
- CDR data stays in a dedicated Snowflake data warehouse — never in Salesforce core
- 1.8M residential + 120K business customers fit in a single org with proper data architecture
- Copado or Gearset for CI/CD (not DevOps Center, which is unsuited for scratch-org development at 25-developer scale)
- Salesforce Field Service with offline capability for field technicians
- Data Cloud licensed for CDR access and analytics
Key Architectural Decisions
Decision 1: CDR Data Stays External (Data Cloud + MuleSoft API)
I chose to keep CDRs (2.8M records/day) in Snowflake, with Data Cloud ingesting daily usage summaries and a MuleSoft REST API providing on-demand agent access.
Rejected Big Objects because they have limited query capabilities (equality filters only on first indexed fields) and 2.8M daily ingest would consume API limits rapidly. Agent query patterns require flexible date-range and phone-number lookups Big Objects handle poorly. Also rejected full Data Cloud ingestion because query latency for individual customer lookups cannot reliably meet the sub-3-second SLA.
Implementation: Snowflake stores raw CDRs (7-year retention). Data Cloud ingests daily summaries for analytics/churn scoring. MuleSoft REST API queries Snowflake for the agent-facing “View Usage Details” action. CPNI access controls enforced at both Salesforce permission and Snowflake row-security levels.
Decision 2: Industries CPQ + OmniStudio for Product Catalog
I chose Communications Cloud with Industries CPQ for catalog modeling, pricing rules, and guided selling.
Rejected custom build (standard Products/Price Books + custom objects) because the 2,500-product catalog with bundle dependencies, step-up pricing, geographic eligibility, and cross-service discounts would require thousands of lines of custom Apex, creating long-term maintenance burden.
Implementation: EPC models all products/bundles/promotions declaratively. OmniStudio FlexCards power agent workspace with guided selling. Amdocs master catalog reconciled nightly via MuleSoft with drift alerting. Step-up pricing modeled as time-based pricing terms with automated milestone tracking.
Decision 3: Trunk-Based Development with Feature Flags
I chose trunk-based development with short-lived feature branches and feature flags for 3 distributed teams (25 developers).
Rejected GitFlow because long-lived branches were the root cause of ConnectAll’s current deployment conflicts. With 25 developers modifying shared metadata, long-lived branches guarantee late-stage merge pain.
Implementation: Single main branch. Feature branches max 2-3 days. Feature flags via CMDT gate incomplete features. Cross-team PR reviews mandatory for shared objects. CODEOWNERS defines team boundaries. CI validates metadata on every PR. Weekly production releases with hotfix path.
Critical Diagrams
System Landscape
graph TB
subgraph Legend
direction LR
NEW["🟢 NEW - Being Built"]
KEEP["⚪ KEEPING - No Changes"]
RETIRE["🔴 RETIRING - Decommissioning"]
INT["🟠 INTEGRATION LAYER"]
end
subgraph SF["🟢 Salesforce Platform"]
SC["🟢 NEW: Service Cloud<br/>Unified Customer 360"]
ICPQ["🟢 NEW: Industries CPQ<br/>2,500 Products / EPC"]
SFS_N["🟢 NEW: Field Service<br/>1,200 Technicians"]
EC["🟢 NEW: Experience Cloud<br/>MyConnectAll Rebuild"]
DCLOUD["🟢 NEW: Data Cloud<br/>Usage Summaries + Churn"]
end
subgraph MULE["🟠 MuleSoft Anypoint"]
API["🟢 NEW: API Gateway + ESB"]
end
subgraph EXT["External Systems"]
AMDOCS["⚪ KEEP: Amdocs BSS/OSS<br/>Billing SOR — $270M/mo"]
SNOW["🟢 NEW: Snowflake<br/>CDR 7-yr / ~7B+ records"]
GENESYS["⚪ KEEP: Genesys IVR<br/>180K calls/mo"]
NAGIOS["⚪ KEEP: Nagios<br/>Network Monitoring"]
INFORM["⚪ KEEP: Informatica ETL<br/>Data Warehouse / Tableau"]
end
subgraph RETIRING["Retiring Systems"]
SUBHUB["🔴 RETIRE: SubscriberHub<br/>Legacy CRM — 15 yr old"]
PORTAL["🔴 RETIRE: MyConnectAll Portal<br/>Angular — contractor-built"]
end
AMDOCS <-->|"SOAP/XML batch nightly + flat file daily"| API
SNOW -.->|"REST on-demand CDR query"| API
GENESYS -->|"CTI real-time screen pop"| API
NAGIOS -->|"REST event-driven outage alerts"| API
INFORM -->|"Batch ETL — replaced by Data Cloud"| DCLOUD
API <-->|"REST + Platform Events"| SF
DCLOUD -->|"Calculated Insights — churn scores"| SC
SUBHUB -.->|"Data migration → Salesforce"| API
PORTAL -.->|"Replaced by Experience Cloud"| EC
Examiner Focus
The single most important decision is what data lives on-platform vs. off-platform. Putting 108M billing records or billions of CDRs into Salesforce is a critical failure.
Data Model / ERD
erDiagram
ACCOUNT ||--o{ SERVICE_ACCOUNT : "has service locations"
ACCOUNT ||--o{ CONTACT : "has contacts"
ACCOUNT ||--o{ CASE : "has cases"
ACCOUNT ||--o{ ORDER : "has orders"
SERVICE_ACCOUNT ||--o{ SUBSCRIPTION : "has subscriptions"
SERVICE_ACCOUNT ||--o{ ASSET : "has equipment"
SUBSCRIPTION ||--o{ PRICING_TERM : "has pricing"
ORDER ||--o{ ORDER_ITEM : "contains items"
ORDER_ITEM }o--|| EPC_PRODUCT : "references product"
EPC_PRODUCT ||--o{ EPC_PRODUCT : "bundle components"
EPC_PRODUCT ||--o{ PRICING_TERM : "has pricing rules"
CASE ||--o{ WORK_ORDER : "triggers dispatch"
CASE }o--o| OUTAGE_INCIDENT : "associated outage"
WORK_ORDER }o--|| SERVICE_ACCOUNT : "at service address"
ACCOUNT {
string OWD_Private "OWD: Private"
string Volume_1_92M "[LDV] LDV: 1.92M records"
string Type "Residential or Business"
string Acq_Source "Acquisition origin (3 sources)"
string Golden_Record_ID "Amdocs-matched master ID"
}
CONTACT {
string OWD_Controlled "OWD: Controlled by Parent"
string Volume_3M "3M (multi-contact business)"
string CPNI_Flag "CPNI consent status"
}
SERVICE_ACCOUNT {
string OWD_Private "OWD: Private"
string Volume_4M "4M (multi-address subscribers)"
string Service_Address "Validated address"
string BU_Line "Broadband / TV / Phone / Mobile"
}
SUBSCRIPTION {
string OWD_Private "OWD: Private"
string Volume_6M "[LDV] LDV: ~6M active + historical"
string Status "Active / Suspended / Cancelled"
string Promo_Expiry "Step-up pricing milestone"
}
EPC_PRODUCT {
string OWD_Public_RO "OWD: Public Read Only"
string Volume_2500 "2,500 products/bundles"
string Eligibility "Geographic + contract rules"
string Bundle_Type "Standalone / Bundle / Add-on"
}
PRICING_TERM {
string OWD_Controlled "OWD: Controlled by Parent"
string Volume_15K "15K pricing rules"
string Step_Up "Step-up schedule tracking"
}
CASE {
string OWD_Private "OWD: Private"
string Volume_Rolling_2yr "Rolling 2 years on-platform"
string Channel "Phone / Store / Web / Chat"
string Escalation "4hr / 24hr / 72hr SLA"
}
OUTAGE_INCIDENT {
string OWD_Public_RO "OWD: Public Read Only"
string Volume_Low "500/year"
string Affected_Count "Subscriber count in zone"
string Nagios_Ref "Correlated Nagios event ID"
}
WORK_ORDER {
string OWD_Private "OWD: Private"
string Volume_Moderate "200K/year"
string SFS_Status "Dispatched / In Progress / Complete"
}
ORDER {
string OWD_Private "OWD: Private"
string Volume_High "[LDV] LDV: ~3M/year (new + changes)"
string Amdocs_Order_ID "Provisioning reference"
}
ORDER_ITEM {
string OWD_Controlled "OWD: Controlled by Parent"
string Volume_High "9M/year"
}
ASSET {
string OWD_Private "OWD: Private"
string Volume_5M "5M (modems, STBs, handsets)"
string Serial "Equipment serial number"
}
LDV Strategy:
| Object | Volume | LDV Concern | Strategy |
|---|---|---|---|
| Account | 1.92M | Moderate — near comfort threshold | Skinny tables on key agent-query fields; selective indexes on Name, Account Number, Service Address |
| Subscription | ~6M | High | Skinny table for active subscriptions; archive cancelled > 2 years to Big Object Subscription_History__b |
| Order / Order Item | ~3M / ~9M per year | High | Archive completed orders > 1 year; selective indexes on Account + Status + Date |
| CDR (Snowflake) | 2.8M/day / ~7B+ total | Critical — OFF-PLATFORM | Snowflake stores all raw CDRs. Data Cloud ingests daily summaries only. MuleSoft REST API for on-demand agent access. |
| Billing History (Amdocs) | 108M transactions | Critical — OFF-PLATFORM | Stays in Amdocs. On-demand access via MuleSoft. Rolling 12-month summary synced to Salesforce for agent visibility. |
| Interaction History | ~45M events (7-year) | High | Rolling 2 years on-platform; older records archived to Big Object Interaction_Archive__b with on-demand retrieval |
Role Hierarchy and Access Model
graph TB
CEO["CEO / CTO<br/>Full org visibility"]
CEO --> CREV["Chief Revenue Officer<br/>All residential + business"]
CEO --> VPOPS["VP Operations<br/>All cases, tickets, outages"]
CEO --> VPPRODUCT["VP Product<br/>Catalog admin + analytics"]
CREV --> RSM["Regional Sales Managers<br/>Territory-based accounts"]
RSM --> BAM["Business Account Managers<br/>Assigned portfolio only"]
RSM --> RETAIL_MGR["Retail Store Managers<br/>Geographic area"]
RETAIL_MGR --> RETAIL["Retail Associates<br/>Store territory only"]
VPOPS --> CC_MGR["Call Center Managers<br/>All agents in center"]
CC_MGR --> AGENTS["Call Center Agents<br/>All customers — no billing breakdowns"]
VPOPS --> FIELD_MGR["Field Ops Managers<br/>All technicians"]
FIELD_MGR --> FIELD["Field Technicians<br/>Assigned jobs only — no billing"]
VPPRODUCT --> CATALOG_ADMIN["Product Catalog Admins<br/>EPC management + approval workflow"]
OWD Summary:
| Object | OWD | Rationale |
|---|---|---|
| Account | Private | Business account managers see only assigned portfolio; retail by territory; CPNI compliance requires explicit access |
| Contact | Controlled by Parent | Follows Account sharing; CPNI consent tracked per contact |
| Case | Private | Agents see all via permission set; technicians see only assigned via sharing rules |
| Subscription | Private | Tied to Account sharing; step-up pricing and retention data sensitive |
| Order | Private | Follows Account sharing; Amdocs provisioning references protected |
| EPC Product (Catalog) | Public Read Only | All users browse catalog; only Product Catalog Admins can edit via permission set + approval workflow |
| Outage Incident | Public Read Only | All agents need outage context for customer calls; no sensitive data |
| Work Order | Private | Field technicians see assigned only; managers see all via role hierarchy |
| Asset | Private | Follows Service Account sharing; equipment serial numbers protected |
Integration Architecture
flowchart LR
subgraph Sources["Source Systems"]
AMDOCS["⚪ KEEP: Amdocs BSS/OSS"]
SNOW["🟢 NEW: Snowflake"]
GENESYS["⚪ KEEP: Genesys IVR"]
NAGIOS["⚪ KEEP: Nagios"]
SUBHUB["🔴 RETIRE: SubscriberHub"]
end
subgraph MULE["🟠 MuleSoft Anypoint"]
GW["API Gateway"]
ESB["ESB / Orchestration"]
CACHE["Object Store Cache"]
DLQ["Anypoint MQ DLQ"]
end
subgraph SF["🟢 Salesforce"]
CORE["Service Cloud"]
CPQ["Industries CPQ"]
DC["Data Cloud"]
SFS_I["Field Service"]
EC_I["Experience Cloud"]
end
AMDOCS -->|"SOAP/XML + Flat File<br/>OAuth 2.0 client credentials<br/>Batch nightly — billing: ~$270M/mo<br/>Batch nightly — catalog: 2,500 products"| GW
AMDOCS -->|"SOAP API<br/>OAuth 2.0<br/>Near-real-time — order provisioning"| GW
SNOW -->|"REST API<br/>OAuth 2.0 + Snowflake key-pair<br/>On-demand — CDR query < 3s SLA"| GW
GENESYS -->|"CTI Connector<br/>OAuth 2.0<br/>Real-time — 180K calls/mo screen pop"| GW
NAGIOS -->|"REST webhook<br/>API key<br/>Event-driven — outage alerts"| GW
SUBHUB -->|"JDBC / SQL extract<br/>Service account<br/>One-time migration — 1.92M subscribers"| GW
GW --> ESB
ESB --> CACHE
ESB --> DLQ
ESB -->|"REST API<br/>Connected App OAuth 2.0<br/>Batch + near-real-time"| CORE
ESB -->|"REST API<br/>Connected App OAuth 2.0<br/>Batch nightly catalog sync"| CPQ
ESB -->|"Ingestion API<br/>Connected App OAuth 2.0<br/>Batch daily usage summaries"| DC
ESB -->|"REST API<br/>Connected App OAuth 2.0<br/>Real-time dispatch updates"| SFS_I
ESB -->|"REST API<br/>Connected App OAuth 2.0<br/>Real-time portal data"| EC_I
Migration Strategy
flowchart TB
subgraph P1["Phase 1: Pre-Migration (Months 1-3)"]
ASSESS["Data Assessment<br/>Profile 4 legacy models<br/>Identify duplicates + conflicts"]
CLEAN["Informatica Cleansing<br/>Normalize 3 acquisition datasets<br/>Standardize account numbers,<br/>product codes, addresses"]
GOLDEN["Golden Record Strategy<br/>Amdocs billing = authoritative source<br/>Conflict resolution rules defined"]
end
subgraph P2["Phase 2: Foundation Migration (Months 4-6)"]
CATALOG["Product Catalog<br/>Map 2,500 Amdocs products → EPC<br/>Validate bundle relationships<br/>+ pricing rules"]
ACCOUNTS["Account Migration<br/>1.92M subscribers via MuleSoft<br/>Automated reconciliation<br/>vs. Amdocs billing records"]
SUBS["Subscription Migration<br/>~6M subscriptions<br/>Service history + equipment"]
end
subgraph P3["Phase 3: Historical Data (Months 7-9)"]
CASES["Case History<br/>Rolling 2 years on-platform<br/>Older → Big Object archive"]
INTERACT["Interaction History<br/>45M events — 2 years on-platform<br/>5+ years → Interaction_Archive__b"]
BILLING["Billing History<br/>108M stays in Amdocs<br/>12-month summary synced to SF"]
end
subgraph P4["Phase 4: Validation + Cutover (Months 10-12)"]
RECON["Automated Reconciliation<br/>Count + balance validation<br/>Amdocs vs. Salesforce"]
PARALLEL["Parallel Run<br/>Both systems active 4 weeks<br/>CSRs validate in production"]
CUT["Cutover<br/>SubscriberHub decommission<br/>MyConnectAll redirect to EC<br/>DB connections severed"]
end
ASSESS --> CLEAN --> GOLDEN
GOLDEN --> CATALOG --> ACCOUNTS --> SUBS
SUBS --> CASES --> INTERACT --> BILLING
BILLING --> RECON --> PARALLEL --> CUT
CI/CD Pipeline and Environment Strategy
graph LR
subgraph Dev["Developer Environments"]
D1[Platform Team — 2 SB]
D2[Integration Team — 2 SB]
D3[Product Team — 2 SB]
end
subgraph Shared["Shared Environments"]
QA[Integration Test<br/>Partial Copy]
UAT[UAT — Full Copy]
STG[Staging — Full Copy]
PROD[Production]
end
D1 & D2 & D3 -->|PR + CI| QA
QA -->|test gate| UAT
UAT -->|sign-off| STG -->|approval| PROD
Environment Count
10 total: 6 developer sandboxes (2 per team for rotation), 1 integration test, 1 UAT, 1 staging, 1 production. Minimum viable for 25 developers across 3 teams.
Identity & SSO Flow
sequenceDiagram
participant User as Internal User<br/>(Call Center / Store)
participant Browser as Browser
participant Okta as Okta<br/>(Corporate IdP)
participant SF as Salesforce
User->>Browser: Navigate to Salesforce
Browser->>Okta: Redirect (SP-initiated SSO)
Okta->>Okta: Authenticate (MFA — Okta Verify push)
Okta->>Browser: SAML 2.0 Assertion
Browser->>SF: POST SAML to ACS URL
SF->>SF: Match Federation ID → User record
SF->>Browser: Session Cookie + Agent Workspace
sequenceDiagram
participant Sub as Subscriber<br/>(1.92M residential + business)
participant Browser as Browser / Mobile App
participant SF as Salesforce<br/>(Experience Cloud)
Sub->>Browser: Navigate to MyConnectAll
Browser->>SF: Login page
SF->>SF: Email/Password + MFA (SMS OTP)
SF->>Browser: Session Cookie + Customer Dashboard
sequenceDiagram
participant Tech as Field Technician<br/>(1,200)
participant App as SFS Mobile App
participant Okta as Okta<br/>(Corporate IdP)
participant SF as Salesforce
Tech->>App: Launch Field Service app
App->>Okta: OAuth 2.0 + PKCE
Okta->>Okta: Biometric / MFA
Okta->>App: Access Token + Refresh Token
App->>SF: API calls with Bearer token
SF->>App: Work order data + offline cache
Internal users (650 call center + 85 stores + HQ staff): SAML 2.0 SP-initiated SSO with Okta. Telecom environments typically standardize on Okta for its strong Salesforce pre-integration and adaptive MFA. Okta Verify push for MFA. Retail store associates use shared kiosk login with per-user Okta credentials.
Field technicians (1,200): OAuth 2.0 with PKCE flow via Okta for the SFS mobile app. Biometric authentication (fingerprint/face) as the primary factor with Okta Verify as fallback. Refresh tokens enable offline session continuity — technicians maintain access during connectivity gaps without re-authentication.
Subscribers (1.92M): Experience Cloud native login for the MyConnectAll portal rebuild. SMS OTP for MFA (telecom subscribers already have verified phone numbers). Business accounts support authorized user roles with the account holder controlling access. Self-registration via account number + last 4 of SSN + service ZIP for identity verification.
Integration Error Handling
| Integration | Pattern | Retry Strategy | Dead Letter Queue | Monitoring | Fallback |
|---|---|---|---|---|---|
| Amdocs Billing Sync (daily batch) | Batch flat file via MuleSoft | Full batch re-run on systemic failure; record-level retry for individual errors | Failed billing records → Billing_Sync_Error__c with account ID + error | Alert if batch not complete by 7 AM; reconciliation count mismatch > 0.1% | Previous day’s billing data displayed with “as of” timestamp; escalation to Amdocs support |
| Amdocs Catalog Sync (nightly) | Batch via MuleSoft | Full re-run on failure; delta comparison on retry | Catalog drift records → Catalog_Drift__c with product code + discrepancy detail | Nightly reconciliation report; alert if > 10 product mismatches | EPC changes frozen until sync confirmed; product managers notified |
| CDR Query (on-demand) | Sync REST via MuleSoft → Snowflake | 2 retries: 500ms, 2s backoff (3-second SLA) | N/A (stateless query) | Alert on avg latency > 2s; circuit breaker at 5s | ”Usage details temporarily unavailable” message; agent offered to email usage report when available |
| Genesys CTI (real-time) | Real-time CTI connector | 2 retries: 200ms, 1s backoff | N/A (real-time screen pop) | Alert on > 3s screen pop latency; CTI dashboard | Screen pop fails gracefully — agent manually searches account; call recording still captured |
| Nagios Outage Correlation | Event-driven via MuleSoft | 3 retries: 1s, 5s, 30s backoff | Failed outage events → Anypoint MQ DLQ | Alert on unprocessed outage events > 5 min old | Manual outage creation by network ops; suppression rules still check ticket history |
| Data Cloud Churn Scoring | Batch daily | Re-run on failure; previous day’s scores retained | Failed score calculations logged in Data Cloud | Alert if scoring pipeline not complete by 8 AM | Previous day’s churn scores used; retention team notified of stale data |
A/B Rollout Error Isolation
ConnectAll uses feature flags (Custom Metadata Types) to control A/B rollouts across 85 retail stores and 3 call centers. If an error spike is detected post-deployment via Splunk alerting (> 5x baseline error rate within 30 minutes), the feature flag is toggled off, instantly reverting affected users to the previous experience. This is faster than a full rollback and limits blast radius to the specific feature.
Requirements Addressed
- Unified customer view (< 3 seconds) — Industries Party model unifies 4 legacy data structures; MuleSoft caches hot account data (Reqs 1, 2)
- Product catalog management — Industries CPQ with EPC for 2,500 products; product managers maintain without developers (Reqs 6, 7, 8, 9)
- CDR data architecture — Snowflake for raw CDRs (7-year), Data Cloud for summaries, MuleSoft API for on-demand access (Reqs 16, 17)
- Churn reduction — Data Cloud scoring + automated retention workflows + specialized retention team routing (Req 3)
- Multi-team DevOps — Trunk-based development, CODEOWNERS governance, 10 environments, feature flags (Reqs 30, 31, 32, 33)
- Trouble ticket automation — Outage-to-ticket correlation, escalation rules, technician dispatch (Reqs 11, 12, 13)
- CPNI compliance — Logged/audited CDR access, Snowflake row-security, Salesforce FLS + Event Monitoring (Req 23)
- Self-service portal — Experience Cloud replacing MyConnectAll; payments, outage reporting, usage (Req 25)
- Zero-disruption deployments — Sunday 2-6 AM windows, feature flags, 30-minute rollback capability (Req 34)
Governance & DevOps
flowchart LR
PLT[Platform Team<br/>Dev Sandbox x2] --> INT[Integration Test<br/>Partial Copy]
INTG[Integration Team<br/>Dev Sandbox x2] --> INT
PROD_T[Product Team<br/>Dev Sandbox x2] --> INT
INT --> UAT[UAT — Full Copy<br/>1.92M Subscribers]
UAT --> STG[Staging — Full Copy<br/>Pre-Production]
STG --> PROD[Production]
HF[Hotfix] -.-> STG
Branching Strategy
Trunk-based development with short-lived feature branches and feature flags. This directly addresses the root cause of ConnectAll’s deployment conflicts — long-lived branches with late-stage merge pain.
main— single source of truth. Always deployable. Protected branch requiring 2 approvals.feature/*— max 2-3 day branches. Each team works on small, mergeable increments.- Feature flags via Custom Metadata Types gate incomplete features in production. The 47 promotional offers/year are configured as CMDT records, not code deployments.
- CODEOWNERS file defines team boundaries: Platform team owns core objects and sharing; Integration team owns MuleSoft flows and Apex callouts; Product team owns EPC catalog and OmniStudio.
- Cross-team PR reviews mandatory for shared objects (Account, Case, custom platform objects).
- Weekly production releases (Sunday 2-6 AM window). Hotfix path: direct to staging with 2 senior approvals.
Sandbox Strategy
| Sandbox Type | Count | Purpose |
|---|---|---|
| Developer | 6 | 2 per team (Platform, Integration, Product) for individual development with rotation. |
| Partial Copy | 1 | Integration test environment with Amdocs test instance, Genesys test, and Snowflake dev warehouse connections. |
| Full Copy | 2 | 1 for UAT with full 1.92M subscriber dataset for performance validation; 1 for staging (pre-production validation). |
Testing Strategy
High-volume performance testing is critical given 1.92M subscribers, 2.8M daily CDRs, and 85K concurrent portal sessions.
- Apex unit tests: >80% coverage. Amdocs callout mocks with realistic SOAP/XML and flat file payloads. Industries CPQ configuration tests validating bundle pricing, step-up schedules, and geographic eligibility.
- Integration testing: End-to-end Amdocs billing sync with record count reconciliation. CDR query latency validation (< 3 seconds for single customer 30-day lookup). Genesys CTI screen pop latency (< 3 seconds). Catalog sync drift detection.
- Performance testing: Load test simulating 85K concurrent portal sessions. Agent workspace page load under 3 seconds with full subscriber data. Industries CPQ order processing throughput for peak promotional periods.
- A/B rollout testing: Feature flag toggle validation — confirm feature activates/deactivates cleanly per store/call center group. Error rate monitoring integration with Splunk.
- UAT: 3-week cycle with call center supervisors, retail store managers, product managers, and network ops. Each team validates their domain workflows. Business accounts tested with multi-service bundles and authorized user access.
- Regression: Automated test suite covering order flow (new service, upgrade, disconnect, transfer), trouble ticket lifecycle, and portal bill payment. Run on every merge to
main. - CPNI compliance testing: Verify CDR access logging captures every query. Confirm FLS prevents unauthorized CDR visibility. Audit trail report generation for FCC/PUC submissions.
CoE / Governance
Chief Transformation Officer sponsors the program with a dedicated Platform Owner in Charlotte.
- Post-go-live ownership: Transition from 25-person SI team to internal CoE of 8 (3 developers, 2 admins, 2 integration specialists, 1 architect). SI retains 4 developers for 6 months post-go-live knowledge transfer.
- Change management: CODEOWNERS enforces team boundaries. All metadata changes require PR with automated CI validation. Cross-team changes (touching shared objects) require architecture review.
- Conflict detection: Automated pre-merge conflict scanning in CI pipeline. Metadata-level diff analysis flags overlapping changes before they reach integration test. This directly addresses the billing outage root cause.
- Release cadence: Weekly production releases (Sunday 2-6 AM). 30-minute rollback capability via Copado/Gearset rollback snapshots. Feature flags enable instant disable without rollback. Hotfix path available for critical issues.
- Amdocs coordination: Joint release calendar with Amdocs BSS team. Catalog changes follow Amdocs-first workflow: product managers configure in Amdocs, nightly sync propagates to EPC, validation confirms alignment before activation.
Risk Assessment
| Risk | Likelihood | Impact | Mitigation |
|---|---|---|---|
| Amdocs catalog sync drift — EPC diverges over time | High | High | Nightly MuleSoft reconciliation with discrepancy alerting; EPC changes require Amdocs-first approval |
| CDR query latency exceeds 3-second SLA | Medium | High | Snowflake query caching; pre-compute last 90 days by subscriber; MuleSoft response caching; graceful timeout fallback |
| Data migration quality — 4 legacy models with acquisition inconsistencies | High | Critical | 3-month Informatica cleansing phase; Amdocs as golden source; automated validation scripts comparing counts |
| Multi-team metadata conflicts | Medium | Medium | CODEOWNERS enforcement; automated PR conflict detection; weekly cross-team sync; shared component registry |
Domain Scoring Notes
D3 Data (HEAVY): Clear on-platform vs. off-platform strategy with volume numbers. Data ownership: Amdocs = billing master, Salesforce = CRM master, Snowflake = analytical/archival. Migration strategy for 4 legacy models and 3 acquisition normalizations. LDV handling: skinny tables, selective indexes, archival. CPNI compliance embedded in data access model.
D4 Solution Architecture (HEAVY): Industries CPQ is the correct answer — custom build is a critical failure. Product modeling depth: EPC specs, offerings, bundles, pricing terms, eligibility, step-up schedules. Churn signals flow from Data Cloud scoring to agent routing. Self-service portal: Experience Cloud for MyConnectAll rebuild.
D6 Dev Lifecycle (HEAVY): Trunk-based with clear rationale tied to 3-team structure. Environment strategy with enough sandboxes (judges will count). CODEOWNERS-style governance. Zero-disruption deployment for retail/call centers. 30-minute rollback target. Feature-flag-gated deployments during low-traffic windows (Sunday 2-6 AM) with Copado/Gearset rollback snapshots; feature flags hide incomplete work and enable instant rollback without redeployment.
Unified Customer Model
Industries Party model: Individual object for residential contacts, Account for business entities. Service Accounts linked via Account hierarchy, one per service line. Subscription Management objects track active/historical subscriptions per service address. Migration uses a golden record strategy with Amdocs billing data as authoritative for address and service details. Acquisition data normalization handled in pre-migration ETL (Informatica) that standardizes account numbers, product codes, and addresses before loading.
What Would Fail
Critical Failures
-
Storing CDRs in Salesforce — 2.8M/day is explicitly designed to test platform limits knowledge. CDRs stay external with on-demand access.
-
Building a custom product catalog — ignoring Industries CPQ for 2,500 products with bundles, step-up pricing, and geographic eligibility. Judges see this as not knowing the platform.
-
No environment strategy — mentioning “sandboxes” without specifying count, type, and how 25 developers across 3 teams share them.
-
GitFlow for 3 distributed teams — long-lived branches with big-bang merges repeat ConnectAll’s exact current problem.
-
Ignoring CPNI — treating CDR access as standard FLS. CPNI is a federal regulatory requirement with audit obligations requiring explicit access logging and compliance controls.
Scoring Rubric
| Criterion | Weight | What Judges Look For |
|---|---|---|
| Data Architecture & LDV | 30% | CDR data kept external (Snowflake, not Salesforce). Industries Party model for subscriber data. Product catalog using Industries CPQ (not custom-built). Archival strategy for 1.92M subscribers. Data normalization across 3 acquired companies. Volume-aware design for 2.8M daily CDRs |
| Solution Architecture | 25% | Communications Cloud and Industries CPQ justified over custom build. Product catalog modeling for 2,500 products with bundles, step-up pricing, and geographic eligibility. Amdocs BSS/OSS coexistence strategy with clear system-of-record boundaries |
| Dev Lifecycle & Governance | 20% | Environment strategy sized for 25 developers across 3 teams. Branching strategy that avoids big-bang merges. Multi-team conflict resolution. Sandbox count, type, and allocation plan. Automated testing approach |
| Integration & Error Handling | 15% | Amdocs integration patterns (billing sync, provisioning). Portal payment processing ($48M/month security). Error handling and retry strategies per endpoint. CPNI compliance controls with audit logging |
| Communication Clarity | 10% | Clean diagrams showing Salesforce as engagement layer with Amdocs as billing SoR. Logical flow of decisions. Confident defense of external CDR storage |
This is a personal study site for Salesforce CTA exam preparation. Built with AI assistance. Not affiliated with Salesforce.