Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 8 Next »

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:

  1. Prior Knowledge of Java/J2EE.

  2. Prior Knowledge of Spring Boot.

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

  4. Prior knowledge of Git.

  5. 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 Municipal-services 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://raw.githubusercontent.com/egovernments/municipal-services/master/docs/property-services/property-services.yml

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

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]

PERSISTER:
https://raw.githubusercontent.com/egovernments/configs/master/egov-persister/assessment-persister.yml?token=AE4Z2KFWEQBDCUY6AZLGGIK6AM3QQ

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.

Mutation calculator:

Calculation Logic

The calculation logic for mutation fee depends on the usage type of property (RESIDENTIAL , NON RESIDENTIAL etc ) and current market value of the property. 

Usage type

Minimum Market value

Maximum Market Value

Rate Percentage

Fixed amount 

Calculation Type

Residential

0

X lacs

A% of CMV

INR G

FLAT

Non -Residential

0

X lacs

E% of CMV

INR Q

RATE

Residential

X+1 Lacs

Y Lacs

B% of CMV

INR H

FLAT

Non -Residential

X+1 Lacs

Y Lacs

B% of CMV

INR H

RATE

Residential

Y+1 Lacs

>Y+1Lacs

D% of CMV

INR L

FLAT

Non -Residential

Y+1 Lacs

>Y+1Lacs

C% of CMV

INR I

RATE

If the current market value (CMV) of the property comes in between minimum and maximum market value range of billing slab and the usage type of property match with the usage type for that billing slab then the mutation fees for that property is the amount mentioned in that particular billing slab. 

Further there are two calculation types which are FLAT and RATE which has to set by state/ulb for their billing slab for property mutation. If the calculation type is set as FLAT then mutation fee is the fixed amount mentioned in billing slab which is used for the property.

If the calculation type is set as RATE the Mutation fee is X% of current market value, where X is percentage rate mentioned in billing slab which is used for the property.

Other factors influencing calculation can be :

  • Ownership type

  • Property type

  • Locality

Rebate and Penalty

When the property is registered for mutation/transfer of ownership and all the document is submitted, then the mutation fees has to pay within specified period of time of property mutation registration date. If a person fails to pay the fees amount before the deadline date, then some penalty charges has to pay. Penalty charge is Y% of tax amount. The penalty percentage is set by the state/ulb. If a person pays the fees amount  within the specified month of property mutation registration date, then a certain amount is rebated from tax amount. Rebate charge is Z% of tax amount. The rebate percentage is set by state/ulb.

Note: For mutation fees calculation,  document date value (means the date at which property is registered for mutation), market value of property, usage type value of property is essential. 


API contract

https://raw.githubusercontent.com/egovernments/municipal-services/master/docs/property-services/property-mutation-fees-calculator_API_Contract.yml

Postman collection for property mutation billing slab

https://www.getpostman.com/collections/02965abc6345b5e1a633

Postman collection for property mutation calculator https://www.getpostman.com/collections/e044d1f64feeafe82f70


Notification:

Payment Notification:

    {
      "code": "PT_NOTIFICATION_PAYMENT_FAIL",
      "message": "Dear Citizen, Your payment of Rs. <insert amount to pay> for Property Tax Unique ID <insert ID> has failed. Your assessment is pending. Please try again. Ignore this message if you have completed your payment. You can pay your Property Tax online here - <payLink>",
      "module": "rainmaker-pt",
      "locale": "en_IN"
    },
    {
      "code": "PT_NOTIFICATION_PAYMENT_OFFILE",
      "message": "Dear Citizen,  Your Property Tax payment of Rs. <amount>  has been accepted. Mode of Payment: <insert mode of payment> Pending Amount: <Enter pending amount>.",
      "module": "rainmaker-pt",
      "locale": "en_IN"
    },
    {
      "code": "PT_NOTIFICATION_PAYMENT_ONLINE",
      "message": "Dear Citizen, Your payment of Rs.< insert amount paid> with payment transaction id < insert payment transaction id from PG> has been made successfully. Assessment for Property Tax Unique ID <insert Property Tax Assessment ID>  was succesful. Property Tax due is Rs.<pt due>.",
      "module": "rainmaker-pt",
      "locale": "en_IN"
    },
    {
      "code": "PT_NOTIFICATION_PAYMENT_PARTIAL_OFFLINE",
      "message": "Dear Citizen,  Your Property Tax payment of Rs. <amount>  has been accepted. Mode of Payment: <insert mode of payment> Pending Amount: <Enter pending amount>. You can pay your Property Tax online here - <payLink>",
      "module": "rainmaker-pt",
      "locale": "en_IN"
    },
    {
      "code": "PT_NOTIFICATION_PAYMENT_PARTIAL_ONLINE",
      "message": "Dear Citizen, Your payment of Rs.< insert amount paid> with payment transaction id < insert payment transaction id from PG> has been made successfully. Assessment for Property Tax Unique ID <insert ID>  was succesful. Property Tax due is Rs.<pt due>. You can pay your Property Tax here - <payLink>",
      "module": "rainmaker-pt",
      "locale": "en_IN"
    }

Assessment Notification:

    {
      "code": "ASMT_APPLIED",
      "message": "Applied",
      "module": "rainmaker-pt",
      "locale": "en_IN"
    },
    {
      "code": "ASMT_APPROVED",
      "message": "Approved",
      "module": "rainmaker-pt",
      "locale": "en_IN"
    },
    {
      "code": "ASMT_CREATE",
      "message": "Dear {OWNER_NAME}, Your assessment with {ASSESSMENTNUMBER} for financial year {FINANCIALYEAR} and property id {PROPERTYID} is created.",
      "module": "rainmaker-pt",
      "locale": "en_IN"
    },
    {
      "code": "ASMT_UPDATE",
      "message": "Dear {OWNER_NAME}, Your assessment with {ASSESSMENTNUMBER} for financial year {FINANCIALYEAR} and property id {PROPERTYID} is reassessed.",
      "module": "rainmaker-pt",
      "locale": "en_IN"
    },
    {
      "code": "ASMT_MSG_APPLIED",
      "message": "Dear {OWNER_NAME}, Your assessment with {ASSESSMENTNUMBER} for financial year {FINANCIALYEAR} and property id {PROPERTYID} is updated to {STATUS}.",
      "module": "rainmaker-pt",
      "locale": "en_IN"
    },
    {
      "code": "ASMT_MSG_APPROVED",
      "message": "Dear {OWNER_NAME}, Your assessment with {ASSESSMENTNUMBER} for financial year {FINANCIALYEAR} and property id {PROPERTYID} is {STATUS}.",
      "module": "rainmaker-pt",
      "locale": "en_IN"
    }

For adding localization for any status append ASMT_ prefix to the status and for adding message for any status add ASMT_MSG_ before the status.




  • No labels