Residential Construction Permit Service Configuration
Description
Construction or renovation of buildings is regulated by Municipal Body in India. One must get permission from the ULB prior to construction. This process involves submitting the building plan to ULB along with other documents, ULB verifies the plan with other documents and approves the construction. The document which authorizes the construction is called “Permit Order” One must have this permit order with him till the completion of construction. ULB officials will inspect various stages of construction and make sure it is in compliance with the plan. When construction completed, after inspection Secretary provides a “Completion certificate” and finally will provide an “Occupancy Certificate”. This entire process is known as “Building Plan Approval”.
Functionality
This section covers the high-level details of the functionalities available in the Building Plan Application system.
Centralized login page for citizen, official and stakeholders
Citizen functionalities
Online application submission - New construction
Occupancy certificate request
FieldInspection Report Capture
Pay fee online and generate permit order online
Inspection of applications and online status
Configurable workflow
Auto fee calculation
Online and offline payment collection
Rejection process
Revocation process
Configurable functionalities
System Requirements
Knowledge of Java/J2EE(preferably Java 8 version)
Knowledge of Spring Boot and spring-boot microservices
Knowledge of Git or any version control system
Knowledge of RESTful Web services
Knowledge of the Lombok library will helpful
knowledge of eGov-mdms service, eGov-persister, eGov-idgen, eGov-sms, eGov-email,eGov-user, eGov-localization, eGov-workflow-service,dcr, land-services, bpa-calculator will be helpful
Setup and usage
The Application is present among the municipal services group of applications available in the eGov-services git repository with the folder name bpa-services. The spring boot application needs the 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 the 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
API Information
Please refer to Swagger API for YAML file details. Link - API Specs.
Application.properties File Information
Here we are listing the configs apart from dependent service host, URLs, DB and Flyway configs.
kafka topics persister configs for eGov persister to save and update BPA Data
persister.save.buildingplan.topic=save-bpa-buildingplan
persister.update.buildingplan.topic=update-bpa-buildingplan
persister.update.buildingplan.workflow.topic=update-bpa-workflow
persister.update.buildingplan.adhoc.topic=update-bpa-adhoc-buildingplan
Receipt kafka topics where BPA application listens to move the application Status after payment completion
kafka.topics.receipt.create=egov.collection.payment-create
Config for Demand Business service codes for different fees to be paid for BPA
egov.receipt.businessservice=
BPA.NC_APP_FEE := Building Plan Approval Application Fee
BPA.NC_SAN_FEE := Building Plan Approval Sanction Fee
BPA.LOW_RISK_PERMIT_FEE := Building Plan Approval Low Risk Permit Fee
BPA.NC_OC_APP_FEE := Building Plan Approval Occupancy Certificate Application Fee
BPA.NC_OC_SAN_FEE := Building Plan Approval Occupancy Certificate Sanction Fee
Application and Permit Number Formats
egov.idgen.bpa.applicationNum.format=PB-BP-[cy:yyyy-MM-dd]-[SEQ_EG_BP_APN]
egov.idgen.bpa.permitNum.format=PB-BP-[cy:yyyy-MM-dd]-[SEQ_EG_BP_PN]
SMS Notification Topic to push the SMS and Notification’s to be sent by BPA module
kafka.topics.notification.sms=egov.core.notification.sms
Payment Notification Config
egov.ui.app.host=https://egov-micro-dev.egovernments.org
egov.usr.events.create.topic=persist-user-events-async
egov.usr.events.pay.link=citizen/otpLogin?mobileNo=$mobile&redirectTo=egov-common/pay?consumerCode=$applicationNo&tenantId=$tenantId&businessService=$businessService
egov.usr.events.pay.code=PAY
List of Application Statuses on which payment notification to be sent
egov.usr.events.pay.triggers=PENDING_SANC_FEE_PAYMENT,PENDING_APPL_FEE,PENDING_FEE
Validity of the permit order generated in no of months
egov.bpa.validity.date.in.months=36
Workflow code for the combination of applicationType , ServiceType
appSrvTypeBussSrvCode={"BUILDING_PLAN_SCRUTINY":{"NEW_CONSTRUCTION":"BPA,BPA_LOW"},"BUILDING_OC_PLAN_SCRUTINY":{"NEW_CONSTRUCTION":"BPA_OC"}}
Application Status on which SKIP_PAYMENT action to be considered
egov.bpa.skippayment.status=PENDING_APPL_FEE,PENDING_SANC_FEE_PAYMENT,PENDING_FEE
Business Service Code for WorkflowCode and Application Status
workflowStatusFeeBusinessSrvMap={"BPA":{"PENDING_APPL_FEE":"BPA.NC_APP_FEE","PENDING_SANC_FEE_PAYMENT":"BPA.NC_SAN_FEE"},"BPA_LOW":{"PENDING_FEE":"BPA.LOW_RISK_PERMIT_FEE"},"BPA_OC":{"PENDING_APPL_FEE":"BPA.NC_OC_APP_FEE","PENDING_SANC_FEE_PAYMENT":"BPA.NC_OC_SAN_FEE"}}
NOC application Integration configs
Config to validate the status of applicable noc’s status to allow the application to move forward from NOC_VERIFICATION_PENDING Workflow State
validate.required.nocs.statuses=APPROVED,AUTO_APPROVED,REJECTED,VOIDED
NOC workflow initiate action code to initiate the workflow of the NOC when the appliation reachers the respective nocTrigerState
egov.noc.initiate.action=INITIATE
NOC workflow void action code to void the applicable NOC’s, when the application moved to REJECTED State
egov.noc.void.action=VOID
NOC workflow action goes for AutoAprove to auto-approve offline NOC , while moving from NOC_VERIFICATION_PENDING to the next state
egov.noc.autoapprove.action=AUTO_APPROVE
External API References
egov-user - (Manage user)
tl-services - Stakeholder Registration (Registration process of Stakeholder is handled by this service)
egov-user-event (What’s New and Events)
egov-filestore (To store the documents uploaded by the user)
egov-idgen (To generate the application No, Permit No)
egov-indexer (To index the BPA data)
egov-localization (To use the localized messages)
egov-location (To store the address locality)
egov-mdms (Configurations/master data used in the application is served by MDMS)
egov-notification-sms (Service to send SMS to the users involved in the application)
egov-persister (Helps to persist the data)
egov-searcher (Search query used to simplify the search)
egov-workflow-v2 (Workflow configuration for different BPA application is configured)
pdf-service (Receipt’s, permit order etc.. and prepared)
billing-service (Create demands and bills for the fees to be collected)
collection-services (Create a receipt for the payment received for the bills)
bpa-calculator (Calculates the fees to be collected at different stages)
land-services (land information related to BPA application is stored)
dcr-services (get and validate EDCR data)
noc-services (NOC application)
Configuration
BPA Specific Mdms configuration
Under the data/<state code> folder you can find the BPA which has all the MDMS JSON’s
master-config.json for BPA
MDMS Details
MDMS Name
MDMS Path
Description
Example
ServiceType
Values for ServiceType Dropdown
NA
Application Type
Values for Application Type Dropdown
NA
Occupancy Type
Values for Occupancy Type Dropdown
NA
SubOccupancy Type
Values for SubOccupancy Type Dropdown
NA
DocumentTypeMapping
List’s out the documents required at the given stage of the application for Given ApplicationType, ServiceType, RiskType and WorklowState.
In the docTypes we have
Order - Indicates the sequence of the document
allow - Indicates allow to edit
required - Mandatory at given stage
{ "applicationType": "BUILDING_PLAN_SCRUTINY", "ServiceType": "NEW_CONSTRUCTION", "RiskType": "LOW", "WFState": "INPROGRESS", "docTypes": [ { "code": "APPL.IDENTITYPROOF", "required": false, "allow": "false", "order": 1 }, { "code": "APPL.ADDRESSPROOF", "required": true, "allow": "true", "order": 2 } ]}
Above example indicates Documents from the common-master documentTypes starting with code(s) in the above example should be displayed in BPA Application UI when the Application of ApplicationType -BUILDINGPLAN_SCRUTINY ServiceType- NEW_CONSTRUCTION RiskType- LOW Workflow State - INPROGRESS Out of this, IDENTITY documentType is not allowed to upload in this stage and not mandatory. ADDRESSPROOF documentType is allowed to upload in this stage and mandatory to move forward from this stage.
CalculationType
Used by bpa-calculator Service which Defines the Fee to be collected for Given ApplicationType, ServiceType, RiskType and feeType
{ "applicationType": "BUILDING_PLAN_SCRUTINY", "serviceType": "ALL", "riskType": "LOW", "feeType": "SanctionFee", "amount": 500 }, { "applicationType": "BUILDING_PLAN_SCRUTINY", "serviceType": "NEW_CONSTRUCTION", "riskType": "ALL", "feeType": "ApplicationFee", "amount": 120 }, { "applicationType": "BUILDING_PLAN_SCRUTINY", "serviceType": "NEW_CONSTRUCTION", "riskType": "LOW", "feeType": "Low_ApplicationFee", "amount": 100 },
From the above example
indicates SanctionFee is Rs 500 for applicationType=BuildingPlanScrutiny, RiskType=LOW and any ServiceType
indicates applicationFee is Rs 120 for applicationType=BuildingPlanScrutiny, ServiceType=NEW_CONSTRUCTION and any RiskType
indicates applicationFee is Rs 100 for applicationType=BuildingPlanScrutiny, ServiceType=NEW_CONSTRUCTION and RiskType=LOW
RiskTypeComputation
Helps to Defines the RiskType of the Application based on the building Height and plotArea received from the EDCR System
{"fromPlotArea": 500, "toPlotArea": 9999999999, "fromBuildingHeight": 15, "toBuildingHeight":9999999999, "riskType": "HIGH", "note": "(Heigh 15 Mt or More) or ( Plot area >=800 sq.Mt)" }
CheckList
Used to Define the List of Questions and Documents to be attached on Field Inspection Pending Stage by Field Inspector.
The Example indicates
Four Questions with fieldType “YES/NO/NA“ ( Which indicates that field of type dropdown with Yes, NO and NA options) should be asked.
Readable question will be available in
2. Used to configure the conditions for Approval Stage
Condition checkboxes to be shown before approve which can be considered as Conditions for Approval
Field Inspection Questions & Documents
{ "applicationType": "BUILDING_PLAN_SCRUTINY", "ServiceType": "NEW_CONSTRUCTION", "RiskType": "LOW", "WFState": "FIELDINSPECTION_PENDING", "questions": [ { "question": "RIVER_EXISTS_ON_SITE", "fieldType": "YES/NO/NA", "active": true }, { "question": "TREE_EXISTS_ON_SITE", "fieldType": "YES/NO/NA", "active": true }, { "question": "PLAN_AS_PER_THE_SITE", "fieldType": "YES/NO/NA", "active": true }, { "question": "ROADWIDTH_AS_PER_THE_PLAN", "fieldType": "YES/NO/NA", "active": true } ], "docTypes": [ { "code": "FI.FIR", "required": true }, { "code": "FI.SINS", "required": true }, { "code": "FI.SISS", "required": true }, { "code": "FI.SIES", "required": true }, { "code": "FI.SIWS", "required": true } ] }
2. Conditions for Approval Stage { "applicationType": "BUILDING_PLAN_SCRUTINY", "ServiceType": "NEW_CONSTRUCTION", "RiskType": "HIGH", "WFState": "PENDINGAPPROVAL", "conditions": [ "The development shall be undertaken strictly according to plans enclosed with necessary permission endorsement.", "The land in question must be in lawful ownership and peaceful possession of the applicant.", "The permission is valid for period of X(this is the validity period in years) years with effect from the date of issue.", "Permission accorded under the provision cannot be construed as evidence in respect of right title interest of the plot over which the plan is approved.", "Any dispute arising out of land record or in respect of right/ title/ interest after this approval the plan shall be treated automatically cancelled during the period of dispute.", "Adequate safety precaution shall be provided at all stages of construction for safe guarding the life of workers and any public hazard.", "The land/ Building shall be used exclusively for the above occupancy for which you applied and the uses shall not be changed to any other use without prior approval of this Authority.", "Adequate space mentioned in the approved plan shall be kept open for parking and no part of it will be built upon.", "The land over which construction is proposed is accessible by an approved means of access with sufficient road width." ] }
NocTypeMapping
Mapping of the NOC Types applicable for BPA ApplicationType, ServiceType and riskType
From the Example
AIRPORT_AUTHORITY, NOC_FIRE NOC’s are applicable for applicationType → BULDING_PLAN_SCRUTINY
serviceType-> NEW_CONSTRUCTION
riskType-> ALL ( Any )
NocTypes-> list out the NOC Type object
and NOC Applications get created when BPA is created by the NOC’s Workflow would be initiated when the BPA application Status is equl to the nocTriggerState configured. ( According to this example, when the application status changes to Citizen Approval Pending, all the NOc’s workflow would be initiated)
{ "applicationType": "BUILDING_PLAN_SCRUTINY", "serviceType": "NEW_CONSTRUCTION", "riskType": "ALL", "nocTriggerState": "CITIZEN_APPROVAL_INPROCESS", "nocTypes": [ { "type": "AIRPORT_AUTHORITY", "required": true }, { "type": "FIRE_NOC", "required": false } ] }
Access MDMS Config
Action Test : URL Actions adding
Access to the Roles for the above Actions