Skip to main content

smpp-connector — Service Readiness

Status: populated | Last updated: 2026-04-18

Production Readiness Checklist

Functional

  • bind_transceiver establishes sessions with all assigned operators
  • Fallback to bind_transmitter + bind_receiver on ESME_RINVCMDID
  • submit_sm PDUs transmitted for GSM7 and UCS2 messages
  • Long message CSMS segmentation implemented and tested
  • Long message TLV (message_payload) implemented and tested
  • deliver_sm DLR PDUs parsed and sms.dlr.inbound published
  • MessageCorrelation records written on submit_sm_resp
  • operator.health events published on BOUND/UNBOUND/FAILBACK transitions
  • enquire_link heartbeat sends every 30 s; UNBOUND triggered on 10 s timeout
  • Exponential backoff reconnection (5 s → 60 s cap) implemented
  • Primary/backup failover triggers correctly on UNBOUND
  • TPS Redis sliding-window throttling enforced per operator
  • SMPP credentials fetched from operator-management-service (never hardcoded)

Testing

  • Unit test coverage ≥ 80%
  • Integration tests pass with mock SMPP server + Testcontainers
  • Pact contract tests pass for DlrInboundEvent consumer contract
  • Full flow test: dispatch → submit_sm → DLR → sms.dlr.inbound event verified end-to-end in staging

Security

  • SMPP passwords never logged or persisted
  • to and text fields not logged (PII protection)
  • NATS NKey credentials mounted via Kubernetes Secret
  • NetworkPolicy restricts egress to MNO IP allowlist
  • mTLS enforced on operator-management-service API calls
  • Kubernetes Secret usage verified (no hardcoded values in manifests)

Observability

  • All Prometheus metrics emitting correctly (verified in staging)
  • SmppConnectorSessionUnbound alert tested and confirmed in PagerDuty
  • Structured JSON logs visible in log aggregation
  • OpenTelemetry traces confirmed in staging tracing backend

Deployment

  • Docker image published with correct tag
  • Kubernetes Deployment with 2 replicas applied to staging
  • Rolling update tested (active SMPP sessions survive pod restart)
  • Resource limits validated under sustained 100 TPS load

Operational

  • MNO SMPP credentials loaded in Vault and operator-management-service
  • MNO production SMPP endpoint IP/port confirmed and NetworkPolicy egress rule added
  • On-call runbook written with steps for: session down, credential rotation, TPS breach
  • TTL sweep job tested for smpp.message_correlations