Property services
One of the major application of the eGov stack which helps municipal and citizen to handle property tax payment and other related functions on property such as assessments, mutation and so on.
The setup of the Application is as follows
Requirements:
Prior Knowledge of Java/J2EE.
Prior Knowledge of Spring Boot.
Prior Knowledge of REST APIs and related concepts like path parameters, headers, JSON etc.
Prior knowledge of Git.
Prior knowledge of eGov-mdms service, eGov-persister, eGov-user, eGov-location, eGov-localization, eGov-idgen.
FUNCTIONALITY:
The Property service provides multiple functionality starting from serving as a central repository where property information are registered for reference of citizen and other municipality provided services such as water connection and sewerage management. An assessment can be done so as to calculate and pay tax on the property. The different services provided by the property services are
Property Registry
Assessment
Mutation
Bifurcation
consolidation
SETUP AND USAGE:
The Application is present among the core group of applications available in the eGov-services git repository. The spring boot application needs lombok* extension added in your IDE to load it. Once the application is up and running API requests can be posted to the url and ids can be generated.
*in case of intellij the plugin can be installed directly, for eclipse the lombok jar location has to be added in eclipse.ini file in this format javaagent:lombok.jar
For the API information please refer the swagger yaml, GOTO : https://editor.swagger.io/ and click on file -> import url Then add the raw url of the API doc in the pop up.
https://github.com/egovernments/municipal-services/blob/master/docs/property-services/Assessment.yml
Incase the url is unavailable, please go to the docs folder of municipal-services git repo
The postman collection of the service Property registry
https://www.getpostman.com/collections/02d01e7b46c79c140863
The variables in the Application.properties to be updated are as follows
###### kafka topics persister configs for eGov persister
persister.save.property.topic=save-property-registry
persister.update.property.topic=update-property-registry
persister.cancel.property.topic=cancel-property-registry
persister.cancel.property.assessment.topic=cancel-property-assessment
egov.pt.assessment.create.topic=save-property-assessment
egov.pt.assessment.update.topic=update-property-assessment
######## URLs for the external API references
eGvo mdms
egov.mdms.host = https://egov-micro-dev.egovernments.org
eGov -idGen
egov.idgen.host = https://egov-micro-dev.egovernments.org/
idGen Id formats
egov.idgen.ack.name=pt.acknowledgementnumber
egov.idgen.ack.format=PB-AC-[cy:yyyy-MM-dd]-[SEQ_EG_PT_ACK]
egov.idgen.assm.name=pt.assessmentnumber
egov.idgen.assm.format=PB-AS-[cy:yyyy-MM-dd]-[SEQ_EG_PT_ASSM]
egov.idgen.ptid.name=pt.propertyid
egov.idgen.ptid.format=PB-PT-[cy:yyyy-MM-dd]-[SEQ_EG_PT_PTID]
eGov - workflow
workflow.context.path = https://egov-micro-dev.egovernments.org/
eGov - user
egov.user.host=https://egov-micro-dev.egovernments.org
boundary service
egov.location.host=https://egov-micro-dev.egovernments.org
pt- Calculation service
egov.calculation.host = http://pt-calculator-v2:8080
localization service
egov.localization.host = https://egov-micro-dev.egovernments.org
Property Search Parameters config (filter for search based on fields by user Type)
citizen.allowed.search.params = accountId,ids,propertyDetailids,mobileNumber,oldpropertyids
employee.allowed.search.params = accountId,ids,propertyDetailids,mobileNumber,oldpropertyids
Explanation for Registry:
The registry flow flow helps the citizen/Employee to create a property in the system with the minimal information required. Other workflows such as assessment or mutation can be triggered on the existing registry. The registry entry can be created, updated and cancelled, searched. The same entry in registry can be referred by other modules for their business purposes.
Assessment APIs:
Assessment is a snapshot of Property for a given transaction on that Property. These APIs provide functionalities to create/update/search the assessments. An assessment cannot exist without a property.
Postman Collection:
https://www.getpostman.com/collections/d1a02a29203d110df289
Configs:
Assessment shares most of the configs with Property as mentioned above, only exclusive properties are mentioned in this section.
IDGEN:
assessment id key = pt.assessmentnumber
assessment id format = PB-AS-[cy:yyyy-MM-dd]-[SEQ_EG_PT_ASSM]
KAFKA TOPICS:
save-pt-assessment
update-pt-assessment
Services required to be running:
egov-mdms-service
egov-idgen
egov-persister
egov-workflow-v2
Workflow integration can be controlled by the following two properties:
assessment.workflow.enabled=true assessment.workflow.trigger.param=usageCategory,occupancyType,occupancyDate
The first property switches workflow on or off, while the second property provides a way to control which field change can trigger workflow. A businessService needs to be created using the workflow
/egov-workflow-v2/egov-wf/businessservice/_create API .
Sample businessService create API body for Assessment workflow:
{ "RequestInfo": { "apiId": "Rainmaker", "action": "", "did": 1, "key": "", "msgId": "20170310130900|en_IN", "requesterId": "", "ts": 1513579888683, "ver": ".01", "authToken": "b39181b1-5c6b-484a-b825-6be2f62012b8" }, "BusinessServices": [ { "tenantId": "pb", "businessService": "ASMT", "business": "pt-services", "businessServiceSla": 172800000, "states": [ { "sla": null, "state": null, "applicationStatus": null, "docUploadRequired": false, "isStartState": true, "isTerminateState": false, "isStateUpdatable": true, "actions": [ { "action": "INITIATE", "nextState": "INITIATED", "roles": [ "CITIZEN", "PT_CEMP" ] } ] }, { "sla": null, "state": "INITIATED", "applicationStatus": "INITIATED", "docUploadRequired": false, "isStartState": true, "isTerminateState": false, "actions": [ { "action": "APPLY", "nextState": "APPLIED", "roles": [ "CITIZEN", "PT_CEMP" ] }, { "action": "INITIATE", "nextState": "INITIATED", "roles": [ "CITIZEN", "PT_CEMP" ] } ] }, { "sla": null, "state": "APPLIED", "applicationStatus": "APPLIED", "docUploadRequired": false, "isStartState": false, "isTerminateState": false, "isStateUpdatable": true, "actions": [ { "action": "FORWARD", "nextState": "FIELDINSPECTION", "roles": [ "PT_DOC_VERIFIER" ] }, { "action": "REJECT", "nextState": "REJECTED", "roles": [ "PT_DOC_VERIFIER" ] }, { "action" : "SENDBACKTOCITIZEN", "nextState" : "INITIATED", "roles":["PT_DOC_VERIFIER"] } ] }, { "sla": null, "state": "REJECTED", "applicationStatus": "REJECTED", "isStateUpdatable": false, "docUploadRequired": false, "isStartState": false, "isTerminateState": true }, { "sla": 86400000, "state": "FIELDINSPECTION", "applicationStatus": "FIELDINSPECTION", "docUploadRequired": false, "isStartState": false, "isStateUpdatable": true, "isTerminateState": false, "actions": [ { "action": "FORWARD", "nextState": "PENDINGAPPROVAL", "roles": [ "PT_FIELD_INSPECTOR" ] }, { "action": "REJECT", "nextState": "REJECTED", "roles": [ "PT_FIELD_INSPECTOR" ] }, { "action": "SENDBACK", "nextState": "APPLIED", "roles": [ "PT_FIELD_INSPECTOR" ] } ] }, { "sla": 43200000, "state": "PENDINGAPPROVAL", "applicationStatus": "PENDINGAPPROVAL", "docUploadRequired": false, "isStartState": false, "isStateUpdatable": false, "isTerminateState": false, "actions": [ { "action": "APPROVE", "nextState": "PENDINGPAYMENT", "roles": [ "PT_APPROVER" ] }, { "action": "REJECT", "nextState": "REJECTED", "roles": [ "PT_APPROVER" ] }, { "action": "SENDBACK", "nextState": "FIELDINSPECTION", "roles": [ "PT_APPROVER" ] } ] }, { "sla": 43200000, "state": "PENDINGPAYMENT", "applicationStatus": "PENDINGPAYMENT", "docUploadRequired": false, "isStartState": false, "isTerminateState": false, "isStateUpdatable": false, "actions": [ { "action": "PAY", "nextState": "APPROVED", "roles": [ "CITIZEN", "PT_CEMP", "SYSTEM_PAYMENT" ] }, { "action": "ADHOC", "nextState": "PENDINGPAYMENT", "roles": [ "PT_CEMP" ] } ] }, { "sla": null, "state": "APPROVED", "applicationStatus": "APPROVED", "isStateUpdatable": false, "docUploadRequired": false, "isStartState": false, "isTerminateState": true } ] } ] }
Other system level configs are same as PT-Registry as mentioned above.