Property services
Reference to Children Document
Property Mutation - Ownership Transfer Technical documentation
Assessment of property
One of the major application of the eGov stack which helps municipal and citizen to handle property tax payment and other related functions on the property such as assessments, mutation and so on.
...
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, billing-service and eGov-URL-shortener.
FUNCTIONALITY:
The Property service Service provides multiple functionality functionalities starting from serving as a central repository where property information are is 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
...
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 Registry Explanation:
The registry 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 ACTIVE Property in the registry.
The property can be created, updated, cancelled, searched, Followed by process of Mutation and Assessment.
The same entry in registry can be referred by other modules for their business purposes(Water charges).
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 of IntelliJ the plugin can be installed directly, for eclipse the lombok 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 yamlYAML,
GOTO : https://editor.swagger.io/ and click on file -> import url Then URL Then add the raw url URL of the API doc in the pop-up.
https://raw.githubusercontentgithub.com/egovernments/municipal-services/blob/master/docs/property-services/property-services.yml
https://github.com/egovernments/municipal-services/blob/master/docs/property-services/Assessment.yml
Incase In case the url URL is unavailable, please go to the docs folder of the municipal-services git repo
The postman Postman collection of the service Property registry
https://www.getpostman.com/collections/02d01e7b46c79c140863
########## Persister File Config
The persister File config for property services can be found in the Config repo of eGov Git, which needs to be added in the egov-persister service.
https://github.com/egovernments/configs/blob/master/egov-persister/property-services-registry.yml
The variables in the Application.properties to be updated are as follows
###### kafka topics persister configs for eGov persister
...
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 ######## URLs for the external API references
eGvo mdms
egov.mdms.host = https://egov-micro-dev.egovernments.orgeGov -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 - workflow
...
eGov - workflow
workflow.host = https://egov-micro-dev.egovernments.org/eGov - user
egov.user.host=https://egov-micro-dev.egovernments.orgboundary service
egov.location.host=https://egov-micro-dev.egovernments.org
pt- Calculation service
egov.calculation.host = https://egov-micro-dev.egovernments.org
...
eGov - user
localization service
egov.
...
localization.host = https://egov-micro-dev.egovernments.org
boundary billing-service
egov.locationegbs.host=https://egov-micro-dev.egovernments.org/ptUrl- Calculation serviceShortner
egov.
...
url.shortner.host=http://
...
...
...
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.
...
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###### 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
Payment topic to udate workflow to paid status
kafka.topics.receipt.create=egov.collection.payment-create
####### Id-Gen Configs for Business ids
egov.idgen.ack.name=pt.acknowledgementnumber
egov.idgen.ack.format=PB-AC-[cy:yyyy-MM-dd]-[SEQ_EG_PT_ASSMACK]
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:
Code Block |
---|
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:
...
egov.idgen.mutation.name=pt.mutation.number
egov.idgen.mutation.format=PB-MT-[CITY]-[SEQ_EG_PT_MUTATION]
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]
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
Workflow-configs
Each flow in property has a workflow associated with it, which can be controlled by the following configs
The Boolean field which can enable/disable Workflow - same field controls the update and create workflow
is.workflow.enabled=false
Name of the business code in the workflow, this should be set to matching value to the config businessService field in workflow master
property.workflow.name=PT.CREATE
property.legacy.entry.workflow.name=PT.LEGACY
property.update.workflow.name=PT.UPDATE
Workflow Config for property create if the source is from WATER CONNECTION module
For creation of property from water and sewerage module, as per the use case mentioned in this ticket, different workflow config is used.
For each use case, to identified which workflow to use can be identified from this mdms file.
Code Block |
---|
{ "tenantId": "pb", "moduleName": "PropertyTax", "PTWorkflow":[ { "slabusinessService": null, "PT.CREATEWITHWNS", "stateinitialAction": null"OPEN", "applicationStatusinWorkflowStatusAllowed": nullfalse, "docUploadRequiredenable": false, "isStartState": true,}, { "isTerminateStatebusinessService": false, "isStateUpdatable": true, "PT.CREATE", "actions": [ { "action": "INITIATE", initialAction":"open", "nextStateinWorkflowStatusAllowed": "INITIATED", true, "rolesenable":true [ } "CITIZEN", "PT_CEMP" ] } ] }, { "sla": null, "state": "INITIATED", "applicationStatus": "INITIATED", "docUploadRequired": false, "isStartState": true, ] } |
For use case 1 which says, The property which is creating from Water and sewerage module should have one step workflow.
for this requirement in above mdms file businessService
with PT.CREATEWITHWNS
object must have enable field to set as true.
Then for all the property creation from Water and Sewerage module would have one step workflow and property would be created with ACTIVE state.
Fields in above mdms file:
Mdms Fields | Descripton |
---|---|
businessService | Name of workflow config |
initialAction | Indicate the start(initial) action of the particular workflow mention in businessService. |
inWorkflowStatusAllowed | This field indicate whether the property with application status as “inWorkflow” can be use with water and sewerage connection creation. |
enable | If this filed is set as true, then the other fields associate with the particular object is use for property creation. |
(Note: The above objects indicate the each use case mention in this ticket, so at a time only one object (use case)enable field must set as true )
Sample workflow config for use case 1 where property creation is from water and sewerage module with one step workflow
Code Block |
---|
{ "BusinessServices": [ { "isTerminateStatetenantId": false"pb", "businessService": "actionsPT.CREATEWITHWNS":, [ "business": "PT", { "businessServiceSla": null, "actionstates": "APPLY",[ { "nextState": "APPLIED", "sla": null, "rolesstate": [ null, "applicationStatus": "INWORKFLOW", "CITIZENdocUploadRequired": false, "isStartState": true, "PT_CEMP"isTerminateState": false, "isStateUpdatable": false, ] "actions": [ }, { "action": "INITIATEOPEN", "nextState": "INITIATED", "roles": [ "CITIZEN", "PTWS_CEMP", "SW_CEMP" ] } ] }, { "sla": null, "state": "APPLIEDINITIATED", "applicationStatus": "APPLIEDINWORKFLOW", "docUploadRequired": false, "isStartState": falsetrue, "isTerminateState": false, "isStateUpdatable": true, "actions": [ { "action": "FORWARDSUBMIT", "nextState": "FIELDINSPECTIONAPPROVED", "roles": [ "PT_DOC_VERIFIEREMPLOYEE", ] "CITIZEN", }, "SW_CEMP", { "action": "REJECTWS_CEMP", "nextState": "REJECTED", ] "roles": [ }, { "PT_DOC_VERIFIER" ] "action": "BACK", }, "nextState": "INWORKFLOW", { "actionroles": [ : "SENDBACKTOCITIZEN", "nextState" : "INITIATEDEMPLOYEE", "roles":["PT_DOC_VERIFIER"] "CITIZEN", } "SW_CEMP", ] }, { "WS_CEMP" "sla": null, ] "state": "REJECTED", } "applicationStatus": "REJECTED", "isStateUpdatable": false,] }, "docUploadRequired": false, { "isStartState": false, "isTerminateStatesla": truenull, }, "state": "INWORKFLOW", { "slaapplicationStatus": 86400000"INWORKFLOW", "statedocUploadRequired": "FIELDINSPECTION"false, "applicationStatusisStartState": "FIELDINSPECTION"true, "docUploadRequiredisTerminateState": false, "isStartState": false, "isStateUpdatable": true, "isTerminateState": false, "actions": [ { "action": "FORWARDSUBMIT", "nextState": "PENDINGAPPROVALAPPROVED", "roles": [ "PT_FIELD_INSPECTOR"EMPLOYEE", ] "CITIZEN", }, "SW_CEMP", { "actionWS_CEMP": "REJECT", "nextState": "REJECTED", ] "roles":} [ ] "PT_FIELD_INSPECTOR" }, ] { }, { "sla": null, "actionstate": "SENDBACKAPPROVED", "nextStateapplicationStatus": "APPLIEDACTIVE", "rolesdocUploadRequired": [ false, "PT_FIELD_INSPECTORisStartState": false, ]"isTerminateState": true, } "isStateUpdatable": false, ] "actions": null }, } { ] "sla": 43200000, } ] } |
Sample workflow config - (The same PT.CREATE can be used for update workflow also since both involve the same functionality)
Code Block | ||
---|---|---|
| ||
{ "stateRequestInfo": "PENDINGAPPROVAL",{ "apiId": "Rainmaker", "applicationStatusaction": "PENDINGAPPROVAL", "did": 1, "docUploadRequiredkey": false"", "msgId": "20170310130900|en_IN", "isStartStaterequesterId": false"", "ts": 1513579888683, "isStateUpdatablever": false".01", "authToken": "b39181b1-5c6b-484a-b825-6be2f62012b8" }, "isTerminateStateBusinessServices": false,[ { "tenantId": "actionspb":, [ "businessService": "PT.CREATE", "business": "PT", { "businessServiceSla": null, "states": [ "action": "APPROVE", { "nextStatetenantId": "PENDINGPAYMENTpb", "rolessla": [ null, "PT_APPROVERstate": null, ] }"applicationStatus": "INWORKFLOW", { "docUploadRequired": false, "actionisStartState": "REJECT"true, "nextStateisTerminateState": "REJECTED"false, "rolesactions": [ "PT_APPROVER"{ ] }, "tenantId": "pb", { "action": "SENDBACKOPEN", "nextState": "FIELDINSPECTIONOPEN", "roles": [ "PT_APPROVER" "CITIZEN", ] } "EMPLOYEE" ] }, ] { "sla": 43200000, } "state": "PENDINGPAYMENT", ] "applicationStatus": "PENDINGPAYMENT"}, { "docUploadRequired": false, "isStartStatetenantId": false"pb", "isTerminateStatesla": falsenull, "isStateUpdatablestate": false"OPEN", "actionsapplicationStatus": ["INWORKFLOW", { "docUploadRequired": false, "actionisStartState": "PAY"true, "nextState"isTerminateState": "APPROVED"false, "rolesactions": [ { "CITIZEN", "tenantId": "PT_CEMPpb", "SYSTEM_PAYMENT" "action": "VERIFY", ] "nextState": "DOCVERIFIED", }, { "roles": [ "action": "ADHOC", "nextState": "PENDINGPAYMENTPT_DOC_VERIFIER", "roles": [ ] "PT_CEMP" }, ] { } ] "tenantId": "pb", }, { "action": "REJECT", "sla": null, "statenextState": "APPROVEDREJECTED", "applicationStatusroles": "APPROVED",[ "isStateUpdatable": false, "docUploadRequiredPT_DOC_VERIFIER": 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
Postman collection for property mutation billing slab
https://www.getpostman.com/collections/02965abc6345b5e1a633
...
Notification:
Payment Notification:
Code Block |
---|
{ "tenantId": "pb", "action": "SENDBACKTOCITIZEN", "nextState": "CORRECTIONPENDING", "roles": [ "PT_DOC_VERIFIER" ] } ] }, { "tenantId": "pb", "sla": null, "state": "DOCVERIFIED", "applicationStatus": "INWORKFLOW", "docUploadRequired": false, "isStartState": false, "isTerminateState": false, "actions": [ { "tenantId": "pb", "action": "FORWARD", "nextState": "FIELDVERIFIED", "roles": [ "PT_FIELD_INSPECTOR" ] } ] }, { "tenantId": "pb", "sla": null, "state": "FIELDVERIFIED", "applicationStatus": "INWORKFLOW", "docUploadRequired": false, "isStartState": false, "isTerminateState": false, "actions": [ { "tenantId": "pb", "action": "APPROVE", "nextState": "APPROVED", "roles": [ "PT_APPROVER" ] }, { "tenantId": "pb", "action": "REJECT", "nextState": "REJECTED", "roles": [ "PT_APPROVER" ] } ] }, { "tenantId": "pb", "sla": null, "state": "REJECTED", "applicationStatus": "INACTIVE", "docUploadRequired": false, "isStartState": false, "isTerminateState": true, "actions": null }, { "tenantId": "pb", "sla": null, "state": "APPROVED", "applicationStatus": "ACTIVE", "docUploadRequired": false, "isStartState": false, "isTerminateState": true, "actions": null }, { "tenantId": "pb", "sla": null, "state": "CORRECTIONPENDING", "applicationStatus": "INWORKFLOW", "docUploadRequired": false, "isStartState": false, "isTerminateState": false, "isStateUpdatable": true, "actions": [ { "tenantId": "pb", "action": "REOPEN", "nextState": "OPEN", "roles": [ "CITIZEN", "PT_CEMP" ] }, { "tenantId": "pb", "action": "REJECT", "nextState": "REJECTED", "roles": [ "CITIZEN", "PT_CEMP" ] } ] } ] } ] } |
PT.LEGACY workflow config
Code Block |
---|
{
"RequestInfo": {
"apiId": "Rainmaker",
"action": "",
"did": 1,
"key": "",
"msgId": "20170310130900|en_IN",
"requesterId": "",
"ts": 1513579888683,
"ver": ".01",
"authToken": "{{authToken_amritsar}}"
},
"BusinessServices": [
{
"tenantId": "pb",
"businessService": "PT.LEGACY",
"business": "PT",
"businessServiceSla": null,
"states": [
{
"tenantId": "pb",
"sla": null,
"state": null,
"applicationStatus": "INWORKFLOW",
"docUploadRequired": false,
"isStartState": true,
"isTerminateState": false,
"actions": [
{
"tenantId": "pb",
"action": "OPEN",
"nextState": "APPROVALPENDING",
"roles": [
"CITIZEN",
"EMPLOYEE"
]
}
]
},
{
"tenantId": "pb",
"sla": null,
"state": "APPROVALPENDING",
"applicationStatus": "INWORKFLOW",
"docUploadRequired": false,
"isStartState": true,
"isTerminateState": false,
"actions": [
{
"tenantId": "pb",
"action": "APPROVE",
"nextState": "APPROVED",
"roles": [
"EMPLOYEE"
]
},
{
"tenantId": "pb",
"action": "REJECT",
"nextState": "REJECTED",
"roles": [
"EMPLOYEE"
]
}
]
},
{
"tenantId": "pb",
"sla": null,
"state": "REJECTED",
"applicationStatus": "INACTIVE",
"docUploadRequired": false,
"isStartState": false,
"isTerminateState": true,
"actions": null
},
{
"tenantId": "pb",
"sla": null,
"state": "APPROVED",
"applicationStatus": "INACTIVE",
"docUploadRequired": false,
"isStartState": false,
"isTerminateState": true,
"actions": null
}
]
}
]
} |
Notifications :
To enable or disable notifcation
notif.sms.enabled=true
#notif urls - makes use of the UI app host in notification service
egov.notif.commonpay = citizen/egov-common/pay?consumerCode={CONSUMERCODE}&tenantId={TENANTID}
egov.notif.view.property = citizen/property-tax/my-properties/property/{PROPERTYID}/{TENANTID}
egov.notif.view.mutation = citizen/pt-mutation/search-preview?applicationNumber={APPID}&tenantId={TENANTID}
The Current localization messages for notification
Code Block | ||
---|---|---|
| ||
[ { "code": "PT_NOTIF_WF_STATE_LOCALE_OPEN", "message": "Open", "module": "rainmaker-pt", "locale": "en_IN" }, { "code": "PT_NOTIF_WF_STATE_LOCALE_DOCVERIFIED", "message": "Document Verified", "module": "rainmaker-pt", "locale": "en_IN" }, { "code": "PT_NOTIF_WF_STATE_LOCALE_FIELDVERIFIED", "message": "Field verified", "module": "rainmaker-pt", "locale": "en_IN" }, { "code": "PT_NOTIF_WF_STATE_LOCALE_APPROVED", "message": "Approved", "module": "rainmaker-pt", "locale": "en_IN" }, { "code": "PT_NOTIF_WF_STATE_LOCALE_REJECTED", "message": "Rejected", "module": "rainmaker-pt", "locale": "en_IN" }, { "code": "PT_NOTIF_WF_STATE_LOCALE_PAID", "message": "Paid", "module": "rainmaker-pt", "locale": "en_IN" }, { "code": "PT_NOTIF_NOTIFICATIONWF_PAYMENTMT_FAILOPEN", "message": "Dear Citizen{OWNER_NAME}, Your paymentapplication ofto Rs.edit <insertownership amountdetails toof pay>property forID Property{PROPERTYID} Taxhas Uniquebeen IDsubmitted <insertsuccessfully. ID>Your hasapplication failedno. for Yourfuture assessmentreference is pending{APPID}. PleaseYou trycan again.track Ignoreyour thisapplication messageon if you have completed your payment. You can pay your Property Tax online here - <payLink>",the link given below - {MTURL} Thank you", "module": "rainmaker-pt", "locale": "en_IN" }, { "code": "PT_NOTIF_WF_NOTIFICATIONMT_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>.",STATE_CHANGE", "message": "Dear {OWNER_NAME}, Status for your application no. {APPID} for property {PROPERTYID} to edit ownership has been changed to {STATUS}. You can track your application on the link given below - {MTURL} Thank you", "module": "rainmaker-pt", "locale": "en_IN" }, { "code": "PT_NOTIF_WF_NOTIFICATIONMT_PAYMENT_ONLINEPENDING", "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>.",{OWNER_NAME}, Payment is pending for your application no. {APPID} for property ID {PROPERTYID} to edit ownership. You can pay your mutation fee on the below link - {PAYLINK} or visit your ULB to pay your dues. Thank you", "module": "rainmaker-pt", "locale": "en_IN" }, { "code": "PT_NOTIFICATIONNOTIF_PAYMENTWF_PARTIALMT_OFFLINEPAID", "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>", "message": "Dear {OWNER_NAME}, You’ve successfully paid mutation fee - INR {AMOUNT} for application no. {APPID} for property ID {PROPERTYID}. You can download your receipt on the below link - {MTURL} Thank you ", "module": "rainmaker-pt", "modulelocale": "rainmaker-pt",en_IN" }, "locale": "en_IN" { }, { "code": "PT_NOTIFICATIONNOTIF_PAYMENTWF_PARTIALMT_ONLINEAPPROVED", "message": "Dear Citizen{OWNER_NAME}, Your payment of Rs.< insert amount paid> with payment transaction id < insert payment transaction id from PG>property ownership has been madechanged successfully.as Assessment for Property Tax Unique ID <insert ID> was succesful. Property Tax due is Rs.<pt due>per the application no. {APPID} for property {PROPERTYID}. You can paydownload your Property Tax here - <payLink>", mutation certificate on the below link - {MTURL} Thank you", "module": "rainmaker-pt", "locale": "en_IN" } |
Assessment Notification:
...
}, |
...
|
...
{ |
...
|
...
" |
...
code": " |
...
PT_NOTIF_WF_MT_NONE", " |
...
message": " |
...
Dear {OWNER_NAME}, Your property with property-id {PROPERTYID} has been mutated. You can view your property on the link given below - {MTURL} Thank you", |
...
|
...
"module": "rainmaker-pt", "locale": "en_IN |
...
" }, { |
...
|
...
"code": " |
...
PT_NOTIF_WF_OPEN", "message": "Dear {OWNER_NAME}, Your |
...
application to {updated/created} property with Id { |
...
PROPERTYID} has been submitted successfully. Your application no. for future reference is {APPID}. You can track your application on the link given below - {PTURL} Thank you", "module": "rainmaker-pt", "locale": "en_IN" }, { "code": " |
...
PT_NOTIF_WF_STATUS_CHANGE", "message": "Dear {OWNER_NAME}, Status for |
...
your |
...
application |
...
no. { |
...
APPID} for |
...
property {PROPERTYID} to {updated/created} property has been changed to {STATUS}. You can track your application on the link given below - {PTURL} Thank you", "module": "rainmaker-pt", "locale": "en_IN" }, { "code": " |
...
PT_NOTIF_ |
...
WF_ |
...
APPROVED", "message": "Dear {OWNER_NAME}, Your |
...
property has been {updated/created} as per the application no. {APPID} for property {PROPERTYID}. You can view your property on the link given below - {PTURL} Thank you", "module": "rainmaker-pt", "locale": "en_IN" }, { "code": " |
...
PT_NOTIF_WF_UPDATE_NONE", "message": " |
...
Dear {OWNER_NAME}, Your property with property-id {PROPERTYID} has been {updated/created}. You can view your property on the link given below - {PTURL} Thank you", "module": "rainmaker-pt", "locale": "en_IN" } |
...
] |