A production-grade IMS (IP Multimedia Subsystem) subscriber provisioning engine built with Java/Spring Boot. Manages the complete lifecycle of IMS subscriber profiles, service configurations, and Initial Filter Criteria (iFC) in compliance with 3GPP TS 23.228 and TS 29.228 specifications.
┌──────────────────────────────────────────────────────────────────┐
│ IMS Provisioning Engine │
│ │
│ ┌─────────────┐ ┌──────────────┐ ┌─────────────────────────┐ │
│ │ REST API │ │ Order Mgmt │ │ Provisioning Workflow │ │
│ │ Controller │──│ Service │──│ (Saga Orchestrator) │ │
│ └─────────────┘ └──────────────┘ └────────┬────────────────┘ │
│ │ │
│ ┌─────────────┐ ┌──────────────┐ ┌────────▼────────────────┐ │
│ │ Subscriber │ │ Service │ │ HSS Integration │ │
│ │ Repository │──│ Profile │──│ (Diameter Cx/Sh) │ │
│ └─────────────┘ │ Resolver │ └─────────────────────────┘ │
│ └──────────────┘ │
│ ┌─────────────────────────────────────────────────────────────┐ │
│ │ Domain Models │ │
│ │ Subscriber │ ServiceProfile │ iFC │ TriggerPoint │ IMPU │ │
│ └─────────────────────────────────────────────────────────────┘ │
└──────────────────────────────────────────────────────────────────┘
│ │ │
┌────▼────┐ ┌────▼────┐ ┌────▼────┐
│ MySQL │ │ Redis │ │ Kafka │
│ DB │ │ Cache │ │ Events │
└─────────┘ └─────────┘ └─────────┘
- 3GPP-Compliant Subscriber Management — Full CRUD for IMS subscribers with IMPU/IMPI, implicit registration sets, and service profile assignment
- Initial Filter Criteria (iFC) Engine — Configure trigger points and Application Server routing per 3GPP TS 23.218
- HSS Integration — Diameter Cx/Sh interface client for Home Subscriber Server synchronization
- Order Management — Order lifecycle tracking with state machine (PENDING → VALIDATING → PROVISIONING → ACTIVE → COMPLETED)
- Service Profile Templates — Pre-built profiles for VoLTE, VoWiFi, RCS, and custom service configurations
- Event-Driven Architecture — Kafka-based event publishing for downstream system integration
- Profile Caching — Redis-backed caching for high-throughput subscriber lookups
- Audit Trail — Complete provisioning history with rollback support
| Component | Technology |
|---|---|
| Runtime | Java 17+ |
| Framework | Spring Boot 3.x |
| Database | MySQL 8.0 / PostgreSQL |
| Cache | Redis |
| Messaging | Apache Kafka |
| Build | Maven |
| Containerization | Docker |
| Protocol | Diameter (Cx/Sh interfaces) |
# Clone the repository
git clone https://github.com/kambidi1973/ims-provisioning-engine.git
cd ims-provisioning-engine
# Start infrastructure services
docker-compose up -d mysql redis kafka
# Build and run
mvn clean package -DskipTests
java -jar target/ims-provisioning-engine-1.0.0.jar
# Or use Docker
docker-compose up --buildcurl -X POST http://localhost:8080/api/v1/subscribers \
-H "Content-Type: application/json" \
-d '{
"impi": "user1@ims.example.com",
"impuList": ["sip:user1@ims.example.com", "tel:+14155551234"],
"serviceProfileId": "volte-standard",
"displayName": "John Doe"
}'curl -X PUT http://localhost:8080/api/v1/subscribers/{id}/service-profile \
-H "Content-Type: application/json" \
-d '{"profileId": "volte-premium", "activateImmediately": true}'curl -X POST http://localhost:8080/api/v1/orders \
-H "Content-Type: application/json" \
-d '{
"type": "ACTIVATE",
"subscriberId": "sub-001",
"items": [
{"service": "VoLTE", "action": "ENABLE"},
{"service": "VoWiFi", "action": "ENABLE"}
]
}'The engine models IMS provisioning concepts per 3GPP specifications:
- Subscriber — Core entity with IMPI (private identity) and associated IMPUs (public identities)
- ServiceProfile — Collection of iFC rules and media policies assigned to subscriber groups
- InitialFilterCriteria — Routing rules evaluated by S-CSCF to determine Application Server invocation
- TriggerPoint — Boolean conditions (SIP method, header content, SDP lines) that activate iFC rules
- ProvisioningOrder — Tracks provisioning workflow state with compensation/rollback support
# application.yml
ims:
hss:
host: hss.ims.local
port: 3868
realm: ims.example.com
protocol: diameter
provisioning:
max-concurrent-orders: 50
retry-attempts: 3
timeout-seconds: 30
cache:
subscriber-ttl: 300
profile-ttl: 600- Fork the repository
- Create a feature branch (
git checkout -b feature/new-feature) - Commit your changes (
git commit -am 'Add new feature') - Push to the branch (
git push origin feature/new-feature) - Open a Pull Request
This project is licensed under the Apache License 2.0 — see the LICENSE file for details.
Gopala Rao Kambidi — Senior Technology Architect with 21+ years in VoIP, IMS, and Telecom systems.