Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

...

...

...

...

...

...

...

...

...

...

...

Overview

Public Grievances & Redressal (PGR) is a system that enables citizens to raise a complaint with there ULB’s. Citizen can track the complaint, upload image related to the complaint, re-open the complaint if he/she is not satisfied and rate the service. Ifix-Adapter is a system which works as mediator between ifix and its clients. This system will receive requests from client system and convert the data in the Ifix required format This document contains the details about how to setup pgrifix-adapter service and describes the functionalities it provides

Pre-requisites.

Before you proceed with the configuration, make sure the following pre-requisites are met -

  • Java 8

  • Kafka server is up and running

  • egov-persister service is running and has pgr-services persister config path added in it

  • PSQL server is running and database is created to store complaint data

  • (Optional) Indexer config for pgr-services is added in egov-indexer yaml paths to index the generated data. Index are required for data visualisation in kibana or in DSS.

  • (Optional) Report config for pgr-services is added in Report service config paths. Required if reports are to be provided to the user.failure and success

  • Following services should be up and running:

    • egov-user

    • egov-workflow-v2

    • egov-perister

    • egov-localization

    • egov-notification-sms

    • egov-mdms

    • egov-idgen

    • egov-url-shortening

    • egov-hrms

Key Functionalities

  • Citizen can file, track and rate the complaint

  • Citizen can add image and comments related to the complaint

  • Citizen can re-open the complaint in certain given period of time after resolution

  • ULB can setup the complaint workflow according to their requirements and staff capacity

  • ULB can track the SLA for resolving each complaint and can use it as a metric to streamline the process for resolving complaints

  • Department wise assignment of the complaint to the LME

Deployment Details

  1. Deploy the latest version of pgr-services

  2. Add pgr-service-persister.yml file in config folder in git and add that path in persister . (The file path is to be added in environment yaml file in param called persist-yml-path )

  3. If any Report Config is created, the config should be added to config folder in git and that path should be added in Report service. (The file path is to be added in file called “reportFileLocationsv1.txt” in Config folder)

  4. If index are to be created add the indexer config path in indexer service. (The file path is to be added in environment yaml file in param called egov-indexer-yaml-repo-path)

Configuration Details

  1. Add master data in MDMS service with module name as RAINMAKER-PGR. Following is some sample master data for the service:

    Code Block
    {
      "tenantId": "pb",
      "moduleName": "RAINMAKER-PGR",
      "ServiceDefs": [
        {
          "serviceCode": "NoStreetlight",
          "keywords": "streetlight, light, repair, work, pole, electric, power, repair, damage, fix",
          "department": "Streetlights",
          "slaHours": 336,
          "menuPath": "StreetLights",
          "active": false,
          "order": 1
        },
        {
          "serviceCode": "StreetLightNotWorking",
          "keywords": "streetlight, light, repair, work, pole, electric, power, repair, fix",
          "department": "DEPT_1",
          "slaHours": 336,
          "menuPath": "StreetLights",
          "active": true,
          "order": 2
        },
        {
          "serviceCode": "GarbageNeedsTobeCleared",
          "keywords": "garbage, collect, litter, clean, door, waste, remove, sweeper, sanitation, dump, health, debris, throw",
          "department": "DEPT_25",
          "slaHours": 336,
          "menuPath": "Garbage",
          "active": true,
          "order": 3
        }
      ]
    }
  2. Create businessService (workflow configuration) using the  /businessservice/_create. Following is the product configuration for PGR:

    Code Block
    {
      "RequestInfo": {
        "apiId": "Rainmaker",
        "action": "",
        "did": 1,
        "key": "",
        "msgId": "20170310130900|en_IN",
        "requesterId": "",
        "ts": 1513579888683,
        "ver": ".01",
        "authToken": "{{devAuth}}",
        "userInfo": {
          "id": 73,
          "userName": null,
          "name": null,
          "type": "EMPLOYEE",
          "mobileNumber": null,
          "emailId": null,
          "roles": [
            {
              "id": 2,
              "name": "Customer Support Representative",
              "code": null,
              "tenantId": null
            }
          ],
          "tenantId": null,
          "uuid": "uuid"
        }
      },
      "BusinessServices": [
        {
          "tenantId": "pb",
          "businessService": "PGR",
          "business": "pgr-services",
          "businessServiceSla": 432000000,
          "states": [
            {
              "sla": null,
              "state": null,
              "applicationStatus": null,
              "docUploadRequired": false,
              "isStartState": true,
              "isTerminateState": false,
              "isStateUpdatable": true,
              "actions": [
                {
                  "action": "APPLY",
                  "nextState": "PENDINGFORASSIGNMENT",
                  "roles": [
                    "CITIZEN",
                    "CSR"
                  ]
                }
              ]
            },
            {
              "sla": null,
              "state": "PENDINGFORASSIGNMENT",
              "applicationStatus": "PENDINGFORASSIGNMENT",
              "docUploadRequired": false,
              "isStartState": false,
              "isTerminateState": false,
              "isStateUpdatable": false,
              "actions": [
                {
                  "action": "COMMENT",
                  "nextState": "PENDINGFORASSIGNMENT",
                  "roles": [
                    "CITIZEN"
                  ]
                },
                {
                  "action": "ASSIGN",
                  "nextState": "PENDINGATLME",
                  "roles": [
                    "GRO",
                    "DGRO"
                  ]
                },
                {
                  "action": "REJECT",
                  "nextState": "REJECTED",
                  "roles": [
                    "GRO",
                    "DGRO"
                  ]
                }
              ]
            },
            {
              "sla": null,
              "state": "PENDINGFORREASSIGNMENT",
              "applicationStatus": "PENDINGFORREASSIGNMENT",
              "docUploadRequired": false,
              "isStartState": false,
              "isTerminateState": false,
              "isStateUpdatable": false,
              "actions": [
                {
                  "action": "COMMENT",
                  "nextState": "PENDINGFORREASSIGNMENT",
                  "roles": [
                    "CITIZEN"
                  ]
                },
                {
                  "action": "REASSIGN",
                  "nextState": "PENDINGATLME",
                  "roles": [
                    "GRO",
                    "DGRO"
                  ]
                },
                {
                  "action": "REJECT",
                  "nextState": "REJECTED",
                  "roles": [
                    "GRO",
                    "DGRO"
                  ]
                }
              ]
            },
    
            {
              "sla": 259200000,
              "state": "PENDINGATLME",
              "applicationStatus": "PENDINGATLME",
              "docUploadRequired": false,
              "isStartState": false,
              "isTerminateState": false,
              "isStateUpdatable": false,
              "actions": [
                {
                  "action": "COMMENT",
                  "nextState": "PENDINGATLME",
                  "roles": [
                    "CITIZEN"
                  ]
                },
                {
                  "action": "RESOLVE",
                  "nextState": "RESOLVED",
                  "roles": [
                    "PGR_LME"
                  ]
                },
                {
                  "action": "REASSIGN",
                  "nextState": "PENDINGFORREASSIGNMENT",
                  "roles": [
                    "PGR_LME"
                  ]
                }
              ]
            },
            {
              "sla": null,
              "state": "REJECTED",
              "applicationStatus": "REJECTED",
              "isStateUpdatable": false,
              "docUploadRequired": false,
              "isStartState": false,
              "isTerminateState": true,
              "actions": [
                {
                  "action": "COMMENT",
                  "nextState": "REJECTED",
                  "roles": [
                    "CITIZEN"
                  ]
                },
                {
                  "action": "REOPEN",
                  "nextState": "PENDINGFORASSIGNMENT",
                  "roles": [
                    "CFC",
                    "CSR",
                    "CITIZEN"
                  ]
                },
                {
                  "action": "RATE",
                  "nextState": "CLOSEDAFTERREJECTION",
                  "roles": [
                    "CFC",
                    "CITIZEN"
                  ]
                }
              ]
            },
            {
              "sla": null,
              "state": "RESOLVED",
              "applicationStatus": "RESOLVED",
              "isStateUpdatable": false,
              "docUploadRequired": false,
              "isStartState": false,
              "isTerminateState": true,
              "actions": [
                {
                  "action": "COMMENT",
                  "nextState": "RESOLVED",
                  "roles": [
                    "CITIZEN"
                  ]
                },
                {
                  "action": "REOPEN",
                  "nextState": "PENDINGFORASSIGNMENT",
                  "roles": [
                    "CFC",
                    "CSR",
                    "CITIZEN"
                  ]
                },
                {
                  "action": "RATE",
                  "nextState": "CLOSEDAFTERRESOLUTION",
                  "roles": [
                    "CFC",
                    "CITIZEN"
                  ]
                }
              ]
            },
            {
              "sla": null,
              "state": "CLOSEDAFTERREJECTION",
              "applicationStatus": "CLOSEDAFTERREJECTION",
              "isStateUpdatable": false,
              "docUploadRequired": false,
              "isStartState": false,
              "isTerminateState": true
            },
            {
              "sla": null,
              "state": "CLOSEDAFTERRESOLUTION",
              "applicationStatus": "CLOSEDAFTERRESOLUTION",
              "isStateUpdatable": false,
              "docUploadRequired": false,
              "isStartState": false,
              "isTerminateState": true
            }
          ]
        }
      ]
    }
  3. Using /localization/messages/v1/_upsert , add localisation (templates) for notification messages to be sent. Following are the product notification templates:

    Code Block
    {
      "messages": [
           {
                "code": "PGR_APPLY_PENDINGFORASSIGNMENT_SMS_MESSAGE",
                "message": "Dear Citizen, Your complaint for <complaint_type> has been submitted with ID <id> on <date>. You can track your complaint status on the mSeva Punjab mobile App (download here - <download link>) or your local municipal web portal.",
                "module": "rainmaker-pgr",
                "locale": "en_IN"
            },
            {
                "code": "PGR_RESOLVE_RESOLVED_SMS_MESSAGE",
                "message": "Dear Citizen, Your complaint for <complaint_type> with ID <id> submitted on <date> has been resolved by <emp_name>. If you are not satisfied with service you can REOPEN complaint through mSeva Punjab mobile App (download here - <download_link>) or your local municipal web portal or by calling our CSR.",
                "module": "rainmaker-pgr",
                "locale": "en_IN"
            },
            {
                "code": "PGR_REOPEN_PENDINGFORASSIGNMENT_SMS_MESSAGE",
                "message": "Dear Citizen, Your complaint for <complaint_type> with ID <id> submitted on <date> has been RE-OPEN as per your request. You can track your complaint status and connect with our officials on the mSeva Punjab mobile App (download here - <download_link>) or your local municipal web portal.",
                "module": "rainmaker-pgr",
                "locale": "en_IN"
            },
            {
                "code": "PGR_REJECT_REJECTED_SMS_MESSAGE",
                "message": "Dear Citizen, Your complaint for <complaint_type> with ID <id> submitted on <date> has been rejected. Reason for Rejection: <reason>, Additional Comments: <additional_comments> If you wish to re-open the complaint, you can download the mSeva Punjab mobile app (download here - <download_link>) or visit your local municipal website.",
                "module": "rainmaker-pgr",
                "locale": "en_IN"
            },
            {
                "code": "PGR_REASSIGN_PENDINGATLME_SMS_MESSAGE",
                "message": "Dear Citizen, Your complaint for <complaint_type> with ID <id> submitted on <date> has been re-assigned to <reassign_emp_name>, <emp_designation>, <emp_department>. You can track your complaint status and connect with our officials on the mSeva Punjab mobile App (download here - <download_link>) or your local municipal web portal.",
                "module": "rainmaker-pgr",
                "locale": "en_IN"
            }      
        ]
    }
  4. Add Role-Action mapping for the API’s in MDMS. Following are the required entries. They should be mapped to both CITIZEN and appropriate employee roles.

    Code Block
    {
      {
          "id": {{ID_PLACEHOLDER}},
          "name": "Create PGR Request",
          "url": "/pgr-services/v2/request/_create",
          "parentModule": "",
          "displayName": "Create PGR Request",
          "orderNumber": 0,
          "enabled": false,
          "serviceCode": "pgr-services",
          "code": "null",
          "path": ""
        },
        {
          "id": {{ID_PLACEHOLDER}},
          "name": "Update PGR Request",
          "url": "/pgr-services/v2/request/_update",
          "parentModule": "",
          "displayName": "Update PGR Request",
          "orderNumber": 0,
          "enabled": false,
          "serviceCode": "pgr-services",
          "code": "null",
          "path": ""
        },
        {
          "id": {{ID_PLACEHOLDER}},
          "name": "Search PGR Request",
          "url": "/pgr-services/v2/request/_search",
          "parentModule": "",
          "displayName": "Search PGR Request",
          "orderNumber": 0,
          "enabled": false,
          "serviceCode": "pgr-services",
          "code": "null",
          "path": ""
        },
        {
          "id": {{ID_PLACEHOLDER}},
          "name": "Search PGR Request",
          "url": "/pgr-services/v2/request/_count",
          "parentModule": "",
          "displayName": "Count PGR Request",
          "orderNumber": 0,
          "enabled": false,
          "serviceCode": "pgr-services",
          "code": "null",
          "path": ""
        }
    • Client Service Like mgramseva-ifix-adapter

    • fiscal-event-service

    • keycloak

Key Functionalities

  • Ifix client requests pushed to IFIX

  • Auth token is fetched from keycloak and cached. Token will be refetched 5 minutes before expiry

  • Every push to Ifix is recoded with http status

    • status series 200 series considered success

    • status 400 are marked client error and reported back to client

    • status 500 resubmited by scheduller

Deployment Details

  1. update the keycloak credentials client-id and secrets in environment file

  2. Map the coa in HeadCodeToCoaMapping.yml

  3. Map project in ProjectMapping.yml

  4. Deploy the latest version of ifix-reference-adapter

Configuration Details


Integration

Integration Scope

PGR service can be integrated with any organisation or system which wants to track customer queries or complaint. The organisations can customise the workflow depending on there product requirements 

Integration Benefits

  • Easy tracking and resolution of complaints

  • Configurable workflow according to client requirement

Steps to Integration

  1. Customer can raise a complaint using the /requests/_create

  2. Organisation or System can search the complaint using /requests/_searchendpoint

  3. Once the complaint is raised the organisation or system can call /requests/_update endpoint to move the application further in workflow until it get resolved

Interaction Diagram

...

Reference Docs

Title 

Link

 Workflow Technical Document

 Workflow Service

 User Technical Document

User Service  

MDMS Technical Document

NEEDS TO BE UPDATED

IDGen Technical Document

NEEDS TO BE UPDATED

Localization Technical Document

NEEDS TO BE UPDATED

Persister Technical Document

NEEDS TO BE UPDATED

SMS Notification Technical Document

NEEDS TO BE UPDATED

HRMS Technical Document

NEEDS TO BE UPDATED

API List

...