Skip to main content

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:

  1. Apply smpp.message_correlations schema migration.
  2. Load all MNO SMPP credentials into HashiCorp Vault via operator-management-service admin API.
  3. Configure NetworkPolicy egress rules for each MNO's SMPP server IP:port.
  4. Deploy smpp-connector in staging with a non-production MNO test endpoint.
  5. Verify bind_transceiver succeeds for all operators in staging.
  6. Verify submit_sm + deliver_sm flow 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:

  1. Deploy smpp-connector to production with 1 replica (shadow mode).
  2. Configure sms-orchestrator to publish dispatch commands to both the legacy dispatcher subject AND smpp.operator.{operatorId} (shadow).
  3. smpp-connector processes shadow messages but does not publish sms.dlr.inbound.
  4. Compare submit_sm outcomes between legacy and smpp-connector logs.
  5. Validate TPS throttling works correctly at production traffic volumes.
  6. 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:

  1. Disable shadow mode; smpp-connector publishes sms.dlr.inbound in production.
  2. Route all sms-orchestrator dispatch commands exclusively to smpp.operator.* subjects.
  3. Monitor DLR receipt rates, latency, and error rates for 48 hours.
  4. Decommission legacy-sms-dispatcher after 48-hour validation window.
  5. Scale smpp-connector to 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:

  1. Enable full mTLS for operator-management-service communication.
  2. Implement per-operator longMessageStrategy configuration.
  3. Test primary/backup failover under simulated MNO outage.
  4. Document all MNO-specific protocol quirks in operator configuration.
  5. Establish quarterly SMPP credential rotation schedule in Vault.