Telecom Churn Prediction & Network Quality Analytics¶
Use Case Overview¶
| Attribute | Detail |
|---|---|
| Industry | Telecommunications (Regional Wireless Carrier) |
| Scale | 3.5M subscribers, 8,000 cell sites, MVNO + postpaid + prepaid |
| Fabric SKU | F64 (P1 equivalent) |
| Estimated Cost | ~$20,000/month |
| Primary Compliance | CPNI (47 CFR 64.2001-2009), GDPR (EU roaming subscribers) |
| ROI | 1% churn reduction = ~$12M ARR retained |
Business Context¶
Regional wireless carriers face relentless competitive pressure from national operators and MVNOs. Subscriber churn averages 1.5-2.5% monthly, making retention the single largest lever for revenue protection. Meanwhile, 5G rollout demands precise capacity planning to maximise capital efficiency.
This use case deploys Microsoft Fabric to unify call detail records (CDRs), network performance telemetry, subscriber profiles, and billing data into a single analytics platform. Five interconnected workstreams deliver measurable business value:
- Churn Prediction -- propensity scoring and retention offer optimisation
- Network Quality Analytics -- dropped calls, throughput, latency by cell/sector
- Revenue Assurance -- rating accuracy, unbilled usage, fraud detection
- Customer Experience Management -- NPS drivers, journey analytics
- 5G Capacity Planning -- traffic forecasting, small cell placement
Architecture¶
High-Level Data Flow¶
+-------------------+ +------------------+ +--------------------+
| CDR / xDR Feeds |---->| Eventstream |---->| Eventhouse (KQL) |
| (voice, data, SMS)| | (real-time ingest)| | (real-time network |
+-------------------+ +------------------+ | KPIs, 15-min agg) |
+--------------------+
+-------------------+ +------------------+ |
| Subscriber CRM |---->| Lakehouse Bronze |<-----------+
| (batch daily) | | |
+-------------------+ +--------+---------+
|
+-------------------+ +--------v---------+
| Network Mgmt |---->| Lakehouse Silver |
| (PM counters, | | (enriched CDRs, |
| alarms, config) | | validated subs) |
+-------------------+ +--------+---------+
|
+--------v---------+
| Lakehouse Gold |
| - gold_churn_scores
| - gold_network_kpis
| - gold_revenue_assurance
| - gold_cust_experience
| - gold_capacity_plan
+------------------+
Medallion Tables¶
| Layer | Table | Description |
|---|---|---|
| Bronze | bronze_telecom_cdr | Raw CDR/xDR records (voice, data, SMS) |
| Bronze | bronze_telecom_subscribers | Raw subscriber profiles from CRM |
| Bronze | bronze_telecom_cell_sites | Cell site configuration and coordinates |
| Bronze | bronze_telecom_network_pm | Performance management counters (15-min) |
| Bronze | bronze_telecom_alarms | Network alarms and fault events |
| Silver | silver_telecom_usage | Enriched CDRs joined with subscriber + cell site |
| Silver | silver_telecom_subscriber_360 | Cleansed subscriber with usage aggregates |
| Silver | silver_telecom_network_quality | Validated PM counters with derived metrics |
| Gold | gold_telecom_churn | Churn propensity scores and feature vectors |
| Gold | gold_network_kpis | Network KPIs by cell, sector, hour |
| Gold | gold_revenue_assurance | Rating discrepancies and unbilled usage |
| Gold | gold_cust_experience | NPS driver analysis and journey scores |
| Gold | gold_capacity_plan | 5G traffic forecasts and cell placement recs |
Workstream 1: Churn Prediction¶
Problem Statement¶
Monthly churn of 2.1% costs the carrier ~\(100M annually in lost revenue and subscriber acquisition costs (\)350-450 per gross add). Proactive retention campaigns targeting high-propensity churners can reduce churn by 15-25% when paired with optimised offers.
Feature Engineering¶
Features are computed in the Gold layer from Silver aggregates:
| Feature | Source | Window |
|---|---|---|
usage_trend_30d | CDR daily aggregates | 30-day slope of data usage |
voice_minutes_trend | CDR voice records | 30-day slope of voice minutes |
complaint_count_90d | CRM interactions | Count of complaints in 90 days |
tenure_months | Subscriber profile | Months since activation |
contract_remaining_days | Subscriber profile | Days until contract end |
plan_changes_6m | CRM transactions | Plan changes in 6 months |
payment_late_count | Billing system | Late payments in 12 months |
avg_data_usage_gb | CDR data records | 30-day average daily data |
roaming_sessions | CDR records | International roaming count |
dropped_call_rate | Network PM | Personal dropped call ratio |
avg_download_speed | Network PM | Mean DL throughput experienced |
customer_lifetime_value | Billing | Total revenue to date |
device_age_months | CRM | Months since last device upgrade |
overage_charges | Billing | Out-of-plan usage charges |
Propensity Scoring¶
The churn model uses a gradient-boosted tree (LightGBM) trained on 12 months of historical churn labels. The model outputs a probability score (0.0 - 1.0) per subscriber, refreshed daily.
Scoring tiers: - High risk (>0.7): Immediate retention intervention -- dedicated agent call - Medium risk (0.4-0.7): Targeted offer via SMS/app push (e.g., 20% discount, data bonus) - Low risk (<0.4): Standard engagement programmes
Retention Offer Optimisation¶
A contextual bandit model selects the optimal retention offer from a portfolio:
| Offer ID | Description | Cost | Historical Save Rate |
|---|---|---|---|
| RET-01 | 20% discount for 3 months | $15/mo | 38% |
| RET-02 | Free device upgrade (mid-tier) | $200 one-time | 52% |
| RET-03 | Data plan upgrade (free 6 mo) | $10/mo | 41% |
| RET-04 | Loyalty points bonus | $25 equivalent | 22% |
| RET-05 | Free streaming bundle (12 mo) | $8/mo | 35% |
KQL Real-Time Churn Signals¶
// Detect subscribers with sudden usage drop (potential pre-churn signal)
CDR_Stream
| where EventTime > ago(7d)
| summarize DailyDataGB = sum(BytesDown + BytesUp) / 1073741824.0 by SubscriberId, bin(EventTime, 1d)
| summarize AvgRecent = avg(DailyDataGB) by SubscriberId
| join kind=inner (
CDR_Stream
| where EventTime between(ago(37d) .. ago(7d))
| summarize DailyDataGB = sum(BytesDown + BytesUp) / 1073741824.0 by SubscriberId, bin(EventTime, 1d)
| summarize AvgBaseline = avg(DailyDataGB) by SubscriberId
) on SubscriberId
| where AvgRecent < AvgBaseline * 0.5
| project SubscriberId, AvgBaseline, AvgRecent, DropPct = round((1 - AvgRecent/AvgBaseline) * 100, 1)
| order by DropPct desc
Workstream 2: Network Quality Analytics¶
Key Performance Indicators¶
| KPI | Formula | Target |
|---|---|---|
| Dropped Call Rate (DCR) | Dropped calls / Total call attempts | < 1.5% |
| Call Setup Success Rate (CSSR) | Successful setups / Total attempts | > 98.5% |
| Average Throughput (DL) | Total DL bytes / Total DL time | > 25 Mbps (4G), > 100 Mbps (5G) |
| Latency (RTT) | Average round-trip time | < 30ms (4G), < 10ms (5G) |
| RRC Setup Success Rate | Successful RRC / Total RRC attempts | > 99.0% |
| Handover Success Rate | Successful HOs / Total HO attempts | > 97.0% |
| Cell Availability | Uptime / (Uptime + Downtime) | > 99.5% |
| PRB Utilisation | Used PRBs / Total PRBs | Alert > 80% |
Cell Site Performance Analysis¶
Network PM counters arrive every 15 minutes from the RAN. The Silver layer aggregates these into hourly and daily metrics per cell/sector, while the Eventhouse provides sub-minute visibility for NOC operations.
// Top 20 worst-performing cells by dropped call rate (last 24h)
NetworkPM
| where Timestamp > ago(24h)
| summarize
TotalAttempts = sum(CallAttempts),
DroppedCalls = sum(DroppedCalls),
AvgDLThroughputMbps = avg(DLThroughputMbps),
AvgULThroughputMbps = avg(ULThroughputMbps)
by CellId, Sector
| extend DCR = round(DroppedCalls * 100.0 / TotalAttempts, 2)
| where TotalAttempts > 100
| top 20 by DCR desc
| project CellId, Sector, DCR, TotalAttempts, DroppedCalls, AvgDLThroughputMbps
Sector-Level Heat Maps¶
Gold-layer aggregates feed Power BI Direct Lake reports with geospatial heat maps. NOC analysts can drill from regional view down to individual cell-sector performance, overlaid with subscriber density and terrain data.
Workstream 3: Revenue Assurance¶
Rating Accuracy¶
CDRs are re-rated in the Silver layer against the subscriber's plan terms. Discrepancies between the switch-rated amount and the re-rated amount flag potential revenue leakage:
| Check | Description | Threshold |
|---|---|---|
| Duration mismatch | CDR duration vs billing duration | > 5 seconds |
| Data volume mismatch | CDR bytes vs rated bytes | > 1% variance |
| Zero-rated anomalies | Free usage not matching plan rules | Any unexpected |
| Cross-network rating | Interconnect charges vs contract rates | > $0.001/min |
| Roaming re-rating | Visited network charges vs retail rate | > 5% variance |
Unbilled Usage Detection¶
-- Identify CDRs with no matching billing record (potential revenue leakage)
SELECT
c.cdr_id,
c.subscriber_id,
c.call_type,
c.duration_sec,
c.start_dt,
c.rated_amount
FROM silver_telecom_usage c
LEFT JOIN billing_rated_events b
ON c.cdr_id = b.cdr_id
WHERE b.cdr_id IS NULL
AND c.start_dt >= DATEADD(day, -7, GETDATE())
AND c.duration_sec > 0
ORDER BY c.rated_amount DESC
Fraud Detection Patterns¶
| Pattern | Indicator | Action |
|---|---|---|
| SIM box fraud | High call volume from single IMEI, many IMSIs | Block IMEI, investigate |
| Subscription fraud | New subscriber, immediate high international usage | Real-time block |
| Wangiri fraud | Short-duration calls to premium-rate numbers | Pattern alerting |
| IRSF | International revenue share fraud, call forwarding chains | Interconnect monitoring |
| PBX hacking | Abnormal after-hours call volumes from business accounts | Usage cap alerting |
Workstream 4: Customer Experience Management¶
NPS Driver Analysis¶
Net Promoter Score surveys are correlated with operational data to identify causal drivers of satisfaction and detraction:
| Driver | Data Source | Impact on NPS |
|---|---|---|
| Network quality at home | CDR + cell site mapping | High (r=0.68) |
| Billing accuracy | Revenue assurance output | Medium (r=0.45) |
| Store/contact centre wait time | CRM interactions | Medium (r=0.41) |
| Data speed consistency | PM counter variability | High (r=0.62) |
| Plan value perception | Competitive benchmarking | Medium (r=0.39) |
| Device performance | Device diagnostics | Low (r=0.28) |
Journey Analytics¶
Customer journey stages are tracked through interaction events:
- Awareness -- Marketing campaign exposure and response
- Acquisition -- Store visit, online signup, activation
- Onboarding -- First 30 days usage patterns, setup calls
- Usage -- Steady-state consumption, plan utilisation
- Service -- Support interactions, complaints, escalations
- Renewal -- Contract renewal decision, upgrade, churn
Each stage has associated health metrics that feed the churn model.
Workstream 5: 5G Capacity Planning¶
Traffic Forecasting¶
Time-series forecasting (Prophet/ARIMA) on per-cell traffic volumes predicts when cells will reach capacity thresholds. The model accounts for:
- Seasonal patterns (time of day, day of week, holidays)
- Growth trends (subscriber additions, data usage growth)
- Event-driven spikes (concerts, sports, emergencies)
- Technology migration (4G to 5G traffic shift)
Small Cell Placement Optimisation¶
Gold-layer analysis combines:
- Traffic density maps (from CDR geolocation)
- Coverage gap analysis (from drive test data)
- Building footprints and zoning data
- Fibre availability for backhaul
- Revenue density (ARPU by location)
Output is a prioritised list of candidate small cell locations with projected ROI.
Capacity KPIs¶
| Metric | Formula | Planning Trigger |
|---|---|---|
| PRB utilisation | Used PRBs / Available PRBs | > 70% sustained |
| User throughput ratio | Achieved / Advertised speed | < 50% at busy hour |
| Connection density | Active users / Cell capacity | > 80% of design limit |
| Traffic growth rate | Month-over-month volume change | > 15% monthly |
| Spectral efficiency | Throughput / Bandwidth | Below technology floor |
CPNI Compliance¶
Regulatory Framework¶
Customer Proprietary Network Information (CPNI) is protected under 47 CFR 64.2001-2009 (FCC regulations). Carriers must safeguard subscriber data including:
- Call detail records (numbers called, call duration, time of day)
- Service configuration (plan type, features subscribed)
- Usage data (data consumption, roaming patterns)
Fabric Implementation¶
| Requirement | Implementation |
|---|---|
| Access control | Workspace-level RBAC; CPNI tables restricted to authorised roles |
| Opt-in/opt-out | subscriber.cpni_consent flag enforced in Silver queries |
| Audit logging | SQL audit logs enabled on all lakehouses; retained 5 years |
| Data minimisation | PII columns (phone number, IMSI) hashed in Silver; raw only in Bronze with restricted access |
| Breach notification | Eventhouse alert on bulk CPNI access patterns |
| Third-party sharing | CPNI fields excluded from data sharing endpoints; GraphQL resolvers enforce consent check |
| Annual certification | Automated compliance report from audit logs |
Row-Level Security for CPNI¶
-- RLS policy: restrict CDR access to subscriber's own account or authorised roles
CREATE FUNCTION dbo.fn_cpni_filter(@subscriber_id VARCHAR(50))
RETURNS TABLE
WITH SCHEMABINDING
AS
RETURN
SELECT 1 AS result
WHERE
IS_MEMBER('CPNIAuthorisedAnalysts') = 1
OR @subscriber_id = SESSION_CONTEXT(N'subscriber_id')
GDPR Considerations (EU Roaming)¶
For subscribers roaming on EU partner networks, additional GDPR requirements apply:
| Requirement | Implementation |
|---|---|
| Right to erasure | Soft-delete with 30-day purge pipeline |
| Data portability | Export API in JSON/CSV via Data Agent |
| Consent management | Granular consent flags per processing purpose |
| Data residency | EU roaming CDRs processed in EU Fabric capacity |
| DPO notification | Automated alert on cross-border data movement |
Cost Analysis¶
Fabric Consumption Breakdown¶
| Component | CU Estimate | Monthly Cost |
|---|---|---|
| Eventstream (CDR ingest ~50K events/sec) | 8 CU | $3,200 |
| Eventhouse (real-time KQL queries) | 6 CU | $2,400 |
| Lakehouse (medallion processing) | 16 CU | $6,400 |
| Spark notebooks (ML training, daily) | 8 CU | $3,200 |
| Power BI Direct Lake (50 concurrent users) | 4 CU | $1,600 |
| OneLake storage (5 TB compressed Delta) | -- | $1,200 |
| Purview governance | 2 CU | $800 |
| Total | 44 CU | ~$18,800 |
ROI Model¶
| Metric | Value |
|---|---|
| Total subscribers | 3,500,000 |
| ARPU (average) | $58/month |
| Annual revenue | $2.44B |
| Current monthly churn | 2.1% |
| Post-analytics churn | 1.8% (conservative) |
| Churn reduction | 0.3% (absolute) |
| Retained subscribers/month | 10,500 |
| Annual retained revenue | ~$12.0M |
| Fabric annual cost | ~$226K |
| Net ROI | ~53x |
Additional value from network quality improvements (reduced truck rolls, optimised CapEx), revenue assurance (plugging leakage), and improved NPS (reduced acquisition cost) is not included in this conservative estimate.
Power BI Reports¶
Dashboard Suite¶
- Churn Command Centre -- Real-time churn risk heatmap, retention campaign tracker, offer conversion rates, subscriber-level drill-through
- Network Operations -- Cell site health map, DCR/CSSR trends, PRB utilisation gauges, alarm correlation timeline
- Revenue Assurance -- Rating discrepancy waterfall, unbilled usage tracker, fraud alert queue with investigation workflow
- Customer Experience -- NPS trend by segment, journey stage health, complaint resolution SLA tracking
- Capacity Planning -- Traffic forecast charts, cell congestion predictions, CapEx planning scenarios
All reports use Direct Lake mode for sub-second query performance on the Gold layer.
References¶
| Source | URL |
|---|---|
| FCC CPNI Rules (47 CFR 64) | https://www.ecfr.gov/current/title-47/chapter-I/subchapter-B/part-64/subpart-U |
| 3GPP TS 32.298 (CDR format) | https://www.3gpp.org/specifications/32-series |
| TM Forum Revenue Assurance (GB941) | https://www.tmforum.org/resources/standard/gb941-revenue-assurance-guidebook/ |
| Microsoft Fabric Eventstream | https://learn.microsoft.com/fabric/real-time-intelligence/event-streams/overview |
| Microsoft Fabric Eventhouse | https://learn.microsoft.com/fabric/real-time-intelligence/eventhouse |
| GSMA 5G Implementation Guidelines | https://www.gsma.com/futurenetworks/technology/5g/ |
| Ofcom Quality of Service (UK ref) | https://www.ofcom.org.uk/research-and-data/telecoms-research |