DIGIT Docs
  • DIGIT Knowledge Base
  • Local Governance
  • Introducing NalJalSeva
  • 🚰NalJal
    • Approach
    • Demo Video
    • Value Proposition
  • 🌊Product Specifications
    • Features & Functions
    • Workflows
      • Login & Forgot Password
      • View Consumer
      • Update Consumer
      • Water Charges
      • Generate Bulk Demand & Raise Bills
      • Generate Bills For Metered Connections
      • Collect Revenue Offline
      • Add Expense
      • Update Expense
      • Send SMS Notifications
      • Edit User Profile
      • View Household Register
      • View Tabular Dashboard For Expense
      • Download Bills & Receipts
      • View & Download Reports
      • HRMS
        • Login, Reset & Forgot Password
        • Create Employee
        • Update Employee
        • Search Employee
        • Search Department Employee
        • Edit Scheme Rate Master
        • Edit Penalty Master
        • State Dashboard
        • Rollout Dashboard
        • Rate Dashboard
    • User Manual
      • Common Functions
        • Login To App
        • Edit Profile & Change Password
      • Division User
        • View & Edit Consumer
      • Village Water & Sanitation Committee (VWSC) User
        • Generate Bills
        • Search Consumer & Generate Payment
        • Record & Modify Expense Bill
        • View Dashboards
      • State User
  • Reference Implementations
    • Punjab
      • mGramSeva
  • ⚒️NalJalSeva Platform
    • Architecture
    • Technology
  • 💧Setup NalJalSeva
    • Setup NalJalSeva
      • Install AWS
        • Setup AWS Account
        • Purchase Certificate
        • Setup Git Repository
        • Configure Domain Name
        • Create Git Account In The Client Name
      • Enable Application Permissions
      • Get Started With DIGIT
      • Create Users
      • Load Employees For NalJalSeva
      • Load Consumers For NalJalSeva
      • Configure Module Localisation
      • Update Master Rate
      • Create Consumer API
      • Create User API
      • Configure SMS Template
      • Configure Master Data Management System
      • Create New Tenant
      • Create Workflow
    • Configure NalJalSeva
      • Configure Core Services
      • Configure Backend Services
        • Advance Changes
        • Apportion
        • Billing
        • Dashboard
        • eChallan
        • iFIX Adapter
          • Push Events To iFIX Adapter
        • Penalty Changes
        • Property
        • Reindexing
        • Rollout Dashboard
        • Scheduler
        • User
        • User OTP
        • User Events
        • Vendor Registry
        • Water
        • Water Calculator
      • Configure UI Screens
        • UI Design
        • Select Language
        • Login
        • Change Password
        • Edit Profile
        • Home Page
        • Forgot Password
        • Update Password
        • Generate Bill
        • Search Connection
        • Consumer Screens
          • Create Consumer
          • Update Consumer
        • Expense Screens
          • Add Expense
          • Search Expense Bills
          • Modify Expenses
        • Dashboards Screens
          • Monthly Dashboard
          • Collections Dashboard
          • Expenditure Dashboard
        • Collect Payment
        • Consumer Feedback
        • Household Register
        • UI Mockup Screens
      • Update App
    • Integration Details
      • Integrate Firebase Analytics
      • Integrate Bluetooth Thermal Printer
      • Integration Testing
      • Integration Testing With Github Actions
    • Go Live
Powered by GitBook

All content on this page by eGov Foundation is licensed under a Creative Commons Attribution 4.0 International License.

On this page
  • Pre-requisites
  • Key Functionalities
  • Configuration Details
  • Persister File Configuration
  • Workflow Configurations
  • Integration Details
  • Integration Scope
  • Integration Benefits
  • Integration Steps
  • Reference Docs
  • Doc Links
  • API LIST

Was this helpful?

Export as PDF
  1. Setup NalJalSeva
  2. Configure NalJalSeva
  3. Configure Backend Services

Property

One of the major applications of the eGov stack is that it helps municipalities and citizens handle property tax payments and other related functions on the property such as assessments, mutation, and so on.

Pre-requisites

  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 the demand-based systems

  6. The following services should be up and running:

    • user

    • MDMS

    • Persister

    • Location

    • Localization

    • Id-Gen

    • Billing-service

    • URL-shortener

Key Functionalities

The Property Service provides multiple functionalities starting from serving as a central repository where property information is registered for reference of citizens and other municipality-provided services such as water connection and sewerage management. An assessment can be done to calculate and pay tax on the property. The different services provided by the property services are -

  • Property Registry

  • Assessment

  • Mutation

  • Bifurcation

  • Consolidation

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, and searched followed by the process of Mutation and Assessment.

  • The same entry in the registry can be referred to by other modules for various business purposes (Water charges).

Configuration Details

Persister File Configuration

Workflow Configurations

Each flow in the property has a workflow associated with it, which can be controlled by following configurations.

The Boolean field can enable/disable Workflow - the same field controls the update and creates the workflow.

name
value
description

is.workflow.enabled

true/false

enable disbale workflow

PT.CREATE

the name should match the config name in the workflow businessservice JSON

PT.LEGACY

PT.UPDATE

Workflow configuration for a property is created if the source is from the WATER CONNECTION module.

{
 "tenantId": "pb",
 "moduleName": "PropertyTax",
 "PTWorkflow":[
     {
         "businessService":"PT.CREATEWITHWNS",
         "initialAction":"OPEN",
         "inWorkflowStatusAllowed":false,
         "enable":false
     },
     {
      "businessService":"PT.CREATE",
      "initialAction":"open",
      "inWorkflowStatusAllowed":true,
      "enable":true
  }
     
 ]
}

Use Case 1, which involves property creation from the Water and Sewerage module, necessitates a single-step workflow. In the MDMS file mentioned above, ensure that the businessService with PT.CREATEWITHWNS object is enabled, allowing the field to be set as true. Property creation from the Water and Sewerage module will feature a one-step workflow, for properties in an ACTIVE state.

Fields in the above MDMS file:

MDMS Fields
Description

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. If this field is true then for that particular use case, the property with “inWorkflow” status can be use with water and sewerage connection creation and vice versa

enable

If this filed is set as true, then the other fields associate with the particular object is use for property creation.

Note: Each object mentioned above represents a specific use case outlined in this ticket. Therefore, only one object (use case) enable field should be set to true at any given time.

Sample workflow config for use case 1 where property creation is from water and sewerage module with one-step workflow.

{
    "BusinessServices": [
      {
        "tenantId": "pb",
        "businessService": "PT.CREATEWITHWNS",
        "business": "PT",
        "businessServiceSla": null,
        "states": [
          {
            "sla": null,
            "state": null,
            "applicationStatus": "INWORKFLOW",
            "docUploadRequired": false,
            "isStartState": true,
            "isTerminateState": false,
            "isStateUpdatable": false,
            "actions": [
              {
                "action": "OPEN",
                "nextState": "INITIATED",
                "roles": [
                  "CITIZEN",
                  "WS_CEMP",
                  "SW_CEMP"
                ]
              }
            ]
          },
          {
            "sla": null,
            "state": "INITIATED",
            "applicationStatus": "INWORKFLOW",
            "docUploadRequired": false,
            "isStartState": true,
            "isTerminateState": false,
            "isStateUpdatable": true,
            "actions": [
              {
                "action": "SUBMIT",
                "nextState": "APPROVED",
                "roles": [
                  "EMPLOYEE",
                  "CITIZEN",
                  "SW_CEMP",
                  "WS_CEMP"
                ]
              },
              {
                "action": "BACK",
                "nextState": "INWORKFLOW",
                "roles": [
                  "EMPLOYEE",
                  "CITIZEN",
                  "SW_CEMP",
                  "WS_CEMP"
                ]
              }
            ]
          },
          {
            "sla": null,
            "state": "INWORKFLOW",
            "applicationStatus": "INWORKFLOW",
            "docUploadRequired": false,
            "isStartState": true,
            "isTerminateState": false,
            "isStateUpdatable": true,
            "actions": [
              {
                "action": "SUBMIT",
                "nextState": "APPROVED",
                "roles": [
                  "EMPLOYEE",
                  "CITIZEN",
                  "SW_CEMP",
                  "WS_CEMP"
                ]
              }
            ]
          },
          {
            "sla": null,
            "state": "APPROVED",
            "applicationStatus": "ACTIVE",
            "docUploadRequired": false,
            "isStartState": false,
            "isTerminateState": true,
            "isStateUpdatable": false,
            "actions": null
          }
        ]
      }
    ]
  }

Sample workflow config - (The same PT.CREATE can be used for update workflow also since both involve the same functionality)

 {
  "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": "PT.CREATE",
    "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": "OPEN",
                    "roles": [
                        "CITIZEN",
                        "EMPLOYEE"
                    ]
                }
            ]
        },
        {
            "tenantId": "pb",
            "sla": null,
            "state": "OPEN",
            "applicationStatus": "INWORKFLOW",
            "docUploadRequired": false,
            "isStartState": true,
            "isTerminateState": false,
            "actions": [
                {
                    "tenantId": "pb",
                    "action": "VERIFY",
                    "nextState": "DOCVERIFIED",
                    "roles": [
                        "PT_DOC_VERIFIER"
                    ]
                },
                {
                  "tenantId": "pb",
                  "action": "REJECT",
                  "nextState": "REJECTED",
                  "roles": [
                      "PT_DOC_VERIFIER"
                  ]
              },
              {
                "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

{
    "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 notifications 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": "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_WF_MT_OPEN",
            "message": "Dear {OWNER_NAME}, Your application to edit ownership details of property ID {PROPERTYID} has been submitted successfully. Your application no. for future reference is {APPID}. You can track your application on the link given below - {MTURL} Thank you",
            "module": "rainmaker-pt",
            "locale": "en_IN"
        },
        {
            "code": "PT_NOTIF_WF_MT_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_MT_PAYMENT_PENDING",
            "message": "Dear {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_NOTIF_WF_MT_PAID",
            "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",
            "locale": "en_IN"
        },
        {
            "code": "PT_NOTIF_WF_MT_APPROVED",
            "message": "Dear {OWNER_NAME}, Your property ownership has been changed as per the application no. {APPID} for property {PROPERTYID}. You can download your mutation certificate on the below link - {MTURL} Thank you",
            "module": "rainmaker-pt",
            "locale": "en_IN"
        },
        {
            "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"
        }
    ]

Configs in App.props

name
value

egov.idgen.ack.format

PB-AC-[cy:yyyy-MM-dd]-[SEQ_EG_PT_ACK]

egov.idgen.mutation.format

PB-MT-[CITY]-[SEQ_EG_PT_MUTATION]

egov.idgen.assm.format

PB-AS-[cy:yyyy-MM-dd]-[SEQ_EG_PT_ASSM]

egov.idgen.ptid.format

PB-PT-[cy:yyyy-MM-dd]-[SEQ_EG_PT_PTID]

citizen.allowed.search.params

accountId,ids,propertyDetailids,mobileNumber,oldpropertyids

employee.allowed.search.params

accountId,ids,propertyDetailids,mobileNumber,oldpropertyids

Integration Details

Integration Scope

Property service can be integrated with any organization or system that wants to maintain a record of the property and collect taxes with ease.

Integration Benefits

  • Easy to create and simple process of self-assessment to avoid the hassle.

  • Helps maintain property data which can be used in the integration of other essential services like asset management, water connection and so on.

  • provides additional functionalities like mutation and assessment of properties.

Integration Steps

  1. Customers can create a property using the /property/_create

  2. Search the property using /property/_searchendpoint

  3. /property/_update endpoint to update the property demand as needed.

  4. Mutation can be carried out with the help of /property/_update itself, no extra API is required.

Reference Docs

Doc Links

Title
Link

USER Service

url-shortening

MDMS

Billing-service

Location

Workflow

Persister

Localization

Id-Gen service

API LIST

Title
Link

/Property/_create

/Property/_update

/property/_search

PreviousPenalty ChangesNextReindexing

Last updated 10 months ago

Was this helpful?

MDMS CONFIG:

The persister file configuration for property services can be found in the Config repo of eGov Git, which needs to be added in the persister service -

For the creation of property from the water and sewerage module, as per the use case mentioned in this , a different workflow configuration is used. For each use case, to identify which workflow to use can be identified from this .

💧
https://github.com/egovernments/egov-mdms-data/tree/DEV/data/pb/PropertyTax
property-services-registry.yml
ticket
mdms file
property.workflow.name
property.legacy.entry.workflow.name
property.update.workflow.name
https://digit-discuss.atlassian.net/wiki/spaces/DD/pages/669450371
https://digit-discuss.atlassian.net/wiki/spaces/DD/pages/896892936
https://digit-discuss.atlassian.net/wiki/spaces/DD/pages/723189807
https://digit-discuss.atlassian.net/wiki/spaces/DD/pages/1620672528
https://digit-discuss.atlassian.net/wiki/spaces/DD/pages/664338482
https://digit-discuss.atlassian.net/wiki/spaces/DD/pages/664174657
https://www.getpostman.com/collections/02d01e7b46c79c140863
https://www.getpostman.com/collections/02d01e7b46c79c140863
https://www.getpostman.com/collections/02d01e7b46c79c140863