smpp-connector — Migration Plan
Status: populated | Last updated: 2026-04-18
Current State
smpp-connector is a greenfield service. Currently, SMPP sessions are managed by a legacy monolithic component (legacy-sms-dispatcher) that is tightly coupled to the old platform. This plan describes the path from the legacy dispatcher to the standalone smpp-connector microservice.
Phase 1: Infrastructure and Credential Migration (Week 1–2)
Goal: Set up the smpp PostgreSQL schema, onboard SMPP credentials to Vault, and validate connectivity to MNO SMPP servers from the new Kubernetes environment.
Tasks:
- Apply
smpp.message_correlationsschema migration. - Load all MNO SMPP credentials into HashiCorp Vault via
operator-management-serviceadmin API. - Configure
NetworkPolicyegress rules for each MNO's SMPP server IP:port. - Deploy
smpp-connectorin staging with a non-production MNO test endpoint. - Verify
bind_transceiversucceeds for all operators in staging. - Verify
submit_sm+deliver_smflow works end-to-end in staging.
Exit criteria: Successful bind and round-trip SMS delivery in staging for all configured operators.
Phase 2: Parallel Run (Week 3–4)
Goal: Run smpp-connector alongside legacy-sms-dispatcher in production. smpp-connector receives a shadow copy of dispatch commands but does not publish DLR events.
Tasks:
- Deploy
smpp-connectorto production with 1 replica (shadow mode). - Configure
sms-orchestratorto publish dispatch commands to both the legacy dispatcher subject ANDsmpp.operator.{operatorId}(shadow). smpp-connectorprocesses shadow messages but does not publishsms.dlr.inbound.- Compare
submit_smoutcomes between legacy andsmpp-connectorlogs. - Validate TPS throttling works correctly at production traffic volumes.
- Validate DLR correlation accuracy (do not publish yet; verify internally).
Exit criteria: smpp-connector submit success rate ≥ 99.5% matching legacy dispatcher; no TPS breaches.
Phase 3: Cutover (Week 5)
Goal: smpp-connector becomes the sole SMPP dispatcher.
Tasks:
- Disable shadow mode;
smpp-connectorpublishessms.dlr.inboundin production. - Route all
sms-orchestratordispatch commands exclusively tosmpp.operator.*subjects. - Monitor DLR receipt rates, latency, and error rates for 48 hours.
- Decommission
legacy-sms-dispatcherafter 48-hour validation window. - Scale
smpp-connectorto 2 replicas (active + hot standby).
Rollback plan: Feature flag in sms-orchestrator to revert to legacy dispatcher subject within < 5 minutes.
Exit criteria: DLR receipt rate matches pre-migration baseline ± 0.5%; zero critical alerts sustained.
Phase 4: Hardening (Week 6+)
Tasks:
- Enable full mTLS for operator-management-service communication.
- Implement per-operator
longMessageStrategyconfiguration. - Test primary/backup failover under simulated MNO outage.
- Document all MNO-specific protocol quirks in operator configuration.
- Establish quarterly SMPP credential rotation schedule in Vault.