Overview
Water service is the eGov application, which helps and gives flexibility to municipalities and citizens to handle the water service like applying for the water connection and searching for water connections. The application goes through different stages that the states identify for given roles. If that role takes the action then the application goes to the next state. Based on the state, a citizen gets a notification (SMS and in-app ). Citizens also can pay for application fees or employees can collect the fee for the application.
Pre-requisites
Before you proceed with the documentation, make sure the following pre-requisites are met -
The Kafka server is up and running
egov-persister service is running and has a water service persister config path added to it
PSQL server is running and a database is created to store water connection/application data
knowledge of eGov-mdms service, eGov-persister, eGov-idgen, eGov-sms, eGov-email,eGov-user, eGov-localization, eGov-workflow-service will be helpful.
Key Functionalities
Apply for a water connection.
Searching for water connections.
Apply for property creation.
Can take different actions based on state (Workflow)
Notification based on the application state.
Environment Variables
Description
egov.waterservice.createwaterconnection
This variable contains the kafka topic name which is used to create new water connection application in the system.
egov.waterservice.updatewaterconnection
This variable contains the kafka topic name which is used to update the existing water connection application in the system.
egov.waterservice.updatewaterconnection.workflow.topic
This variable contains the kafka topic name which is used to update the process instance of the water connection application.
This variable contain the idgen format name for water application
This variable contain the idgen format for water application ex:- WS/[CITY.CODE]/[fy:yyyy-yy]/[SEQ_EGOV_COMMON]
This variable contain the idgen format name for water connection
This variable contain the idgen format for water connection ex:- WS_AP/[CITY.CODE]/[fy:yyyy-yy]/[SEQ_EGOV_COMMON]
Interaction Diagram
To Do
Table UML diagram
Configuration Details
MDMS Configuration
Copy ws-services-calculation
ws-services-masters
PropertyTax
master-config.json for water service
Copy "ws-services-masters": {
"connectionCategory": {
"masterName": "connectionCategory",
"isStateLevel": true,
"uniqueKeys": [
"$.code"
]
},
"connectionType": {
"masterName": "connectionType",
"isStateLevel": true,
"uniqueKeys": [
"$.code"
]
},
"waterSource": {
"masterName": "waterSource",
"isStateLevel": true,
"uniqueKeys": [
"$.code"
]
},
"billingPeriod": {
"masterName": "billingPeriod",
"isStateLevel": true,
"uniqueKeys": [
"$.billingCycle"
]
},
"waterSourceWithSubSource": {
"masterName": "waterSourceWithSubSource",
"isStateLevel": true,
"uniqueKeys": []
}
},
"ws-services-calculation": {
"WaterCess": {
"masterName": "WaterCess",
"isStateLevel": true,
"uniqueKeys": []
},
"Interest": {
"masterName": "Interest",
"isStateLevel": true,
"uniqueKeys": [
"$.fromFY"
]
},
"Rebate": {
"masterName": "Rebate",
"isStateLevel": true,
"uniqueKeys": [
"$.fromFY"
]
},
"Penalty": {
"masterName": "Penalty",
"isStateLevel": true,
"uniqueKeys": [
"$.fromFY"
]
},
"WCBillingSlab": {
"masterName": "WCBillingSlab",
"isStateLevel": true,
"uniqueKeys": []
},
"WS_CHARGE": {
"masterName": "WS_CHARGE",
"isStateLevel": true,
"uniqueKeys": []
},
"WS_TIME_PENALTY": {
"masterName": "WS_TIME_PENALTY",
"isStateLevel": true,
"uniqueKeys": []
},
"WS_WATER_CESS": {
"masterName": "WS_WATER_CESS",
"isStateLevel": true,
"uniqueKeys": []
},
"MeterStatus": {
"masterName": "MeterStatus",
"isStateLevel": true,
"uniqueKeys": []
},
"WS_Round_Off": {
"masterName": "WS_Round_Off",
"isStateLevel": true,
"uniqueKeys": []
},
"PlotSizeSlab": {
"masterName": "PlotSizeSlab",
"isStateLevel": true,
"uniqueKeys": []
},
"PropertyUsageType": {
"masterName": "PropertyUsageType",
"isStateLevel": true,
"uniqueKeys": []
},
"FeeSlab": {
"masterName": "FeeSlab",
"isStateLevel": true,
"uniqueKeys": []
},
"RoadType": {
"masterName": "RoadType",
"isStateLevel": true,
"uniqueKeys": []
},
"CalculationAttribute": {
"masterName": "CalculationAttribute",
"isStateLevel": true,
"uniqueKeys": []
}
}
Property creation through WNS module
https://github.com/egovernments/egov-mdms-data/blob/DEV/data/pb/PropertyTax/PTWorkflow.json
Persister Configuration
https://github.com/egovernments/configs/blob/DEV/egov-persister/water-persist.yml
https://github.com/egovernments/configs/blob/master/egov-persister/water-meter.yml
Actions & Role Action Mapping
Actions
Copy [
{
"id": {{PLACEHOLDER1}},
"name": "Create Water Connection",
"url": "/ws-services/wc/_create",
"displayName": "Create Water COnnection",
"orderNumber": 0,
"enabled": false,
"serviceCode": "ws-services",
"code": "null",
"path": ""
},
{
"id": {{PLACEHOLDER2}},
"name": "Search Water Connection",
"url": "/ws-services/wc/_search",
"displayName": "Search Water COnnection",
"orderNumber": 0,
"enabled": false,
"serviceCode": "ws-services",
"code": "null",
"path": ""
},
{
"id": {{PLACEHOLDER3}},
"name": "Update Water Connection",
"url": "/ws-services/wc/_update",
"displayName": "Update Water COnnection",
"orderNumber": 0,
"enabled": false,
"serviceCode": "ws-services",
"code": "null",
"path": ""
}
]
Role Action Mapping
Copy [
{
"rolecode": "CITIZEN",
"actionid": {{PLACEHOLDER1}},
"actioncode": "",
"tenantId": "pb"
},
{
"rolecode": "CITIZEN",
"actionid": {{PLACEHOLDER2}},
"actioncode": "",
"tenantId": "pb"
},
{
"rolecode": "CITIZEN",
"actionid": {{PLACEHOLDER3}},
"actioncode": "",
"tenantId": "pb"
},
{
"rolecode": "WS_CEMP",
"actionid": {{PLACEHOLDER1}},
"actioncode": "",
"tenantId": "pb"
},
{
"rolecode": "WS_CEMP",
"actionid": {{PLACEHOLDER2}},
"actioncode": "",
"tenantId": "pb"
},
{
"rolecode": "WS_CEMP",
"actionid": {{PLACEHOLDER3}},
"actioncode": "",
"tenantId": "pb"
},
{
"rolecode": "WS_DOC_VERIFIER",
"actionid": {{PLACEHOLDER2}},
"actioncode": "",
"tenantId": "pb"
},
{
"rolecode": "WS_DOC_VERIFIER",
"actionid": {{PLACEHOLDER3}},
"actioncode": "",
"tenantId": "pb"
},
{
"rolecode": "WS_FIELD_INSPECTOR",
"actionid": {{PLACEHOLDER2}},
"actioncode": "",
"tenantId": "pb"
},
{
"rolecode": "WS_FIELD_INSPECTOR",
"actionid": {{PLACEHOLDER3}},
"actioncode": "",
"tenantId": "pb"
},
{
"rolecode": "WS_APPROVER",
"actionid": {{PLACEHOLDER2}},
"actioncode": "",
"tenantId": "pb"
},
{
"rolecode": "WS_APPROVER",
"actionid": {{PLACEHOLDER3}},
"actioncode": "",
"tenantId": "pb"
},
{
"rolecode": "WS_CLERK",
"actionid": {{PLACEHOLDER2}},
"actioncode": "",
"tenantId": "pb"
},
{
"rolecode": "WS_CLERK",
"actionid": {{PLACEHOLDER3}},
"actioncode": "",
"tenantId": "pb"
}
]
Workflow Business Service Config
Create businessService (workflow configuration) using the __/businessservice/_create. Following is the product configuration for the water service.
Copy {
"RequestInfo": {
"apiId": "Rainmaker",
"action": "",
"did": 1,
"key": "",
"msgId": "20170310130900|en_IN",
"requesterId": "",
"ts": 1513579888683,
"ver": ".01",
"authToken": "{{Auth_Token}}"
},
"BusinessServices": [
{
"tenantId": "pb",
"businessService": "NewWS1",
"business": "ws-services",
"businessServiceSla": 259200000,
"states": [
{
"sla": null,
"state": null,
"applicationStatus": null,
"docUploadRequired": false,
"isStartState": true,
"isTerminateState": false,
"isStateUpdatable": false,
"actions": [
{
"action": "INITIATE",
"nextState": "INITIATED",
"roles": [
"CITIZEN",
"WS_CEMP"
]
}
]
},
{
"sla": null,
"state": "INITIATED",
"applicationStatus": "INITIATED",
"docUploadRequired": false,
"isStartState": false,
"isTerminateState": false,
"isStateUpdatable": true,
"actions": [
{
"action": "SUBMIT_APPLICATION",
"nextState": "PENDING_FOR_DOCUMENT_VERIFICATION",
"roles": [
"CITIZEN",
"WS_CEMP"
]
}
]
},
{
"sla": null,
"state": "PENDING_FOR_CITIZEN_ACTION",
"applicationStatus": "PENDING_FOR_CITIZEN_ACTION",
"docUploadRequired": false,
"isStartState": false,
"isTerminateState": false,
"isStateUpdatable": true,
"actions": [
{
"action": "RESUBMIT_APPLICATION",
"nextState": "PENDING_FOR_DOCUMENT_VERIFICATION",
"roles": [
"CITIZEN",
"WS_CEMP"
]
}
]
},
{
"sla": null,
"state": "PENDING_FOR_DOCUMENT_VERIFICATION",
"applicationStatus": "PENDING_FOR_DOCUMENT_VERIFICATION",
"docUploadRequired": false,
"isStartState": false,
"isTerminateState": false,
"isStateUpdatable": true,
"actions": [
{
"action": "VERIFY_AND_FORWARD",
"nextState": "PENDING_FOR_FIELD_INSPECTION",
"roles": [
"WS_DOC_VERIFIER"
]
},
{
"action": "REJECT",
"nextState": "REJECTED",
"roles": [
"WS_DOC_VERIFIER"
]
},
{
"action": "SEND_BACK_TO_CITIZEN",
"nextState": "PENDING_FOR_CITIZEN_ACTION",
"roles": [
"WS_DOC_VERIFIER"
]
}
]
},
{
"sla": null,
"state": "REJECTED",
"applicationStatus": "REJECTED",
"isStateUpdatable": false,
"docUploadRequired": false,
"isStartState": false,
"isTerminateState": true
},
{
"sla": 86400000,
"state": "PENDING_FOR_FIELD_INSPECTION",
"applicationStatus": "PENDING_FOR_FIELD_INSPECTION",
"docUploadRequired": false,
"isStartState": false,
"isStateUpdatable": true,
"isTerminateState": false,
"actions": [
{
"action": "VERIFY_AND_FORWARD",
"nextState": "PENDING_APPROVAL_FOR_CONNECTION",
"roles": [
"WS_FIELD_INSPECTOR"
]
},
{