Skip to content

kambidi1973/ims-provisioning-engine

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

533 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

IMS Provisioning Engine

Build Status License Java Spring Boot

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.

Architecture

┌──────────────────────────────────────────────────────────────────┐
│                    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 │
    └─────────┘         └─────────┘         └─────────┘

Features

  • 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

Tech Stack

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)

Quick Start

# 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 --build

API Examples

Create Subscriber

curl -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"
  }'

Assign Service Profile

curl -X PUT http://localhost:8080/api/v1/subscribers/{id}/service-profile \
  -H "Content-Type: application/json" \
  -d '{"profileId": "volte-premium", "activateImmediately": true}'

Create Provisioning Order

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"}
    ]
  }'

Domain Model

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

Configuration

# 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

Contributing

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/new-feature)
  3. Commit your changes (git commit -am 'Add new feature')
  4. Push to the branch (git push origin feature/new-feature)
  5. Open a Pull Request

License

This project is licensed under the Apache License 2.0 — see the LICENSE file for details.

Author

Gopala Rao Kambidi — Senior Technology Architect with 21+ years in VoIP, IMS, and Telecom systems.

About

IMS Subscriber Provisioning Engine - 3GPP-compliant IMS subscriber lifecycle management with Diameter Cx/Sh HSS integration and Initial Filter Criteria engine

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors