Context (the problem before Azure):
Atlantic Water (confidential) is one of the largest water supply providers, serving millions of households. They faced three critical problems in their IT systems:
Sensor Data Overload 🚨
Thousands of IoT sensors (water flow, pressure, contamination detectors) sent continuous data.
Old system used APIs + databases, which couldn’t handle real-time ingestion.
Result → Delays in detecting pipe bursts or contamination.
Scattered Event Notifications 📢
When a major incident occurred (e.g., pipe burst), multiple teams (maintenance, customer support, billing, emergency services) needed to be alerted.
The old system used custom APIs + polling, which was unreliable and duplicated effort.
Business Workflows Not Reliable 💸
✅ The Solution: Event-Driven Architecture with Azure
We (MCN Solutions) redesigned the architecture using Azure Event Grid, Event Hub, and Service Bus.
1️⃣ Event Hub – Real-Time Sensor Monitoring
All IoT devices were connected to Azure Event Hub.
Example: 10,000 sensors send pressure & water quality readings per second.
An Azure Function with EventHubTrigger reads and analyzes data in real time.
👉 Benefit: No more bottleneck. If pressure > 100 PSI, the function flags it instantly.
Problem
"Earlier, our team couldn’t process high-frequency IoT data. By using Event Hub + Azure Functions, we now process millions of events per minute in real-time."
2️⃣ Event Grid – System-Wide Notifications
When a pipe burst or contamination is detected, the Function publishes an event to Event Grid.
Event Grid fans out notifications to:
Emergency Service (dispatches field crew).
Customer Notification Service (sends SMS/email).
Billing Service (applies credits/refunds).
👉 Benefit: Every stakeholder is notified instantly, with no polling or tight coupling.
Now:
"We used Event Grid as a lightweight pub/sub backbone. A single contamination event now reaches emergency teams, customer service, and billing — all within seconds."
3️⃣ Service Bus – Reliable Business Workflows
Customer reminders, outage refunds, and tickets go into Service Bus queues.
Another Azure Function with ServiceBusTrigger processes them one by one (in order).
Dead-letter queue ensures failed messages (e.g., unreachable customer) are not lost.
👉 Benefit: Billing and reminders are now guaranteed, ordered, and reliable.
Situation:
"For critical workflows like billing reminders, we relied on Service Bus. Unlike Event Grid, it guarantees delivery, retries, and preserves ordering."
🔥 End-to-End Flow
“Let’s take a real incident: A contamination was detected in Zone-23.”
Sensor → Event Hub: IoT device streams ‘contamination detected’.
Function → Event Grid: Function processes it and raises an Event Grid event.
Event Grid fan-out:
Emergency Service dispatched.
Customer Notification Service sends alerts.
Billing Service applies refund credits.
Service Bus Queue: Customer reminders & refund confirmations are queued, processed, and retried if needed.
👉 Result: From detection to customer notification — under 5 seconds.