rainmaker-pgr

Objective:

The objective of this service is to provide a service that enables users to file complaints and get them resolved. PGR facilitates live tracking of status of the complaint, provides features to upload images, post comments, workflow for complaint resolution and more. The system has a citizen interface and an employee interface.

 

Requirements:

  • Prior Knowledge of Java/J2EE

  • Prior Knowledge of SpringBoot

  • Prior Knowledge of REST APIs and related concepts like path parameters, headers, JSON etc

  • Prior Knowledge of Kafka and related concepts like Producer, Consumer, Topic etc.



Setup:

Step 1: Start the egov-mdms service present in the following repo:
https://github.com/egovernments/core-services/tree/master/egov-mdms-service 

Step 2: Start the egov-localisation service present in the following repo:
https://github.com/egovernments/core-services/tree/master/egov-localization 

Step 3: Start the egov-persister service present in the following repo:
https://github.com/egovernments/core-services/tree/master/egov-persister 

Step 4: Start the egov-searcher service present in the following repo:
https://github.com/egovernments/core-services/tree/master/egov-searcher

 Step 5: Start the egov-indexer service present in the following repo:
https://github.com/egovernments/core-services/tree/master/egov-indexer

 Step 6: Start the egov-location service present in the following repo:
https://github.com/egovernments/core-services/tree/master/egov-location

 Step 7: Start the egov-user service present in the following repo:
https://github.com/egovernments/core-services/tree/master/egov-user

Step 8: Start the egov-hrms service present in the following repo:
https://github.com/egovernments/business-services/tree/master/egov-hrms

Step 9: Start the egov-filestore service present in the following repo:
https://github.com/egovernments/core-services/tree/master/egov-filestore

Step 10: Start the egov-idgen service present in the following repo:
https://github.com/egovernments/core-services/tree/master/egov-idgen

Step 11: Start the egov-notification-sms service present in the following repo:
https://github.com/egovernments/core-services/tree/master/egov-notification-sms

 

Configurable Properties:

 Following are the properties in application.properties file in rainmaker-pgr service which are configurable.

Property

Value

Remarks

kafka.topics.save.service

 

 

save-pgr-service

 

This is the persister topic onto which pgr pushes records for persistence. This is for creating complaints. 

kafka.topics.update.service

 

 

update-pgr-service

 

This is the persister topic onto which pgr pushes records for persistence. This is for updating complaints.

kafka.topics.save.index.service

 

 

save-pgr-index-service

 

This is the indexer topic onto which pgr pushes records for indexing. This is for creating complaints.

kafka.topics.save.index.service

 

 

update-pgr-index-service



This is the indexer topic onto which pgr pushes records for indexing. This is for updating complaints.

kafka.topics.notification.complaint

pgr.complaint.notif

Topic to which the pg-notification consumer is subscribed. PGR pushes records to this topic in order to send out sms notifs

notification.sms.enabled

 

true

Key to enable and disable sms notifications

reassign.complaint.enabled

 

true



Key to enable notifications on re-assign.

reopen.complaint.enabled



true

Key to enable notifications on re-open.

comment.by.employee.notif.enabled



false

Key to enable notifications on comment.

notification.allowed.on.status



open,assigned,rejected,resolved,closed



List of statuses on which notification is allowed.

notification.fallback.locale



en_IN

Fallback locale incase the client doesn’t send the locale.

egov.usr.events.notification.enabled



true

Key to enable mseva notifications.

egov.usr.events.create.topic



persist-user-events-async



Topic to which PGR builds and pushes the SYSTEMGENERATED user-events.

egov.usr.events.review.link



/citizen/otpLogin?mobileNo=$mobile&redirectTo=complaint-details/$servicerequestid



Link to complaint review page.

egov.usr.events.review.code



REVIEW

Code to be displayed for the review link.

egov.usr.events.rate.link



/citizen/otpLogin?mobileNo=$mobile&redirectTo=feedback/$servicerequestid



Link to rate the complaint, accessible to the citizen.

egov.usr.events.rate.code



RATE

Code to be displayed for the rate link

egov.usr.events.reopen.link



/citizen/otpLogin?mobileNo=$mobile&redirectTo=reopen-complaint/$servicerequestid



Link to reopen the complaint, accessible to the citizen.

egov.usr.events.reopen.code



REOPEN

Code to be displayed for the reopen link

egov.pgr.app.playstore.link



https://egov-micro-dev.egovernments.org/playstore/download/pgr



UI App link of PGR/mseva to be sent in the sms.

are.inactive.complaintcategories.enabled



false

Key to control creation of complaints belonging to inactive complaint categories

is.update.on.inactive.categories.enabled



true

Key to control updates on complaints belonging to inactive category

egov.default.expiry.time.before.reopen.in.hours



120

No of hours after which a resolved complaint moves to closed state by default. Citizens will not be able to reopen such a complaint.







 

Entities:

Service: Model to capture the complaint information. This includes info like complaint category, complaint description, address etc.

ActionInfo: This captures the actions taken on a complaint. Actions like open, assign, reassign, reject, post a comment etc are recorded using this model.

Address: Model to capture address details on the complaint. Includes details of lat, long, locality, ulb etc. This is essentially the location of the grievance.

Citizen: When a complaint is filed by CSR, the details of the citizen on behalf of which this complaint is filed has to be recorded. This model captures that information.

Source: Source of complaint which can be MobileApp, WebApp, IVR etc.

Status: Status of the complaint. It can either be ACTIVE, INACTIVE or CANCELLED.

 

How does it work?:

PGR (Public Grievance Redressal) -

PGR is the Public Grievance Redressal system on the DIGIT platform that exposes APIs to create, fetch and manage complaints filed by the citizen or CSR on behalf of the citizen. This application also provides a assignment-resolution workflow with defined SLAs. Actors involved in PGR are GRO (Grievance Routing officer who assigns complaints to the LME), DGRO (GRO at the Department level), LME (Last Mile Employee who resolves the complaint), CSR (Citizen Service Representative who can file and act on complaints on behalf of the citizen.), CITIZEN (who files complaints.) 

 

Current State

Possible Actions

Open

Assign, Reject

Assigned

Resolve, Request For Reassign

Resolved

Reopen, Close

Closed

No actions hereafter.

 

Actions

Who can perform these?

Open

Citizen, CSR

Assign

GRO, DGRO

Request For Reassign

LME

Resolve

LME

Reject

GRO, DGRO

Reopen

Citizen, CSR

Close

Citizen, CSR

APIs:

Create - API to create complaints

Update - API to update complaints

Search - API to search complaints based on different criteria

Count - API to fetch count of complaints 

 

API Contract:

https://raw.githubusercontent.com/egovernments/egov-services/master/docs/rainmaker-pgr/contracts/Pgr-V.3.0.yml


Postman Collection:

PGR - https://www.getpostman.com/collections/fe735d32265b595074df

HRMS - https://www.getpostman.com/collections/7205a669dbd888affe8b

 

Confgs:

MDMS Data:

ServiceDefs - Complaint Categories

Location - Boundary data of the state or the tenant we're going live in.

Department - Department Data

Designation - Designation Data

Link - https://github.com/egovernments/egov-mdms-data/tree/master/data/pb/RAINMAKER-PGR

 

Roleaction Configs:

PGR:

CITIZEN - create, update, search

EMPLOYEE - create, update, search

GRO - create, update, search, report/_get

DGRO - create, update, search, report/_get

PGR_ADMIN - report/_get

CSR - create, update, search

 

External services:

CITIZEN - egov-mdms-service/v1/_search, egov-hrms/employees/_search, egov-location/location/v11/tenant/_search

EMPLOYEE - egov-mdms-service/v1/_search, egov-hrms/employees/_search, user/_search

GRO - egov-mdms-service/v1/_search, egov-hrms/employees/_search, user/_search

CSR - egov-mdms-service/v1/_search, egov-hrms/employees/_search, user/_search, user/users/_createnovalidate, egov-location/location/v11/tenant/_search

 

Dependent Services:

egov-user - To create or validate users based on the flow.
egov-mdms-service - To validate master data that are part of the pgr transactions.
egov-idgen - To generate PGR complaint id also known as Service Request Number.
egov-hrms - To validate assignments, actions and other workflow related aspects in PGR.
egov-persister - To persist the complaint data.
egov-indexer - To index the complaint data onto elasticsearch.
egov-searcher - To search complaints.

 

Core Service:

Persister: https://raw.githubusercontent.com/egovernments/configs/master/egov-persister/pgr.v3.yml?token=AE4Z2KFXCCEVVRFY2UCUESK57HZUG

Indexer: https://raw.githubusercontent.com/egovernments/configs/master/egov-indexer/rainmaker-pgr-indexer.yml?token=AE4Z2KFJ6NFYIOF6IM32OPC57HYZI

Searcher: https://raw.githubusercontent.com/egovernments/configs/master/egov-searcher/rainmaker-pgr-v2.yml?token=AE4Z2KCSYKUWCCDIH2JIVZK57HY2W

 

Interaction Diagram: