01 - Define the Answer Space
A valid answer is not simply “ACS has been removed.” The target architecture, functional equivalence, integrations, production migration, residual dependency, and system stability all have to be proven.
System Design Case Study
Reasoning through an Azure Communication Services migration with the Correct Code Framework.
How do you change a communication subsystem inside a live distributed application while preserving its contracts, behavior, availability, observability, and downstream dependencies?
1. Start With the System Boundary
At first glance, migrating away from Azure Communication Services may look like an API replacement project. From a System Design perspective, it is much larger.
ACS is a component inside the system. The migration starts by identifying the boundary around that component and the contract the rest of the application depends on.
+--------------------+
| Client Apps |
| Web / Mobile / API |
+---------+----------+
|
v
+--------------------+
| Application Layer |
| Business Services |
+---------+----------+
|
Communication Contract
|
v
+--------------------------------+
| Azure Communication Services |
| Calls | SMS | Email | Chat |
+--------------+-----------------+
|
+------------------+------------------+
v v v
Webhooks Event System External APIs
| | |
+------------------+------------------+
v
Downstream Systems
2. Discover the Dependency Graph
The job is to trace ACS dependencies through application code, configuration, APIs, webhooks, event handlers, and downstream systems before selecting a replacement technology.
Order Service
|
+---> Notification Service
| |
| +---> ACS SMS
| |
| +---> ACS Email
|
+---> Customer Service Platform
|
+---> ACS Chat
|
+---> Status Webhook
|
+---> Event System
|
+---> Downstream Systems
The Project
Before a team can replace an API, migrate a workload, modify an integration, or schedule a production cutover, it has to ask where the existing system depends on ACS and what has to remain true when ACS is removed.
Potential ACS dependency surface.
Potential ACS dependency surface.
Potential ACS dependency surface.
Potential ACS dependency surface.
Potential ACS dependency surface.
Potential ACS dependency surface.
Potential ACS dependency surface.
Potential ACS dependency surface.
CCF Case Study
A valid answer is not simply “ACS has been removed.” The target architecture, functional equivalence, integrations, production migration, residual dependency, and system stability all have to be proven.
Identify every surface that can affect the answer: code, SDKs, APIs, configuration, webhooks, identity, eventing, downstream systems, monitoring, and infrastructure.
For every dependency, run the same migration loop: Observe, Understand, Decide, Modify, Validate.
Scanner
The first question is not what should replace ACS. The first question is where ACS is actually being used.
Inspect this surface for ACS references, contracts, credentials, callbacks, or behavior.
Inspect this surface for ACS references, contracts, credentials, callbacks, or behavior.
Inspect this surface for ACS references, contracts, credentials, callbacks, or behavior.
Inspect this surface for ACS references, contracts, credentials, callbacks, or behavior.
Inspect this surface for ACS references, contracts, credentials, callbacks, or behavior.
Inspect this surface for ACS references, contracts, credentials, callbacks, or behavior.
Inspect this surface for ACS references, contracts, credentials, callbacks, or behavior.
Inspect this surface for ACS references, contracts, credentials, callbacks, or behavior.
Recorder
Discovery without memory creates repeated investigation. The ledger turns the migration into measurable work.
| Dependency | Current ACS Capability | Location | Target | Status |
|---|---|---|---|---|
| NotificationService | SMS | C# Service | Replacement API | Discovered |
| CustomerChat | ACS Chat | Web App | Teams / Alternative | Analysis |
| CallRecording | Recording API | Worker Service | Target TBD | Blocked |
| StatusWebhook | ACS Events | API Endpoint | Event Grid | Planned |
Invariant
A migration is not successful merely because the new code compiles. The implementation can change. The invariant cannot.
Customers must still receive notifications.
Authentication must remain valid.
Existing webhook workflows must continue processing events.
Failed requests must preserve retry behavior.
Required records must continue being generated.
Monitoring must still detect failures.
Production users must not experience unacceptable service degradation.
Operation
CCF separates what exists, what must remain true, and how the team will change it.
ACS API -> Microsoft Graph API
ACS event -> Azure Event Grid
ACS SDK integration -> internal abstraction + replacement provider
ACS endpoint -> approved destination
ACS credential model -> target identity model
ACS-specific workflow -> target-platform architecture
Target-State Reasoning
Evaluate only when the required application capability points here.
Evaluate only when the required application capability points here.
Evaluate only when the required application capability points here.
Evaluate only when the required application capability points here.
Evaluate only when the required application capability points here.
Evaluate only when the required application capability points here.
Test, Dry Run, Cutover
The test is not “does the new API return HTTP 200?” The test is whether the original invariant remains true across the new architecture.
Finalizer
Target integration operating successfully
Required business workflows verified
Logs and telemetry healthy
Production acceptance completed
ACS requests approaching zero
ACS spend approaching zero
Residual usage investigated
No migration-attributable Sev1/Sev2 regressions during stabilization
Continuous Learning
When teams capture scanners, dependency classifications, replacement mappings, invariants, test strategies, rollback strategies, cutover procedures, and failure patterns, they create reusable migration intelligence.
Correct Code Talent Development
Bring us the architecture. Bring us the job description. Bring us the technical problem. We'll turn it into a reasoning model, implementation roadmap, assessment, and training program.
Technical Consulting - Talent Assessment - System Design - DevOps - Role-Specific Training