Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
This section contains all technical documents related to DIGIT stack.
The key services include -
Core Services is one of the key DIGIT components. Browse through this section to learn more about key configuration and integration details of these core services.
A core application which provides location details of the tenant for which the services are being provided.
Before you proceed with the documentation, make sure the following pre-requisites are met -
Java 8
PSQL server is running and database is created
Knowledge of egov-mdms service
egov-mdms service is running and all the required mdms master are loaded in it
The location information is also known as boundary data of ULB
Boundary data can be of different hierarchies ADMIN, ELECTION hierarchy which is defined by the Administrators, Revenue hierarchy defined by the Revenue department.
The election hierarchy has the locations divided into several types like zone, election ward, block, street and locality. The Revenue hierarchy has the locations divided into a zone, ward, block and locality.
The model which defines the localities like zone, ward and etc is boundary object which contains information like name, lat, long, parent or children boundary if any. The boundaries come under each other in a hierarchy like a zone contains wards, ward contains blocks, a block contains locality. The order in which the boundaries are contained in each other will differ based on the tenants.
Environment Variables
Description
egov.services.egov_mdms.hostname
Host name for MDMS service.
egov.services.egov_mdms.searchpath
MDMS Search URL.
egov.service.egov.mdms.moduleName
MDMS module which contain boundary master.
egov.service.egov.mdms.masterName
MDMS master file which contain boundary detail.
Add/Update the mdms master file which contain boundary data of ULB’s.
Add Role-Action mapping for egov-location API’s.
Deploy/Redeploy the latest version of egov-mdms service.
Fill the above environment variables in egov-location with proper values.
Deploy the latest version of egov-location service.
The boundary data has been moved to mdms from the master tables in DB. The location service fetches the JSON from mdms and parses it to the structure of boundary object as mentioned above. A sample master would look like below.
Attribute Name
Description
tenantId
The tenantId (ULB code) for which the boundary data configuration is defined.
moduleName
The name of the module where TenantBoundary master is present.
TenantBoundary.hierarchyType.code
Unique code of the hierarchy type.
TenantBoundary.hierarchyType.name
Unique name of the hierarchy type.
TenantBoundary.boundary.id
Id of boundary defined for particular hierarchy.
boundaryNum
Sequence number of boundary attribute defined for the particular hierarchy.
name
Name of the boundary like Block 1 or Zone 1 or City name.
localname
Local name of the boundary.
longitude
Longitude of the boundary.
latitude
Latitude of the boundary.
label
Label of the boundary.
code
Code of the boundary.
children
Details of its sub-boundaries.
The egov-location API’s can be used by any module which needs to store the location details of the tenant.
Get the boundary details based on boundary type and hierarchy type within the tenant boundary structure.
Get the geographical boundaries by providing appropriate GeoJson.
Get the tenant list in the given latitude and longitude.
To integrate, host of egov-location should be overwritten in helm chart.
/boundarys/_search should be added as the search endpoint for searching boundary details based on tenant Id, Boundary Type, Hierarchy Type etc.
/geography/_search should be added as the search endpoint .This method handles all requests related to geographical boundaries by providing appropriate GeoJson and other associated data based on tenantId or lat/long etc.
/tenant/_search should be added as the search endpoint. This method tries to resolve a given lat, long to a corresponding tenant, provided there exists a mapping between the reverse geocoded city to tenant.
The MDMS Tenant boundary master file should be loaded in MDMS service.
Title
Link
Local setup
Link
/boundarys/_search
/geography/_search
/tenant/_search
Please refer to the Swagger API contract for egov-location service to understand the structure of APIs and to have a visualisation of all internal APIs.
User service is responsible for user data management and providing functionality to login and logout into Digit system
Before you proceed with the configuration, make sure the following pre-requisites are met -
Java 8
Kafka server is up and running
Encryption and MDMS services are running
PSQL server is running and database
Redis is running
Store, update and search user data
Provide authentication
Provide login, logout functionality into DIGIT platform
Store user data PIIs in encrypted form
Setup latest version of egov-enc-service and egov-mdms- service
Deploy the latest version of egov-user service
Add Role-Action mapping for API’s
Following application properties file in user service are configurable.
Property
Value
Remarks
egov.user.search.default.size
10
default search record number limit
citizen.login.password.otp.enabled
true
whether citizen login otp based
employee.login.password.otp.enabled
false
whether employee login otp based
citizen.login.password.otp.fixed.value
123456
fixed otp for citizen
citizen.login.password.otp.fixed.enabled
false
allow fixed otp for citizen
otp.validation.register.mandatory
true
whether otp compulsory for registration
access.token.validity.in.minutes
10080
validity time of access token
refresh.token.validity.in.minutes
20160
validity time of refresh token
default.password.expiry.in.days
90
expiry date of a password
account.unlock.cool.down.period.minutes
60
unlock time
max.invalid.login.attempts.period.minutes
30
window size for counting attempts for lock
max.invalid.login.attempts
5
max failed login attempts before account is locked
egov.state.level.tenant.id
pb
User data management and functionality to login and logout into Digit system using OTP and password.
Providing following functionality to citizen and employee type users
Employee:
User registration
Search user
Update user details
Forgot password
Change password
User role mapping(Single ULB to multiple roles)
Enable employee to login into DIGIT system based on a password.
Citizen:
Create user
Update user
Search user
User registration using OTP
OTP based login
To integrate, host of egov-user should be overwritten in the helm chart.
Use /citizen/_create and /users/_createnovalidate endpoints for creating users into the system
Use /v1/_search and /_search endpoints to search users in the system depending on various search parameters
Use /profile/_update for partial update and /users/_updatenovalidate for update
Use /password/nologin/_update for otp based password reset and /password/_update for logged in user password reset
Use /user/oauth/token for generating token, /_logoutfor logout and /_details for getting user information from his token
Link
/citizen/_create
/users/_createnovalidate
/_search
/v1/_search
/_details
/users/_updatenovalidate
/profile/_update
/password/_update
/password/nologin/_update
/_logout
/user/oauth/token
The objective of PDF generation service is to bulk generate pdf as per requirement.
Before you proceed with the documentation, make sure the following pre-requisites are met -
Install npm.
Kafka server is up and running.
egov-persister service is running and has pdf generation persister config path added in it.
PSQL server is running and the database is created to store filestore id and job id of generated pdf.
Provide a common framework to generate PDF.
Provide flexibility to customise the PDF as per the requirement.
Provide functionality to add an image, Qr Code in PDF.
Provide functionality to generate pdf in bulk.
Provide functionality to specify a maximum number of records to be written in one PDF.
Environment Variables
Description
MAX_NUMBER_PAGES
Maximum number of records to be written in one PDF
DATE_TIMEZONE
Date timezone which will be used to convert epoch timestamp into date (DD/MM/YYYY)
DEFAULT_LOCALISATION_LOCALE
Default value of localisation locale
DEFAULT_LOCALISATION_TENANT
Default value of localisation tenant
DATA_CONFIG_URLS
File path/URL'S of data config
FORMAT_CONFIG_URLS
File path/URL'S of format config
Mustache.js: (https://github.com/janl/mustache.js/ ):- as templating engine to populate format as defined in format config, from request json based on mappings defined in data config
Create data config and format config for a PDF according to product requirement.
Add data config and format config files in PDF configuration
Add the file path of data and format config in the environment yml file
Deploy the latest version of pdf-service in a particular environment.
For Configuration details please refer to Customizing PDF Receipts & Certificates.
The PDF configuration can be used by any module which needs to show particular information in PDF format that can be print/downloaded by the user.
Functionality to generate PDFs in bulk.
Avoid regeneration.
Support QR codes and Images.
Functionality to specify the maximum number of records to be written in one PDF.
Uploading generated PDF to filestore and return filestore id for easy access.
To download and print the required PDF _create API has to be called with the required key (For Integration with UI, please refer to the links in Reference Docs)
Title
Link
Customizing PDF Receipts & Certificates
Steps for Integration of PDF in UI for download and print PDF
API Swagger Documentation
Link
pdf-service/v1/_create
pdf-service/v1/_createnosave
pdf-service/v1/_search
(Note: All the API’s are in the same postman collection, therefore, the same link is added in each row)
eGov Payment Gateway acts as a liaison between eGov apps and external payment gateways facilitating payments, reconciliation of payments and lookup of transactions' status'.
Before you proceed with the documentation, make sure the following pre-requisites are met -
Java 8
Kafka server is up and running
egov-persister service is running and has pg service persister config path added in it
PSQL server is running and the database is created to store transaction data.
Create or initiate a transaction, to make a payment against a bill.
Make payment for multiple bill details [multi module] for a single consumer code at once.
Transaction to be initiated with a call to the transaction/_create API, various validations are carried out to ensure the sanctity of the request.
The response includes a generated transaction id and a redirect URL to the payment gateway itself.
Various validations are carried out to verify the authenticity of the request and the status is updated accordingly. If the transaction is successful, a receipt is generated for the same.
Reconciliation is carried out by two jobs scheduled via a Quartz clustered scheduler.
Early Reconciliation job is set to run every 15 minutes [configurable via app properties], and is aimed at reconciling transactions which were created 15 - 30 minutes ago and are in PENDING state.
Daily Reconciliation job is set to run once per day and is aimed at reconciling all transactions that are in PENDING state, except for ones which were created 30 minutes ago.
Axis, Phonepe and Paytm payment gateways are implemented.
Additional gateways can be added by implementing the Gateway interface. No changes required to the core packages.
Following properties in the application.properties file in egov-pg-service has to be added and set to default value after integrating with the new payment gateway. In the below table properties for AXIS bank, payment gateway is shown the same relevant property needs to be added for other payment gateways.
Property
Remarks
axis.active
Bollean lag to set the payment gateway active/inactive
axis.currency
Currency representation for merchant, default(INR)
axis.merchant.id
Payment merchant Id
axis.merchant.secret.key
Secret key for payment merchant
axis.merchant.user
User name to access the payment merchant for transaction
axis.merchant.pwd
Password of the user tp access payment merchant
axis.merchant.access.code
Access code
axis.merchant.vpc.command.pay
Pay command
axis.merchant.vpc.command.status
commans status
axis.url.debit
Url for making payment
axis.url.status
URL to get the status of the transaction
Deploy the latest version of egov-pg-service
Add pg service persister yaml path in persister configuration
The egov-pg-service acts as communication/contact between eGov apps and external payment gateways.
Record of every transaction against a bill.
Record of payment for multiple bill details for a single consumer code at once.
To integrate, host of egov-pg-service should be overwritten in helm chart
/pg-service/transaction/v1/_create should be added in the module to initiates a new payment transaction, on successful validation
/pg-service/transaction/v1/_update should be added as the update endpoint to updates an existing payment transaction. This endpoint is issued only by payment gateways to update the status of payments. It verifies the authenticity of the request with the payment gateway and forward all query params received from a payment gateway
/pg-service/transaction/v1/_search should be added as the search endpoint for retrieving the current status of a payment in our system.
Title
Link
Swagger API Contract
Title
Link
/pg-service/transaction/v1/_create
/pg-service/transaction/v1/_update
/pg-service/transaction/v1/_search
/pg-service/gateway/v1/_search
(Note: All the API’s are in the same postman collection, therefore, the same link is added in each row)
The URL shortening service is used to shorten long URLs. There may be requirement when we want to avoid sending very long urls to the user via SMS, Whatsapp etc, this service compresses the URL.
Before you proceed with the configuration, make sure the following pre-requisites are met -
Prior Knowledge of Java/J2EE
Prior Knowledge of SpringBoot
Prior Knowledge of REST APIs and related concepts like path parameters, headers, JSON etc.
Compress long URLs.
Converted short URLs contains id, which is used by this service to identify and get longer URLs.
Deploy latest version of URL Shortening service
Receive long urls and converts them to shorter urls. Shortened urls contains urls to endpoint mentioned next. When user clicks on shortened URL, user is redirected to long URL.
This shortened urls contains path to this endpoint. The service uses id used in last endpoint to get long URL. As response the user is redirected to long URL.
PDFMake: (https://github.com/bpampuch/pdfmake - Connect to preview ):- for generating PDFs
Environment Variable
Description
host.name
Host name to append in short URL
db.persistance.enabled
The boolean flag to store the short URL in database when flag is set as TRUE.
Title
Link
Swagger API Contract
Local Setup
DIGIT offers key municipal services such as Public Grievance & Redressal, Trade License, Water & Sewerage, Property Tax, Fire NOC, and Building Plan Approval.
This section provides technical details about business service setup, configuration, deployment, and API integration.
Details coming soon...
Details will be updated soon...
DIGIT is API based Platform here each API is denoting to a DIGIT resource. Access Control Service (ACS) primary job is to authorise end-user based on their roles and provide access to the DIGIT platform resources. Access control functionality basically works based on below points:
Actions: Actions are events which are performed by a user. This can be an API end-point or Frontend event. This is MDMS master
Roles: Role are assigned to the user, a user can hold multiple roles. Roles are defined in MDMS masters.
Role-Action: Role actions are mapping b/w Actions and Roles. Based on role, action mapping access control service identifies applicable action for the role.
Before you proceed with the configuration, make sure the following pre-requisites are met -
Java 8
MDMS service is up and running
Serve the applicable actions for a user based on user role (To print menu three).
On each action which is performed by a user, access control looks at the roles for the user and validate actions mapping with the role.
Support tenant-level role-action. For instance, an employee from Amritsar can have a role of APPROVER for other ULB like Jalandhar and hence will be authorised to act as APPROVER in Jalandhar.
Deploy the latest version of Access Control Service
Deploy MDMS service to fetch the Role Action Mappings
Define the roles
Add the Actions (URL)
Add the role action mapping
(The details about the fields in the configuration can be found in the swagger contract)
Any microservice which requires authorisation can leverage the functionalities provided by access control service.
Any new microservice that is to be added in the platform won’t have to worry about authorisation. It can just add it’s role action mapping in the master data and Access Control Service will perform authorisation whenever API for the microservice is called.
To integrate with Access Control Service the role action mapping has to be configured(added) in the MDMS service.
The service needs to call /actions/_authorize API of Access Control Service to check for authorisation of any request
Title
Link
API Contract
Title
Link
Indexer service runs as a separate service. This service is designed to perform all the indexing tasks of the digit platform. The service reads records posted on specific kafka topics and picks the corresponding index configuration from the yaml file provided by the respective module. Objective of Indexer service are listed as below.
To provide a one stop framework for indexing the data to elasticsearch.
To create provision for indexing live data, reindexing from one index to the other and indexing legacy data from the datastore.
Before you proceed with the configuration, make sure the following pre-requisites are met -
Prior Knowledge of Java/J2EE
Prior Knowledge of SpringBoot
Prior Knowledge of Elasticsearch
Prior Knowledge of REST APIs and related concepts like path parameters, headers, JSON etc.
Prior Knowledge of Kafka and related concepts like Producer, Consumer, Topic etc.
Performs three major tasks namely: LiveIndex, Reindex and LegacyIndex.
LiveIndex: Task of indexing the live transaction data on the platform. This keeps the es data in sync with the db.
Reindex: Task of indexing data from one index to the other. ES already provides this feature, indexer does the same but with data transformation.
LegacyIndex: Task of indexing legacy data from the tables to ES.
Provides flexibility to index the entire object, a part of the object or an entirely different custom object all using one input json from modules.
Provides features for customizing index json by field mapping, field masking, data enrichment through external APIs and data denormalization using MDMS.
One stop shop for all the es index requirements with easy-to-write and easy-to-maintain configuration files.
Designed as a consumer to save API overhead. The consumer configs are written from scratch to have complete control over the consumer behaviour.
Step 1: Write configuration as per your requirement. Structure of the config file is explained later in the same doc.
Step 2: Check-in the config file to a remote location preferably github, currently we check the files into this folder https://github.com/egovernments/configs/tree/DEV/egov-indexer -for dev
Step 3: Provide the absolute path of the checked-in file to DevOps, to add it to the file-read path of egov-indexer. The file will be added to egov-indexer's environment manifest file for it to be read at start-up of the application.
Step 4: Run the egov-indexer app, Since it is a consumer, it starts listening to the configured topics and indexes the data.
For Indexer Configuration, please refer to the document in Reference Docs table given below.
a) POST /{key}/_index
Receive data and index. There should be a mapping with topic as {key} in index config files.
b) POST /_reindex
This is used to migrate data from one index to another index
c) POST /_legacyindex
This is to run LegacyIndex job to index data from DB. In the request body the URL of the service which would be called by indexer service to pick data, must be mentioned.
In legacy indexing and for collection-service record LiveIndex kafka-connect is used to do part of pushing record to elastic search. For more details please refer to document mentioned in document list.
One of the applications in the Digit core group of services aims to reduce the time spent by developers on writing codes to store and fetch master data ( primary data needed for module functionality ) which doesn’t have any business logic associated with them. Instead of writing APIs, creating tables in every different service to store and retrieve data that is seldom changed MDMS service keeps them at a single location for all modules and provides data on will with the help of no more than three lines of configuration.
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.
Advanced knowledge on how to operate JSON data would be an added advantage to understand the service.
Adds master data for usage without the need to create master data APIs in every module.
Reads data from GIT directly with no dependency on any database services.
Environment Variables
Description
egov.mdms.conf.path
The default value of folder where master data files are stored
masters.config.url
The default value of the file URL which contains master-config values
Deploy the latest version of Mdms-service
Add conf path for the file location
Add master config JSON path
The MDMS service provides ease of access to master data for any service.
No time spent writing repetitive codes with no business logic.
To integrate, host of egov-mdms-service should be overwritten in helm chart
egov-mdms-service/v1/_search should be added as the search endpoint for searching master data.
Mdms client from eGov snapshots should be added as mvn entity in pom.xml for ease of access since it provides mdms request pojos.
Title
Link
egov-mdms sample data
master-config.json
egov-mdms-service/v1/_search
Workflows are a series of steps that moves a process from one state to another state by actions performed by different kind of Actors - Humans, Machines, Time based events etc. to achieve a goal like onboarding an employee, or approve an application or grant a resource etc. The egov-workflow-v2 is a workflow engine which helps in performing these operations seamlessly using a predefined configuration.
Before you proceed with the documentation, make sure the following pre-requisites are met -
Java 8
Kafka server is up and running
egov-persister service is running and has workflow persister config path added in it
PSQL server is running and database is created to store workflow configuration and data
Always allow anyone with a role in the workflow state machine to view the workflow instances and comment on it
On the creation of workflow, it will appear in the inbox of all employees that have roles that can perform any state transitioning actions in this state.
Once an instance is marked to an individual employee it will appear only in that employee's inbox although point 1 will still hold true and all others participating in the workflow can still search it and act if they have necessary action available to them
If the instance is marked to a person who cannot perform any state transitioning action, they can still comment/upload and mark to anyone else.
Overall SLA: SLA for the complete processing of the application/Entity
State-level SLA: SLA for a particular state in the workflow
Environment Variables
Description
egov.wf.default.offset
The default value of offset in search
egov.wf.default.limit
The default value of limit in search
egov.wf.max.limit
The maximum number of records that are returned in search response
egov.wf.inbox.assignedonly
Boolean flag if set to true default search will return records assigned to the user only, if false it will return all the records based on the user’s role. (default search is the search call when no query params are sent and based on the RequestInfo of the call, records are returned, it’s used to show applications in employee inbox)
egov.wf.statelevel
Boolean flag set to true if a state-level workflow is required
Deploy the latest version of egov-workflow-v2 service
Add businessService persister yaml path in persister configuration
Add Role-Action mapping for BusinessService API’s
Overwrite the egov.wf.statelevel flag ( true for state level and false for tenant level)
Create businessService (workflow configuration) according to product requirements
Add Role-Action mapping for /processInstance/_search API
Add workflow persister yaml path in persister configuration
For Configuration details please refer to the links in Reference Docs
The workflow configuration can be used by any module which performs a sequence of operations on an application/Entity. It can be used to simulate and track processes in organisations to make it more efficient too and increase accountability.
Role-based workflow
An easy way of writing rule
File movement within workflow roles
To integrate, host of egov-workflow-v2 should be overwritten in helm chart
/process/_search should be added as the search endpoint for searching workflow process Instance object.
/process/_transition should be added to perform an action on an application. (It’s for internal use in modules and should not be added in Role-Action mapping)
The workflow configuration can be fetched by calling _search API to check if data can be updated or not in the current state
Title
Link
Configuring Workflows For New Product/Entity
Setting Up Workflows
API Swagger Documentation
Migration to Workflow 2.0
Title
Link
/businessservice/_create
/businessservice/_update
/businessservice/_search
/process/_transition
/process/_search
(Note: All the API’s are in the same postman collection, therefore, the same link is added in each row)
This service is used to issue a license to the user after verification. The service is designed in such a way that it can be used to serve different type of licenses. Currently used to issue trade licenses, perform stakeholder registration and issue lockdown pass. The service is integrated with workflow where we can define the steps for approval of the application. Once the application is approved the license is generated.
Before you proceed with the documentation, make sure the following pre-requisites are met -
Java 8
Kafka server is up and running
egov-persister service is running and has tl-services persister config path added in it
PSQL server is running and database is created
Used for license generations in trade licenses, stakeholder registration and issue lockdown pass
Define roles to applicants on successful application to access Building Plan Approval services at the time of stakeholder registration
Generate application number and license number
Support workflows
Provide notification on various status changes for an application
Add MDMS configs required for Trade License and BPA stakeholder registration and restart MDMS service
Deploy the latest version of tl-services service
Add tl-service persister yaml path in persister configuration and restart persister service
Add Role-Action mapping for API’s
Create businessService (workflow configuration) according to trade license and stakeholder registration
Add tl-service indexer yaml path in indexer service configuration and restart indexer service
Following application properties in the Trade License service are configurable.
Property
Value
Remarks
egov.idgen.tl.applicationNum.format
PB-TL-[cy:yyyy-MM-dd]-[SEQ_EG_TL_APL]
The format of the TL application number
egov.idgen.tl.licensenumber.format
PB-TL-[cy:yyyy-MM-dd]-[SEQ_EG_PT_LN]
The format of the TL license number
egov.idgen.bpa.applicationNum.format
PB-SK-[cy:yyyy-MM-dd]-[SEQ_EG_TL_APL]
The format of the Stake holder application number
egov.idgen.bpa.licensenumber.format
PB-SK-[cy:yyyy-MM-dd]-[SEQ_EG_PT_LN]
The format of the Stake holder license number
egov.tl.max.limit
100
Max number of records to be returned
citizen.allowed.search.params
tenantId, applicationNumber, limit, offset, licenseNumbers
The search parameters on which citizen can search
employee.allowed.search.params
tenantId, applicationNumber, applicationType, status, mobileNumber, fromDate, toDate, licenseNumbers, oldLicenseNumber, limit, offset
The search parameters on which employee can search
persister.save.tradelicense.topic
save-tl-tradelicense
The name of kafka topic on which create request is published
persister.update.tradelicense.topic
update-tl-tradelicense
The name of kafka topic on which update request is published
persister.update.tradelicense.workflow.topic
update-tl-workflow
The name of kafka topic on which update request is published
The trade-license service is currently used to issue trade licenses, perform stakeholder registration and issue lockdown pass.
Provide backend support for the different license registration process.
Mseva and SMS notifications on application status changes.
The elastic search index for creating visualizations and Dashboards.
Bpa Stakeholder registration provides new roles to the user to access the Building Plan Approval system.
Supports workflow which is configurable
To integrate, host of tl-services service should be overwritten in the helm chart.
{servicename}/_create/ _create should be added as the create endpoint for creating any license in the system
{servicename}/_search/ _search should be added as the search endpoint. This method handles all requests to search existing records depending on different search criteria
{servicename}/_update/ _update should be added as the update endpoint. This method is used to update fields in existing records or to update the status of the application based on workflow.
Title
Link
Local Setup
API Swagger Documentation (Trade License)
In all below endpoints if the service name is BPAREG it is treated as a stakeholder registration application and if it is TL or if it is absent then the application is treated as trade license application.
Stakeholder registration APIs:- https://www.getpostman.com/collections/d18b79ccfb69ee8bb526
Trade-License APIs:- https://www.getpostman.com/collections/99f98723c45f97024831
Link
{servicename}/_create, _create
This API is used to create an application for the license in the system. Whenever an application is created an application number is generated and assigned to the application for future reference.
{servicename}/_search, /_search
This API is used to search the applications in the system based on various search parameters like mobile number, the application number, status etc.
{servicename}/_update, _update
The _update API is used to update the application information or to forward the application from one state to another.
In the case of the stakeholder registration if the application reaches the last stage the role depending on the license type is given to the user.
{servicename}/{jobname}/_batch, /_batch
Searches trade licenses which are expiring and send a reminder SMS to owner's of the licenses
BPA application and BPA Occupancy Certificate application has Fee involved. Based on the Application Type, RiskType and ServiceType Fee to be calculated and generates a demand for the calculated amount for Payment. This service used to generate Application Fee, Sanction Fee, Low Application Permit Fee, Deviation Charges for BPA application and Occupancy Certificate Application.
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, bpa-services will be helpful.
bpa calculator services present in municipal services provide multiple functionalities like calculating Application Fee, Sanction Fee, Low Permit Fee, OC Deviation Charges, generating demands for a particular BPA, BPA OC applications, updating demands, The different functionalities provided by sewerage calculator services are:
The Application is present among the municipal services group of applications available in the eGov-services git repository with the folder name bpa-calculator. 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 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
Business service codes for
BPA High/Medium Risk Application Fee
egov.demand.appl.businessservice=BPA.NC_APP_FEE
BPA High/Medium Risk Sanction Fee
egov.demand.sanc.businessservice=BPA.NC_SAN_FEE
BPA Low Risk Permit Fee
egov.demand.lowriskpermit.businessservice=BPA.LOW_RISK_PERMIT_FEE
BPA OC Application Fee
egov.demand.oc.appl.businessservice=BPA.NC_OC_APP_FEE
BPA OC Sanction Fee
egov.demand.oc.sanc.businessservice=BPA.NC_OC_SAN_FEE
Tax Head Code for
BPA High/Medium Risk Application Fee
egov.appl.fee=BPA_APPL_FEES
BPA High/Medium Risk Sanction Fee
egov.sanc.fee= BPA_SANC_FEES
BPA Low Risk Sanction Fee
egov.low.sanc.fee= BPA_LOW_SANC_FEES
BPA Low Risk Application Fee
egov.low.appl.fee=BPA_LOW_APPL_FEES
BPA OC Application Fee
egov.oc.appl.fee=BPA_OC_APPL_FEES
BPA OC Sanction Fee
egov.oc.sanc.fee= BPA_OC_SANC_FEES
External Application references
dcr-services (Use Edcr data )
egov-mdms ( Configurations/master by MDMS )
billing-service ( Generate and update demands )
bpa-services (Get the bpa application data for fee calculation )
bpa-calculator/v1/_calculate End point to calculate the Fee and create Demand with the applicable businessService and TaxHeads
MDMS Name
Path
Description
Example Json
CalculationType
Used by bpa-calculator Service which Defines the Fee to be collected for Given ApplicationType, ServiceType, RiskType and feeType
2. Second Example defines the calculation logic to figure out the fee for the Service, considering the different parameters from EDCR information of the BPA.
ParameterPath indicates the EDCR Response Data path to get the data point.
from
Indicates the from value of the data point to be considered
to
Indicates the to value of the data point to be considered
MF
multiplication factor to be considered to multiple the datapoint value to calculate the value when data point value falls between from and to
UOM
UOM to be considered to multiple the datapoint value and MF to calculate the Fee when data point value falls between from and to
{ "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 }, { "applicationType": "BUILDING_OC_PLAN_SCRUTINY", "serviceType": "ALL", "riskType": "ALL", "feeType": "SanctionFee", "amount": 500, "calsiLogic": [ { "parameter": "builtuparea", "tolerancelimit": 10, "calculationType": "number", "deviation": [ { "from": 11, "to": 50, "MF": 1, "uom": 100 }, { "from": 51, "to": 100, "MF": 2, "uom": 150 }, { "from": 101, "to": 499, "MF": 3, "uom": 200 } ], "paramPath": "edcrDetail[0].planDetail.virtualBuilding.totalBuitUpArea" } ] }
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
Access MDMS Config
bpa-calculator cannot be accessed publicly, Only called by the bpa-calculator
Billing Service MDMS Config
BusinessService Config for Fee’s to be collected
Application Fee, Sanction Fee BPA High/Medium Risk
Application Fee, Sanction Fee for BPA Low Risk
Application Fee, Sanction Fee for BPA OC
TaxHead MDMS
Tax Head for BPA High/Medium Risk
TaxHead config for BPA Low Risk
TaxHead config for BPA OC
TaxPeriod MDMS Config
TaxPeriod MDMS for BPA High/Medium Risk
TaxPeriod MDMS for BPA Low Risk
TaxPeriod Config for BPA OC
NA
NA
NA
NA
NA
Public Grievances & Redressal (PGR) is a system that enables citizens to raise a complaint with the ULBs. A citizen can track the complaint, upload image related to the complaint, re-open the complaint if he/she is not satisfied and rate the service. This document contains the details about how to setup PGR service and describes the functionalities it provides
Before you proceed with the configuration, make sure the following pre-requisites are met -
Java 8
Kafka server is up and running
egov-persister service is running and has pgr-services persister config path added in it
PSQL server is running and database is created to store complaint data
(Optional) Indexer config for pgr-services is added in egov-indexer yaml paths to index the generated data. Index is required for data visualisation in Kibana or in DSS.
(Optional) Report config for pgr-services is added in Report service config paths. Required if reports are to be provided to the user.
Following services should be up and running:
egov-user
egov-workflow-v2
egov-perister
egov-localization
egov-notification-sms
egov-mdms
egov-idgen
egov-url-shortening
egov-hrms
A citizen can file, track and rate the complaint
A citizen can add image and comments related to the complaint
A citizen can re-open the complaint in a certain given period of time after resolution
ULB can setup the complaint workflow according to their requirements and staff capacity
ULB can track the SLA for resolving each complaint and can use it as a metric to streamline the process for resolving complaints
Department wise assignment of the complaint to the LME
Deploy the latest version of pgr-services
Add pgr-service-persister.yml file in config folder in git and add that path in persister. (The file path is to be added in environment yaml file in param called persist-yml-path )
If any Report Config is created, the config should be added to the config folder in git and that path should be added in Report service. (The file path is to be added in a file called “reportFileLocationsv1.txt” in Config folder)
If index is to be created add the indexer config path in indexer service. (The file path is to be added in environment yaml file in param called egov-indexer-yaml-repo-path)
Add master data in MDMS service with the module name as RAINMAKER-PGR. Following is some sample master data for the service:
Create businessService (workflow configuration) using the __/businessservice/_create. Following is the product configuration for PGR:
Using /localization/messages/v1/_upsert , add localisation (templates) for notification messages to be sent. Following are the product notification templates:
Add Role-Action mapping for the APIs in MDMS. Following are the required entries. They should be mapped to both CITIZEN and appropriate employee roles.
PGR service can be integrated with any organisation or system which wants to track customer queries or complaint. The organisations can customise the workflow depending on their product requirements.
Easy tracking and resolution of complaints
Configurable workflow according to client requirement
Customer can raise a complaint using the /requests/_create
.
Organisation or System can search the complaint using /requests/_searchendpoint
.
Once the complaint is raised the organisation or system can call /requests/_update
endpoint to move the application further in workflow until it gets resolved.
Title
Link
Workflow Technical Document
User Technical Document
Link
/requests/_create
/requests/_update
/requests/_search
/requests/_count
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 compliance with the plan. When construction completed, after inspection Secretary provides “Completion certificate” and finally will provide “Occupancy Certificate”. This entire process is known as “Building Plan Approval”.
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
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
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 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
Please refer to Swagger API for YAML file details. Link - API Specs.
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 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 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 next state
egov.noc.autoapprove.action=AUTO_APPROVE
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)
Under the data/<state code> folder you can find the BPA which has all the MDMS JSON’s
master-config.json for BPA
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 } ] }
Action Test : URL Actions adding
Access to the Roles for the above Actions
BusinessService Config for Fee’s to be collected
Application Fee, Sanction Fee BPA High/Medium Risk
Application Fee, Sanction Fee for BPA Low Risk
Application Fee, Sanction Fee for BPA OC
Tax Head for BPA High/Medium Risk
TaxHead config for BPA Low Risk
TaxHead config for BPA OC
TaxPeriod MDMS for BPA High/Medium Risk
TaxPeriod MDMS for BPA Low Risk
TaxPeriod Config for BPA OC
BPA Application Number format Config
BPA Permit Number format Config
BPA Receipt Number format config
BPA OC Receipt Number format config
Setup the locality Search query in the localitySearcher.yml as a new entry. Add RoleAction Test and Role Action for the URL “
/egov-searcher/locality/bpa-services/_get
“
BPA - Building Plan Approval Apply High/Medium Risk
BPA Low – Building Plan Approval Apply Low Risk
BPA OC - Building Plan Approval Occupancy Certificate Apply
BPA and BPA OC Workflow Stages
BPA workflow configuration is for Building Plan Approval Apply High and Medium Risk Types.
BPA OC workflow configuration is for Building Plan Approval Occupancy Certificate irrespective of RiskTypes
Both the workflow flows as depicted below
In the above Flow Chart
Rectangle Indicates the Workflow State
Line connecting two states indicates the action
Action name is in black colour text
User Role who can take action is in Blue colour Text
Specific Configurations and How To’s
System allows configuring the Documents that can be visible, allowed to upload and Mandatory to move from the current state in DocumentTypeMapping MDMS as described in MDMS Details Table DocumentTypeMapping Row
Application Creation Sage
Process
DCR system is integrated to get the applicationType, serviceType and riskType based on the EDCR Number populated by the architect.
DCR system is integrated to validate the status of the EDCRNumber populated
New BPA or BPAOC application cannot be created if there is existing un ended( application status other than approved or rejected is considered as unended) application with the same EDCR
How To add new Document
Should add new documentType group in DocumentTypeMapping MDMS with the applicable applicationType, serviceType, riskType, wfState (refer existing sample for understanding)
Can configure allow, required as well as the order for each documentType
Make sure the new documentType added exists in documentType of common-masters
Initiated Stage
Process
NOC’s from the NocTypeMapping MDMS matching to the application data will get created
How To add new NocType
Should add new NOCType in NocTypeMapping MDMS
New NocType should add in noc-services application as well
Citizen Approval Pending Stage
Process
According to the example in the NocTypeMapping Data in the MDMS Details Table, Once BPA or BPA OC reaches this Staus all the Applicable Noc’s workflow would be initiated.
How to change NOC workflow initiation step
Should change the nocTriggerState in NocTypeMapping to the desired application status.
InProgress Stage
Process
Application fee Demand gets generated by the bpa-calculator
Notification to the Stakeholder and owner will be sent regarding the fee payment
How To change the Fee Amount
Will be discussed in bpa-calculator service
Document Verification Pending Stage
Process
Nothing Specific
How To
NA
FieldInspection Pending Stage
Process
At this stage, FieldInspector should answer the checklist questions and attached the documents which will be configured in checklist MDMS, as described in MDMS Details Table CheckList Row
Field Inspector can create multiple FieldInspection Reports
How to add new questions and documents
Should add/modify the questions for the desired combination of applicationType, serviceType, risktype
with the localization code for question text
specify the fieldType ( ass of now only YES/NO/NA only supported )
Should add/modify documents for the desired combination of applicationType, serviceType, risktype
Noc Verification Pending State
Process
NOC verifier can upload the Documents to the NOC application’s if available.
Offline Noc’s would get auto-approved while NOC verifier is forwarding the BPA or BPAOC application from the current state
BPA or BPAOC application cannot be forwarded if any NOC is not in matching the status configured for validate.required.nocs.statuses in application.properties
How to change the NOC application status to be verified to move forward
should update the validate.required.nocs.statuses property in value in application.properties with the list of status to be considered to move forward
Approval Pending Stage
Process
Approver can select the predefined conditions for approval updated in CheckList MDMS, as described in MDMS Details Table checkList Row
Approver can add new conditions as well for approval
Sanction fee Demand gets generated by the bpa-calculator
Notification to the Stakeholder and owner will be sent regarding the fee payment
How to add/remove/modify conditions
Should add/modify the conditions array for the desired combination of applicationType, serviceType, riskType
Approved Stage
Process
System generates PermitOrder for the application
System Stamps the validate date for the permit Order by adding the no of months configured for the property egov.bpa.validity.date.in.months in application.properties
How to change the validity period of the permit order which will generate from now
Change the value of the property egov.bpa.validity.date.in.months in application.properties file to the desired no of months
How to change Permit Order
Can be changed by changing the data and format configs of the permit order, please refer PDF’s section of Permit Order
Rejected Stage
Process
NA
BPA LOW Workflow
BPA with riskType low has a separate workflow, which is almost same as the BPA workflow as depicted below
In the above Flow Chart
Rectangle Indicates the Workflow State
Line connecting two states indicates the action
Action name is in black colour text
User Role who can take action is in Blue colour Text
Specific Configurations and How To’s which are not common to BPA Workflow
InProgress Stage
Process
Application and Sanction Fee together gets calculated and Demand gets generated by the bpa-calculator
Notification to the Stakeholder and owner will be sent regarding the fee payment
How To change the Fee Amount
Will be discussed in bpa-calculator service
Document Verification Pending Stage
Process
System generates PermitOrder for the application
System Stamps the validate date for the permit Order by adding the no of months configured for the property egov.bpa.validity.date.in.months in application.properties
How to change the validity period of the permit order which will generate from now
Change the value of the property egov.bpa.validity.date.in.months in application.properties file to the desired no of months
Approved Stage
Process
NA
Revocated Stage
Process
System generates Revocation letter
How to change Revocation Letter format
Can be changed by changing the data and format configs of the revocation letter, please refer PDF’s section of Revocation letter
On Workflow action of Every Stage, System verifies the Documents Configured for the given stage of the workflow from the DocumentTypeMapping MDMS and validates the required Documents attached to move forward
DropDown values to be validated against the MDMS values, Value in those fields should be one of the MDMS value.
Notifications Message codes for SMS and User Events are prepared as follows
ApplicationType_ServiceType_WorkflowAction_ApplicationStatus.
Example BPA Apply Application (i.e applicationType is BUILDING_PLAN_SCRUTINY) with ServiceType NEW_CONSTRUCTION and the current application status is DOCUMENT_VERIFICATION_PENDING and workflow Action of the request is FORWARD then the localized message for this notification will be looked for the code: BUILDING_PLAN_SCRUTINY_NEW_CONSTRUCTION_FORWARD_DOCUMENT_VERIFICATION_PENDING
The message text for the above code is sent through SMS and Notification filling the owner, serviceType, application Number and other values.
BPA supports below PDF’s
PDF Name
Description
Config’s
BPA Permit Order
PDF Generated for the Permit Order on approval of the BPA HIGH and MEDIUM RISK Applications
BPA LOW Permit Order
PDF Generated for the Permit Order on approval of the BPA LOW RISK Applications
Revocation Letter
PDF of the Revocation Letter Generated when the LOW RISK BPA Application is Rejected
Occupancy Certificate
PDF Germinated for the Occupancy Certificate on Approval of the Occupancy Certificate Application
For every building plan application, there is a need to get the No objection certificate from concerned departments. Based on the configuration we have for the NOCs, for every application, there will be a set of NOCs required. There should be a provision to allow the NOC department user to login to our system and upload the required NOC. We are providing a user to one NOC department. Based on the workflow mode(online/offline) of each NOC type, the NOC department user can perform the action.
Online mode – NOC department user can log in to the system and approve/reject the application.
Offline mode – NOC application will be auto-approved.
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-user, eGov-localization will be helpful.
egov-user (Manage user)
egov-idgen (To generate the application No)
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-workflow-v2 (Workflow configuration for different BPA application is configured)
Please refer to Swagger API for YAML file details. Link - API Specs.
Fire Noc: online configuration
Airport Authority: online configuration
NA
NA
Config/Service Name
Path/Build
Persister yml for bulk migration
pgr-services
pgr-services-db:pgr-migration-2475ec38-56
rainmaker-pgr
rainmaker-pgr-db:pgr-migration-c046a264-20
The above build’s has to be deployed to perform migration. The batch persister config has to be added in config Repo. After adding the file in repo, update the persister path in environment yml file. Make sure the persister.bulk.enabled is set to true. Once done restart the persister pod.
To start the migration call the following API with tenantId as param it will migrate data belonging to that tenantId. The API does not have role action mapping and should be used by port forwarding rainmaker-pgr pod.
*(Last query related to document might need little modification as values in NOT IN clause can be more than the 2 specified)
null value is stored in action for adding comments in old system it’s mapped to COMMENT in new system.
Locality attribute in new eg_pgr_address_v2 table does not allow NULL values whereas the locality attribute in old eg_pgr_address in Punjab prod data has NULL values. Those values are filled in migration with dummy value NOT_AVAILABLE.
For 128 records accountId is NULL and so they won’t be associated with any citizen login.
For some records in media column corrupt data is present. For example on one case instead of fileStore uuid some normal text describing the complaint is present. While some other records have values like no . For data with such text having length greater than 64 are set to null, else DB validation’s are violated.
In old system id is stored for referencing user data. In new systems we use uuid to refer user, therefore all id are mapped to respective uuid which are then migrated to new system. If some user has uuid as NULL default value NOT_SPECIFIED will be used.
Some 1104 complaints has value in column named feedback which seems to be from some set pf predefined values like "Resolution Time","Quality of work",”others” etc. New structure don’t have any such column so we will be storing this in additionalDetails.
Address and landmark column in eg_pgr_service has values in some column they are also stored in additionalDetails.
Phone column contains phone numbers, we are not migrating that column as it has PII data and will be already present in user service as well.
If sla is not found in old config (will only happen if some complaint category is removed from MDMS and complaints are present in system of that category) default SLA value will be used.
This service is the major service supporting bpa-services which handles the data of the land like land details, owner information, unit, address and documents which has the complete information of the land.
Which can be used as input for the bpa-services to create and process the Building Plan Application.
This section covers the high-level details of the functionalities available Land Service
UI integrated as part of BPA screens
Ability to create/update Land Details
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-user, eGov-localization will be helpful.
The Application is present among the municipal services group of applications available in the eGov-services git repository with the folder name land-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 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
Please refer to Swagger API for YAML file details. Link - API Specs.
Here we are listing the configs apart from dependent service host, url’s, DB and Flyway configs.
kafka topics persister configs for eGov persister to save and update land Data
persister.save.landinfo.topic=save-landinfo
persister.update.landinfo.topic=update-landinfo
egov-user - ( Manage user )
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-persister ( Helps to persist the data )
There is not MDMS config for Land Service exists as of now.
Access MDMS Config
Action Test : URL Actions adding
Access to the Roles for the above Actions
NA
NA
NA
Whenever any user logs an authorization token and a refresh token is generated for him. Using the auth token the client can make rest API calls to the server to fetch data. The auth token has an expiry period. Once the auth token is expired it cannot be used to make API calls. The client will have to generate a new authorization token. This is done by authenticating the refresh token with the server which then generates and sends new authorization token to the client. The refresh token avoids the need for the client to again login whenever Auth token expires.
Refresh token also has an expiry period and once it gets expired it cannot be used to generate new authorization token and the user will have to login again to get a new pair of authorization token and refresh token. Generally, the duration before the expiry of the refresh token is much longer compared to that of auth token. If the user logs out of the account both Auth token and the refresh token will become invalid.
Param
Description
access.token.validity.in.minutes
Duration in minutes for which the authorization token is valid
refresh.token.validity.in.minutes
Duration in minutes for which the refresh token is valid
API
Description
/user/oauth/token
Used to start the session by generating Auth token and refresh token from username and password using grant_type as password. The same API can be used to generate new auth token from refresh token by using grant_type as refresh_token and sending the refresh token with key refresh_token
/user/_logout
This API is used to end the session. The access token and refresh token will become invalid once this API is called. Auth token is sent as param in the API call
`
Java 1.8
Eclipse
Postgres
PhpPgAdmin
Postman (Application)
Respective Git MiddleWare
Kubectl
Kafka
Take the code pull from the git:
Need to consider 2 repositories for code to run locally
Municipal services - where our BPA code exists and some dependency services also available here https://github.com/egovernments/municipal-services.git - Connect to preview
Core Services - Where dependency services exist to run our code locally https://github.com/egovernments/core-services.git - Connect to preview
Import the required projects to eclipse
From municipal-services import bpa-services, bpa-calculator and land-services. From core-services import user service, idgen service, mdms service, location service, localization service, workflow service, egov-persister.
Before running the application make sure the following setups are complete to ensure the application runs smoothly.
kafka set up in your system which is running fine. Download the latest version of kafka from here. https://kafka.apache.org/downloads
Run the below commands based on your system types
For linux: in kafka folder path
Example: D:\kafka_2.13-2.4.0
> bin/zookeeper-server-start.sh config/zookeeper.properties > bin/kafka-server-start.sh config/server.properties
Ref: https://kafka.apache.org/quickstart
For Windows: in windows path
Example: D:\kafka_2.13-2.4.0\bin\windows start zookeeper-server-start.bat ....\config\zookeeper.properties start kafka-server-start.bat ....\config\server.properties
And lombok setup for eclipse For ref: https://www.journaldev.com/18124/java-project-lombok
Kubectl setup based on the requirement To get the pods: kubectl get pods To port forward: kubectl port-forward <<pod name>> <<port number>>:8080 To get the logs: kubectl get logs
After all the setups are done successfully, try to run the application locally.
BPA-Services How to run the application in local:
Check the services which are connected to local and which are connected to dev
Which are connected to dev no need to change anything.
If it is connected to local check the services are in below list IDGEN – can run locally or can point to dev from cmd prompt PERSISTER – can run locally MDMS – can directly point to dev or can run in local LOCATION – can directly point to dev WORKFLOW – can point to dev or can run locally LOCALIZATIONS – we can directly point this to dev USER-SERVICE – need to point to dev from cmd prompt LAND-SERVICE – need to run locally BPA-CALCULATOR – can run locally or can point to dev.
If the changes are from these services follow the below process to run those respective services.
For core services:
IDGEN:
Approach 1: Directly point this to dev from the application.properties in bpa-services Approach 2: Point this to local and give the port forward to dev by using kubctl.
Note: We are not running this service locally.
PERSISTER:
U need to run it in local and need to add respective yaml files in persister resource folder which are bpa-persister.yml and egov-workflow-v2-persister.yml and also land-persister.yml
And need to add these in persister application.properties repo path
Note: Please check whether data is is saving or not in local data base(DB).
MDMS:
to run local: For running this in local need to change in 2 file that is application.properties and MDMSApplicationRunnerImpl
In application.properties need to change the paths for the master-config url as path of master-config.json and for config path as upto pb/bh
In MDMS ApplicationRunnerImpl need to change the data in a function from the path to file.
to point to dev: Approach 1: Directly point this to dev from the application.properties in bpa-services
Approach 2: Give it as local connection in BPA application.properties and port forward to dev by using kubectl.
Postman Collection https://www.getpostman.com/collections/c59b5c6190719ecd306a
LOCATION
Approach 1: Give it a local connection in BPA application.properties and port forward to dev by using kubectl.
Approach 2: Directly point this to dev from the application.properties in bpa-services
Note: Not tried it in local / may got errors so pointing to dev.
Postman collection https://www.getpostman.com/collections/4f6a25a4fb32572af5ff
WORKFLOW
to point to dev: Approach 1: Directly point this to dev from the application.properties in bpa-services
Approach 2: Give it as local connection in BPA application.properties and port forward to dev by using kubectl.
to run local:
can run locally by pointing to the local database, but for this need to create the workflow locally using the workflow create API.
Postman collection https://www.getpostman.com/collections/aa30be8a8b9de4c13aa8
USER-SERVICE Approach 1: Give it as local connection in BPA application.properties and port forward to dev by using kubectl.
Approach 2: Directly point this to dev from the application.properties in bpa-services
Note: In local not able to run the application successfully, so the following dev.
Postman Collection: https://www.getpostman.com/collections/60bbd6aed27605dcc270
LOCALIZATIONS
Approach 1: Directly point this to dev from the application.properties in bpa-services
Approach 2: Give it as local connection in BPA application.properties and port forward to dev by using kubectl.
Postman Collection https://www.getpostman.com/collections/12cc4c3855be9699c278
Changes from Municipal services
BPA-Calculator:
to run local:
can run locally by pointing to the local database.
to point to dev: Approach 1: Directly point this to dev from the application.properties in bpa-services
Approach 2: Give it as local connection in BPA application.properties and port forward to dev by using kubectl.
Land-Service:
to run local:
can run locally by pointing to the local database.
to point to dev: Approach 1: Directly point this to dev from the application.properties in bpa-services
Approach 2: Give it as local connection in BPA application.properties and port forward to dev by using kubectl.
Other than these services can directly by pointing to dev url.
Note: After running the application successfully please check if the data is saving in db or not.
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, permitorder 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)
Code - Refers to the DocumentType parentGroup from from common masters MDMS