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:
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:
Interaction Diagram: