Only this pageAll pages
Powered by GitBook
1 of 76

v1.3.1

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

COMMUNITY

Loading...

Field Research

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

Who can use DIGIT Sanitation?

Desludging Operator

Urban Local Body

Treatment Operator

Citizen

Coming soon...

All the information is published with the consent of the stakeholders

All content on this page by is licensed under a .

Roadmap

The DIGIT Sanitation roadmap below offers a snapshot of our upcoming tools and features:

The following modules and features are part of the product roadmap:

  1. Treatment Quality Monitoring: The treatment quality module aims to set up a digital system to define, record and review parameters such as tests on the samples from treatment plants (TP) by enabling on-ground actors to record, review and compare test results (on samples from the treatment plant) in the system. The information will be delivered to relevant stakeholders to bring awareness and to take action. The system will allow for real-time automated monitoring (without human intervention), with IoT sensors. The following features will be provided as part of the module:

  • Plant registry

  • Recording of lab testing results

  • Dashboards to monitor quality

  • Anomaly detection and alerts for deviation

  1. Calendaring/Scheduling: Desludging/emptying of septic tanks of certain commercial and institutional properties such as community toilets, temples, etc., is a scheduled activity and performed at regular intervals. These are usually scheduled by the urban local body (ULB), and assigned to a vendor who performs the service. In some cases, the ULB owns the vehicles and employs individuals, and these requests are served by them. The calendaring/scheduling functionality will allow for:

  • Automated scheduling of services

  • Tracking service delivery against scheduled services

  • Tracking adherence to schedule

  1. Sanitation Worker Welfare (v1.0)

Sanitation workers are an integral part of the waste management ecosystem. Currently, the product is limited to capturing only drivers that are involved in transportation of waste. As part of v1.0 of the sanitation worker welfare, we want to create a record of service delivery to provide enumeration and benefits to sanitation workers. This will include:

  • Building a sanitation worker registry/database

  • Mapping of vendor and sanitation workers

  • Mapping sanitation workers and faccal sludge treatment plants (FSTPs)

  • Assigning sanitation workers to service requests

  • Capturing details of unregistered sanitation workers, if not available in the database

  1. Vendor as a business user: There are multiple operating models across countries and waste streams. Private vendors contribute to service delivery in waste management across multiple service categories, such as request collection, transportation, or treatment plant management. We want to enhance the product by introducing vendors as business users. The following will be the scope:

  • Integrating vendor registry from DIGIT in FSM

  • Mapping of vendors to multiple urban local bodies

  • Mapping vendors to multiple service categories

  • Vendor collecting payments from citizens based on service categories

Contribute

We are actively seeking contributions from the community in enhancing the product. Check out how you can contribute .

here
eGov Foundation
Creative Commons Attribution 4.0 International License

Introducing DIGIT Sanitation

Mission

Enabling Samaaj, Sarkar & Bazaar partners with a digital platform that would help ensure Zero deaths, disease, and environmental contamination resulting from poor sanitation - a reality for every citizen across the Global South.

DIGIT Sanitation aims to ensure zero untreated waste in 1,000 habitats in 1,000 days by catalysing open digital ecosystems.

Overview

DIGIT Sanitation is an open-source web and mobile-enabled platform designed to digitisze operations in the waste management value chain, from collection to treatment, and provides the ability to drive coordination across multiple independent and disconnected stakeholders. This ensures that there is a continued chain of custody of waste throughout.

According to a United Nations (UN) report, only 54% of the world population have access to safe sanitation. We believe that at the heart of the problems in sanitation are ineffective systems that fail to deliver. Hence, systems must be progressively reformed. To move habitats towards zero untreated waste, we will leverage the capabilities built by the Digital Infrastructure for Governance, Impact & Transformation (DIGIT), and ensure traceability of waste by enabling the ecosystem with the following features:

  • Chain of custody: We will ensure a seamless and traceable chain of custody for waste. This will enable stakeholders to track waste from its source to its final destination, ensuring accountability and transparency in the waste management process.

  • Actionable data: Our system will provide actionable data on waste management operations, which will enable stakeholders to make informed decisions. This data will be used to optimize waste collection and treatment processes, identify areas for improvement, and drive evidence-based decision-making.

  • Code for innovation: We will foster innovation by providing a digital platform that encourages collaboration among stakeholders. Our system will facilitate the sharing of ideas, best practices, and innovative solutions for sanitation challenges, driving continuous improvement in the waste management ecosystem.

Need for DIGIT Sanitation - Case for Platform

Current digital efforts across geographies do not take a “whole of system view” and do not solve the cost of coordination and duplication issues. Such siloed, solution-centric approaches and tools create a new set of problems and inefficiencies for countries:

  • Higher costs and time: This is incurred on creating or procuring and maintaining these systems, including the onboarding cost of the same actors in each programme.

  • Data exists in multiple systems: They are not interoperable, leading to duplication, inconsistencies, poor adoption by on-ground workers, and sub-optimal decision-making.

  • Limited reusability and innovation: Data and capabilities are intertwined and ‘locked,’ making it extremely hard for the wider ecosystem to innovate and build upon.

  • Sub-scale: The tools are not able to scale for the national population and across waste streams.

Platform Scope

DIGIT Sanitation is built on the principles of societal platforms, envisioning a space where sanitation is supported by shared resources, curated knowledge, and evolving solutions that address the needs of the community. We recognise that the challenges of sanitation are systemic and require the collective efforts of all stakeholders to be effectively addressed. Drawing from our insights gained from our urban mission, we embrace the triple helix model, which emphasises partnerships among different stakeholders, including civil society (samaaj), government (sarkaar), and industry/market (bazaar), to generate innovation through synergistic collaboration. Leveraging our experience in building large-scale public digital infrastructure, we are well-positioned to create the foundation for this ecosystem and drive progress in solving the most pressing sanitation issues. We believe that by fostering cooperation and collaboration among all stakeholders, we can create sustainable solutions that meet the needs of communities and contribute to the transformation of the sanitation landscape.

While sanitation requirements and solutions may vary among local governments, there are commonalities in the value chain of sanitation waste streams, such as Faecal Sludge Management, Solid Waste Management, Plastic Waste Management, etc. These value chains typically involve steps such as generation, containment, collection, transport, treatment, and disposal/reuse. These similarities provide an opportunity to abstract and digitise various components of the service value chain, with the potential to encode standards and enable data-driven visibility into sanitation services.

The DIGIT Sanitation platform is specifically designed to allow for contextualisation and reuse of components across different waste streams and geographies. By incorporating standards into the platform and leveraging data registries and reusable building blocks in the technology stack, applications can be developed more efficiently and quickly at the solution layer, resulting in lower costs and faster implementation. This approach enables flexibility and scalability in addressing diverse sanitation needs, while also promoting interoperability and consistency in the digital solutions deployed. By leveraging the DIGIT Sanitation platform, stakeholders can build innovative applications tailored to local contexts, while adhering to standardised components and data structures, leading to more effective and sustainable sanitation services.

Following is a glimpse of how this would work:

The above image illustrates the core infrastructure services, and the enabling services that are built/configured for a Faecal Sludge Management (FSM) solution with the following functionality:

  1. Allowing citizens to request fo r septic tank desludging services.

  2. Scheduling desludging services for a certain set of property types/localities, etc.

  3. Automated or manual assignment of vendors to perform requests.

  4. Tracking sludge from collection to disposal at a treatment plant using internet of things (IoT).

  5. Notifications to stakeholders at each point in the workflow.

  6. Dashboards and reports.

Now, consider that instead of FSM, a solution needs to be built for Solid Waste Management:

The same set of infrastructure and enabling services could be used to configure the following functionalities:

  1. Scheduling the collection of waste based on different categories.

  2. Automated or manual assignment of vendors to perform requests.

  3. Tracking adherence to the schedule.

  4. Tracking waste movement from pickup to disposal at a treatment facility.

  5. Notifications to stakeholders at each point in the workflow.

  6. Dashboards and reports.

Further, only an additional service for segregation monitoring would have to be built.

To illustrate this further, imagine building a solution for sanitation worker welfare:

The same set of services can be used here as well, with the addition of a few components. The DIGIT Sanitation platform is built leveraging the DIGIT Core Services, which are customised into the following key building blocks:

  1. Service Request Management

  • Define pricing

  • Record service requests

  • Assign and manage service requests

  • Provide subsidies

  • Calculate service fees

  • Track status

  • Collect feedback

  1. Transport Management

  • Schedule pickup

  • Assign vehicles and drivers

  • Track status

  1. Billing and Payments

  • Generate demand

  • Generate receipts

  • Online payment gateway

  1. Notifications

  • SMS

  • In app

  1. Service Delivery Monitoring

  • Dashboards

  • Reports

Product

Faecal Sludge Management (FSM)

Programme

Click here to know more about our SUJOG-Faecal Sludge & Septage Management (FSSM) programme in Odisha.

Installation

Click here to know more.

Backend Developer Guide

Click here to know more.

Test Cases

See our test cases below:

Impel Release Notes

Release Summary

The release provides the functionality of tagging the Gram Panchayat (GP) and Villages via Urban Local Bodies (ULBs). The ULB will be servicing desludging requests for households in the respective GP.

Release Highlights

The functionality included are:

  • Adding GPs while creating an application

  • Make the Amount per trip field editable for GPs

New Feature Additions

Feature
Description

Document Resources and Link

Click to access the backend service document.

Features

Click to know more about our platform features.

Test Cases for Urban-Rural Convergence

The QA test cases for Urban-Rural Convergence (URC) are given below:

Operations Guide

Click for more details.

Adding gram panchayats (GPs) while creating an application

The user can add a GP and the villages under that GP while creating an application. The GPs are tagged to the ULBs closest to them. The ULBs will be servicing the desludging request from the GPs and the villages falling under that GP.

Make the amount per trip field editable

Once the application is created with a selection of GPs, the amount per trip field will become editable for the user.

here
here
here

Release Notes

Release Summary

This patch release provides the enhancements in the search functionality and FSM registry. Part search is enabled in the entire application to enhance user experience. The fields in the FSM registry are made editable, mandatory, and unique as per its attributes.

The enhancements included are:

  • To enable part search in the entire application.

  • Modify the FSM registry to make fields as mandatory, editable, and unique.

Enhancements

Feature
Description

Enabling part search

The v1.3 release had the exact search fields within the application. The patch release will add the capability for part search to significantly enhance the search experience for users.

Updating registry information

In v1.3, functionality was provided for an urban local body (ULB) personnel to add and modify vendor, driver and vehicle details. By making the fields mandatory, editable and unique as per its attributes, it ensures that the most updated and verifiable information of stakeholders is captured in the registries.

API Contract

Click here to access the document.

FSM UI Docs

This section includes the following:

  • FM Citizen UI

  • FSM Employee UI

  • FSM DSO UI

  • FSM FSTPO UI

Localisation

Localisations of GP Phase-1 & Phase-2

Development Guide

Here are the articles in this section:

  • Backend developer guide

  • UI developer guide

Contribute

Why contribute to DIGIT Sanitation?

DIGIT is an open-source waste management service and governance platform. It is designed to streamline interactions between citizens, government employees, service providers, administrators, and policymakers. In low capacity national and sub-national areas, in particular, government agencies do not have the ability to develop systems that can deliver services in a scalable and reliable manner. They end up building systems that are closed, locking data into departmental silos. This makes it difficult for citizens to access data, market players to provide services, and administrators and policymakers to make decisions. Each system builds common functionalities such as authentication, authorisation, location, notification, demand, and payment. These issues impact the ability of government agencies to deliver coordinated services to citizens.

DIGIT Sanitation is architected on DIGIT, a Digital Public Infrastructure, that consists of reusable micro-services:

  1. Common services: Authentication, authorisation, notification, payment, workflow, etc.

  2. Domain services: Individual, household, property, beneficiary, programme, etc. These services store data and make them available through APIs to any applications securely.

  3. Data exchange: To avoid point-to-point integrations, it is critical to build data exchange mechanisms and standards that enable agencies to exchange data in a trusted and non-repudiable manner. This will enable all agencies to deliver services in a coordinated fashion. For example, once a birth is registered in the civil registry, the health department should automatically schedule a vaccine. Data exchanges enable seamless flow of financial and services delivered data between funding and implementing agencies in the government, streamlining the flow of money which is critical for services delivery. Lack of information results in delays in payments to frontline workers, employees, pensioners, and vendors, impacting service delivery.

Building an open-source platform like DIGIT Sanitation can enable governments in low capacity countries to deliver and govern services delivery in a scalable and reliable manner.

How can you contribute?

Develop products on top of DIGIT Sanitation

  1. Solutions for traceability of waste, from pickup to disposal, at a treatment site. These may be QR code-based tracking, or vehicle-based tracking.

  2. Maintenance module for scheduled and on-demand maintenance of plants.

  3. Improved dashboards for administrators/governing bodies.

  4. Mobile app for drivers/frontline workers involved in sanitation.

  5. IoT-based tracking of quality measurement data from plants.

We will keep adding more items here. If you are interested or have any questions you post it on Discussion Board (Coming soon).

Workflow 2.0 Configuration

Coming soon...

MDMS Configuration Updates

Overview

The following MDMS changes have been done as part of the Urban-Rural Convergence (URC) release:

MDMS Changes

Feature
Service name
Changes
Description

Added new component for URC

MDMS

  1. Added a new component for URC, that is, locality-gram panchayat.

  2. At the time of creating the application, a ULB or a citizen can create the application from gram panchayat.

Added URC flag for specific tenants

MDMS

  1. If we want to add a gram panchayat in any tenant, we need to add this flag on a specific tenant level.

  1. Flag should be true. If we do not want the URC feature for any specific tenant, then the flag should be false.

Setup

Installation Pre-reads

  • Know the basics of Kubernetes: https://www.youtube.com/watch?v=PH-2FfFD2PU&t=3s.

  • Know the basics of kubectl commands.

  • Know Kubernetes Kubernetes Resources via YAML, Deployments, Replica Sets, and Pods: https://www.youtube.com/watch?v=ohSUtEfDefc.

  • Know how to manage env values, secrets of any service deployed in Kubernetes: https://www.youtube.com/watch?v=OW244LxB4oI.

  • Know how to port forward to a pod running inside k8s cluster and work locally https://www.youtube.com/watch?v=TT3nd5n5Yus.

  • Know sops to secure your keys/credentials: https://www.youtube.com/watch?v=DWzJ87KbwxA.

1. Choose the Cloud

Choose your cloud and follow the instructions to set up a Kubernetes cluster before moving on to the deployment.

2. Deployment

3. Destroy the Cluster

Finally, clean up the cluster setup if you wish, using the following command. This will delete the entire cluster and other cloud resources that were provisioned for the DIGIT setup.

cd DIGIT-DevOps/infra-as-code/terraform/my-digit-eks
terraformdestroy​

Conclusion

We have successfully created infra on cloud, and deployed DIGIT in the cluster.

Training

Videos and training resources

Module Walkthrough Videos

A complete walkthrough of the DIGIT FSM module -

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

Calculator Technical Specification

Overview

FSM Calculator is a system that enables the FSM aAdmin to create billing slabs for the FSM application(s) with different combinations of propertytype, slum, and tank capacity, among others. It generates the demand after calculating the charges for the given application using the billing slabs already configured.

Service Dependencies:

  • billing-service

  • mdms-service

  • workflow-v2

  • User-service

  • fsm

API Specification

​Data Model

Vehicle Technical Specification

Overview

Vehicle Registry is a system that enables urban local body (ULB) employees to create and search vehicle entities and schedule vehicle trips for FSM applications, and track the vehicle trip.

Service Dependencies:

  • egov-mdms-service

  • egov-workflow-v2

  • user-service

  • egov-idgen

  • vendor

API Specification

​Data Model

Web Sequence Diagram

Platform

The platform is built and designed as a Digital Public Good.

The source code for the platform is hosted .

To set up the platform, follow the installation steps listed .

PR # 3014
PR #3111
here
here
FSM-Calculator Swagger Link
Vehicle Swagger Link
Creative Commons License

Features

The current version of FSM v1.3 provides the following features:

Service Request Management (urban and rural)

  • Define pricing for desludging services based on the property type, sub-type and volume, and categories where services are free/subsidised.

  • Interface for citizens to request for desludging services and track service delivery.

  • Interface for urban local bodies (ULBs) to record service requests received via multiple channels, and track service delivery.

  • Interface for Faecal Sludge Treatment Plant (FSTP) operators to record the entry of vehicles against service requests.

  • Interface for FSTP operators to record the entry of vehicles without service requests.

  • Collect feedback from citizens on the completion of service delivery.

  • Define and monitor against SLAs.

Transport Management

  • Assignment of requests to transportation vendors.

  • Interface for transport vendors to manage requests and track the status of requests.

  • Assignment of vehicles and drivers to service requests.

Billing and Payments

  • Calculate service fees based on the defined pricing and the number of trips.

  • Define the minimum amount payable at the ULB level while requesting for services.

  • Collect part payments in advance and the rest as balance.

  • Interface for citizens to make payments via a payment gateway.

  • Interface for ULBs to collect and record payments.

  • Generate receipts.

Notifications

  • Send notifications via SMS.

  • Send in-app notifications.

Service Delivery Monitoring

  • Dashboards at the state and ULB levels.

- View KPIs (Total requests, trends in requests, SLAs, and capacity utilisation of FSTPs, and vendor performance).

- Filters (Time, ULB)

  • Reports

The following masters are also maintained as part of the product:

  • Vehicle master

  • Driver master

  • Vendor master

  • Treatment plant master

FSM Implementation Configuration

MDMS Configuration

FSTP Plant Info

The FSTP plant info contains plant operational capacity per day of each ULB and other plant-related information. It is required to calculate the FSTP capacity utilization in percentage form. MDMS file details:

egov-mdms-data/FSTPPlantInfo.json at QA · egovernments/egov-mdms-data``

{
	"MdmsCriteria": {
		"tenantId": "pb",
		"moduleDetails": [{
			"moduleName": "dss-dashboard",
			"masterDetails": [{
				"name": "dashboard-config"
			}]
		}, {
			"moduleName": "FSM",
			"masterDetails": [{
				"name": "FSTPPlantInfo"
			}]
		}]
	}
}
On AWS

FSM Release Notes

Overview

This patch release provides the enhancements in the search functionality and FSM registry. Part search is enabled in the entire application to enhance user experience. Also, the fields in the FSM registry are made editable, mandatory and unique as per its attributes.

Release Highlights

The enhancements included are:

  • To enable part search in the entire application

  • Modify FSM registry to making fields as mandatory, editable and unique

Enhancements

Feature
Description

The V1.3 release had exact search fields within the application have an exact match. capability for part search to significantly enhance the search experience for the users.

Updating Registry Information

In V1.3, functionality was provided for ULB personnel to add and modify Vendor, Driver and Vehicle details, but by making the fields mandatory, editable and unique as per its attributes, it ensures that the most updated and verifiable information of stakeholders is captured in the registries.

Document Resources and Links

Backend Service Documents

https://docs.google.com/document/d/1zbVfCjrE499sJgqj3lwSZxBzmffSpFXom9tgbR--xXY/edit#heading=h.se24ugcdelwb

https://docs.google.com/document/d/1_WC_l5BaI65PHUGTrVOIUmAdzHjYzeei6ZGFVmmud9o/edit#

https://docs.google.com/document/d/1jX1YT30u8Ss2yBZBbatI8dFOy7xzIS0GXz0GQrMBLYw/edit#

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

FSM Technical Specification

Overview

Faecal Sludge Management (FSM) is a system that enables citizens to raise a request for septic tank cleaning with their urban local bodies (ULBs) directly or for reaching out to a ULB counter. Citizens can track the application, make a payment for the charges and rate the service.

Service Dependencies:

  • billing-service

  • mdms-service

  • workflow-v2

  • boundary-service

  • user-service

  • idgen-service

  • user-events

  • collection-service

  • notification-service

  • vendor

  • vehicle

  • fsm-calculator

  • egov-url-shortener

  • collection-service

  • pdf-service

API Specification

FSM Swagger Link

Data Model

Web Sequence Diagrams

FSM Citizen UI

There are two new updates introduced in FSM v1.2.1 while creating a new application - Stepper Information and Vehicle Capacity Selection in the Service Request Screen.

Stepper Information

We are introducing stepper information in FSM while creating an application from the citizen side so that they have visibility on how many steps they need to go over to submit details regarding their tank.

Technical Implementations Details:

TLTimelineInFSM.js file is the common component and used for rendering the stepper information. The path of the file is:

frontend/micro-ui/web/micro-ui-internals/packages/modules/fsm/src/components/TLTimelineInFSM.js

The code snippets for defining the steps present in FSM application under case “APPLY”:

The code snippets to render the stepper information in each screen using the timeline component:

Service Request Screen

Citizens can now select vehicle capacity along with the number of trips required while creating an application. If nothing is selected, we will proceed by taking the minimum vehicle capacity available with the number of trips.

Technical Implementation Details:

Code path: frontend/micro-ui/web/micro-ui-internals/packages/modules/fsm/src/pageComponents/SelectTripNo.js

The code snippet for rendering the Vehicle Capacity field in Service Request screen:

The code snippet for fetching the vehicles available under all DSO:

The code snippet for setting the default vehicle capacity to minimum:

<CardText> {t("ES_VEHICLE CAPACITY")} </CardText>
 <RadioOrSelect
    options={vehicleMenu?.map((vehicle) => ({ ...vehicle, label: vehicle.capacity }))}
    selectedOption={vehicleCapacity}
    optionKey="capacity"
    onSelect={selectVehicle}
    optionCardStyles={{ zIndex: "60" }}
    t={t}
    isMandatory={config.isMandatory}isDropDown={true}
/>
const allVehicles = dsoData.reduce((acc, curr) => {
  return curr.vehicles && curr.vehicles.length ? acc.concat(curr.vehicles) : acc;
}, []);
const cpacityMenu = Array.from(new Set(allVehicles.map((a) => a.capacity)))
    .map((capacity) => allVehicles.find((a) => a.capacity === capacity));
using Timeline component to render the stepper Information in each screen provided with step number in currentStep.
Creative Commons License

User Data Encryption Promotion

Promotion of Encryption Service

Steps

  • Choose values for the following fields:

- master-password: choose any string of any length (can contain alphanumerics and special characters)

- master-salt: choose any string of length 8 (can contain alphanumerics and special characters)

- master-initialvector: choose any string of length 12 (can contain alphanumerics and special characters)

- Ask devops to generate keys for above selected values,

- In environment secrets.yml file, add “egov-enc-service” subsection under 'secrets' section, and provide values for above three fields. For example: For dev environment https://github.com/egovernments/eGov-infraOps/blob/master/helm/environments/dev-secrets.yaml#L29 (Ask Devops to do it)

  • Add field “state-level-tenant-id“ under “egov-enc-service:” section for state level tenantId in environment yml. Example: https://github.com/egovernments/eGov-infraOps/blob/master/helm/environments/qa.yaml#L525

  • Promote egov-enc-service:4-master-f47bff2

  • Make sure “egov-enc-service“ entry is present in “egov-service-host” in environment yml ,ex:- for dev https://github.com/egovernments/eGov-infraOps/blob/master/helm/environments/dev.yaml#L65 . If not, make changes and build and deploy zuul from master branch.

Data Migration

Steps

  • Provide DB details in following environment variables

- DB_PASSWORD

- DB_HOST

- DB_PORT

- DB_USERNAME

- DB_NAME'

  • Backup old tables

- Create table eg_user_backup_plaintext as (select * from eg_user)

- Create table eg_user_address_backup_plaintext as (select * from eg_user_address)

  • Delete foreign key referenced on ‘eg_user’ from ‘eg_userrole_v1’ temporarily until the data is transformed

- ALTER TABLE eg_userrole_v1 DROP CONSTRAINT fk_user_role_v1

  • Deploy user service build with encryption to run flyway migration (egov-user:11-user_changes_MT-800f319)

  • Clean tables of all plain text data

- Delete from eg_user_address

- Delete from eg_user

  • Run migration

- Script python package dependencies

- import psycopg2

- import sys

- import json

- import requests

- import configparser

- import logging

- import os

Commands to run for migration:

- python3 user_migration.py config_user_encryption.txt

- python3 user_migration.py config_address_encryption.tx

  • Restore earlier deleted foreign key constraint

- ALTER TABLE eg_userrole_v1 ADD CONSTRAINT fk_user_role_v1 FOREIGN KEY (user_id, user_tenantid) REFERENCES eg_user(id, tenantid) MATCH SIMPLE ON UPDATE NO ACTION ON DELETE NO ACTION

Service Builds

  • User service: egov-user:11-user_changes_MT-800f319

- Set environment variable “DECRYPTION_ABAC_ENABLED” to false

  • User service copy for chatbot: egov-user-chatbot:4-user_changes_MT-621fe60

Note: Promote only if Whatsapp chatbot is already running in the system. It uses another copy of user service named “egov-user-chatbot“. Not needed if Whatsapp- chatbot is not in the system.

  • Report service: report:22-report-encryption-changes-e92c8ae

  • enc-service: egov-enc-service:4-master-f47bff2

  • MDMS: Copy the MDMS folder - https://github.com/egovernments/egov-mdms-data/tree/master/data/pb/DataSecurity

Legacy/Re-Indexing the FSM Data

Overview

In this document, we will learn how to legacy index/re-index the fsm index.

Pre-Requisites

  • Kubectl access to the required environment in which you want to run the re-indexing

  • playground pod access

  • Legacy index mapping/configuration done in the respective indexer-config ( in this case for FSM, legacy index configuration for fsm is done here, Similarly for VehicleTrip also exists )

Postman Collection

Postman collection to re-index the data for FSM, VehicleTrip, Vehicle, Vendor Services can be downloaded here

Steps to legacy-index FSM

  1. After importing the postman collection downloaded from above section, you can find two request

    1. fsm-legacy : This request helps to get the data from fsm/plainsearch api and push data to fsm-enriched topic by indexer service

    2. fsm-legacy-kafkaconnector : This is the request to create a connector which can listen to the fsm-enriched topic and push data to the elastic search with the new index fsm-enriched

  2. Run the fsm-legacy-kafkaconnector request in the playground pod, which would create a connector which would intern start listening to the topic fsm-enriched-sink

  3. Run the fsm-legacy request in the playground pod, which would call indexer service to intiate the process of fetching the data from plainsearch and push the data prepared according to the legacy-index mapping and push the data to the fsm-enriched-sink topic

  4. Whole process would take some time, mean while you can searc for the data in fsm-enriched index in the elastic search

  5. we can go through the logs of the indexer pod, which would help to understand the job is done

  6. Once the job is done, delete the kafka connector running the below curl in the playground curl --location --request DELETE 'http://kafka-connect.kafka-cluster:8083/connectors/fsm-enriched-es-sink'

  7. Once reindexing is completed, please verfiy the count in fsm index and fsm-enriched index, then delete the fsm index and create alias for fsm-enriched index as fsm.Please use below command for alias creating.

POST /_aliases
{  "actions":
[  
  {      "add":
 {        "index": "fsm-enriched",    
   "alias": "fsm"    
  }    
}
 ]
}

Steps to legacy index VehicleTrip

  1. After importing the postman collection downloaded from above section, you can find two request

    1. vehicleTrip-legacy : This request helps to get the data from vehicletrip/plainsearch api and push data to vehicletrip-enriched topic by indexer service

    2. vehicle-trip-legacy-kafkaconnector : This is the request to create a connector which can listen to the vehicletrip-enriched topic and push data to the elastic search with the new index vehicletrip-enriched

  2. Run the vehicletrip-legacy-kafkaconnector request in the playground pod, which would create a connector which would intern start listening to the topic vehicletrip-enriched-sink

  3. Run the vehicletrip-legacy request in the playground pod, which would call indexer service to intiate the process of fetching the data from plainsearch and push the data prepared according to the legacy-index mapping and push the data to the vehicletrip-enriched-sink topic

  4. Whole process would take some time, mean while you can searc for the data in vehicletrip-enriched index in the elastic search

  5. we can go through the logs of the indexer pod, which would help to understand the job is done

  6. Once the job is done, delete the kafka connector running the below curl in the playground curl --location --request DELETE 'http://kafka-connect.kafka-cluster:8083/connectors/vehicletrip-enriched-es-sink'

  7. Once reindexing is completed, please verfiy the count in vehicletrip index and vehicletrip-enriched index, then delete the vehicletrip index and create alias for vehicletrip-enriched index as vehicletrip.Please use below command for alias creating.

POST /_aliases
{  "actions":
[  
  {      "add":
 {        "index": "vehicletrip-enriched",    
   "alias": "vehicletrip"    
  }    
}
 ]
}

Enabling Part Search

Architecture

FSM uses several core components, and is built on top of these reusable building blocks to deliver citizen services as part of Faecal Sludge Management (FSM).

Core Components

To develop a new service, one needs to create a micro-service and make it available through the API gateway. The API gateway calls the User Service for authentication and the Access Service for authorisation. The service developer can configure the roles and map the roles and actions using the Master Data Management Service.

Citizen Dashboard: The service user interface can be developed as part of the Citizen Dashboard or can be an independent solution. The citizen can log in using a mobile number and OTP. They can apply for a new service using the service UI. The File Store Service allows users to upload relevant documentation.

The Persister Service stores the submitted application asynchronously into the registry. The PII data is encrypted using the Encryption Service before storing. All changes are digitally signed and logged using the Signed Audit Service (ongoing). The Indexer Service transforms and enriches the application data. The Indexer Service also strips the PII data and sends it to the Analytics Data Store(ElasticSearch).

The Dashboard Backend Service executes configured queries on the stripped data and makes the aggregated data available to the Dashboard Frontend for the administrator or employee view. The views are in accordance with the user role access which is also configurable.

The Billing Service generates a demand based on the calculation logic for the given service delivery. Based on this demand, a bill is generated against which the payment has to be made. The citizen can either make an online payment or can pay at the counter (offline payment). The Payment Gateway Service is called for online payments and this is integrated with third-party service providers. The service routes the citizen to the service provider's website and then back to the citizen's UI once the payment is successful.

The Collection Service is the payment registry and records all the successful payments. For offline payments, a record is made in the collection service after the collection of the Cash/Cheque/DD/RTGS. The allowed payment modes are configurable. The PDF service is used to generate receipts based on a configurable template. The service then triggers the Workflow Service to assign tasks for verification and approval. Workflows can be configured.

The Employee Service allows employee registrations and enables them to log in using the Employee Dashboard. The dashboard displays the list of pending applications as per the employee's role. The employee can perform actions on these applications using the employee UI for the service. As the status changes or actions are taken on the applications, the relevant SMS and Email Notification Service sends the updates to the applicant. Once the application is approved, the applicant can download the final certificate which is generated using PDF Service.

DIGIT has multi-tenant configuration capabilities. The Location Service allows the configuration of the tenant hierarchy and maps multiple tenants like country, state, district, or state, department, and sub-department. Each tenant can have their own configurations for service, roles, workflows etc. This allows for variations across different agencies in tune with the local context. The Language Service facilitates the support of multiple languages in DIGIT. This service stores the translations in multiple languages.

FSM Components

Faecal sludge management (FSM) is a system that enables citizens to raise a request for septic tank cleaning with their urban local bodies (ULBs) directly or by reaching out to the ULB counter. Citizens can track the application, make a payment for the charges and rate the service. Citizens can track the application, make a payment for the charges and rate the service.

The FSM calculator is a system that enables the FSM administrator to create billing slabs for the FSM application(s) with different combinations of property type, slum, tank and capacity. It generates the demand after calculating the charges for the given application using the billing slab already configured.

The vendor registry is a system that enables urban local body (ULB) employees to create and search for a vendor, that is, the desludging operator (DSO) and driver entities with appropriate vehicle entities for the FSM application. The vendor registry is a system that enables urban local body (ULB) employees to create and search for a vendor, that is, the desludging operator (DSO) and driver entities with appropriate vehicle entities for the FSM application.

The vehicle registry is a system that enables urban local body (ULB) employees to create and search vehicle entities, schedule vehicle trips for FSM application, and track vehicle trips. A vehicle registry is a system that enables ULB employees to create and search vehicle entities, schedule vehicle trips for FSM application, and track vehicle trips.

Service Build Update

Faecal Sludge Management (FSM)

Online solution to desludging operations management

About FSM

Our mission is to build a digital tool that enables urban local body employees to deliver desludging services (emptying septic tanks) to citizens. The linear nature of feacal sludge value chains presents a clear framework for comprehending the optimal flow of sludge, but these value chains consist of diverse stakeholders and business models. The absence of coordination among value chain stakeholders and the lack of transparency to enforce standardised practices at each stage of the value chain lead to subpar sanitation outcomes. Furthermore, conflicts between stakeholders and the feasibility challenges of existing and emerging business models diminish the efficiency of the waste value chain.

The Faecal Sludge Management (FSM) application has been able to provide data and visibility to track service requests and understand the service delivery value chain, paving the way for process enhancements in FSM.

The product will provide the following benefits:

  1. Reduce time taken for service delivery.

  2. Establish a chain of custody of waste from the point of collection to disposal.

  3. Digital record keeping of service deliveries.

  4. Support data interoperability with other sanitation systems in the state.

  5. Improve sustainability by providing visibility and control to the government.

Benefits to Value-Chain Stakeholders

Adoption Metrics

Adoption Goals
Metrics
Dependency

All content on this page by is licensed under a .

FSM User Manual

The DIGIT-Faecal Sludge Management (FSM) allows citizens to raise service requests for desludging and pay the fees for the service delivery online. For governing bodies and vendors, it makes service delivery easier and captures information end-to-end, ensuring waste pick up and its disposal at the correct treatment plant. Real-time tracking of service delivery, along with the availability of rich transactional data allow decision makers to ensure a better citizen service experience and promote a cleaner/healthier environment.

Key Features

  • Apply for desludging services

  • Make payment for services

  • Register desludging operators

  • Update vehicle logs

  • Manage vendors, vehicles and drivers

User Roles

Refer to the table below to understand the different user roles and the scope of action linked to each role. The manual provides a detailed description of how to use the system for each role.

User Role
Scope of Action
Role Description

Using FSM

This section guides you through the details of using the FSM module for each role. Click on the relevant role below to learn more about how to use the FSM system.

Category

Services

GIT TAGS

Docker artifact ID

Remarks

FSM v1.3.1

FSM

FSM calculator

Vehicle

Vendor

Inbox

Digit-UI FSM v1.3.1

DIGIT UI

DIGIT dependency builds

The FSM release is bundled with the DIGIT 2.8 release. Hence, the release builds for DIGIT 2.8 release can be accessed here.

Configs v1.3.1

MDMS v1.3.1

Localisation v1.3.1

Citizen

  • The citizen is able to have multi-channel access to safe and trackable service delivery. This leads to accountable and transparent services, and seamless grievance redressal.

  • They can receive push notifications with reminders for when their septic tank is due for desludging or with information on how to accurately segregate solid waste — to create behavioural nudges that contribute to healthier habitats.

  • Overall improvements in waste management and reduction in illegal dumping will mean that everyone lives in a cleaner and healthier neighbourhood, leading to public health gains (for example, a reduction in water-borne diseases).

Sanitation worker

  • The sanitation workers are skilled in safe sanitation practices, standards and tools.

  • Monitored service delivery will lead to optimisation of performance and create safe working conditions with transparency, ensuring compliance in safety practices.

  • Enumeration of sanitation workers will enable delivery of targeted benefits and welfare schemes for workers and their families (for example, health checkups, insurance, social security, scholarships for children, etc.).

ULB Employee

  • The ULB employee is able to create a single back-end registry for all incoming service requests. They are able to collect and maintain relevant citizen information to deliver efficient services.

  • The ULB employee is able to do remote tracking of value chain stakeholder — waste-transporters can be tracked in real-time to ensure that there is no illegal dumping of collected waste. They are able to ensure that quality of waste treatment meets the standards by validating automated records without being at the waste treatment plant.

Waste management vendors/Desludging Operators

  • Waste management vendors are able to assign tools and services that best suit the citizen who has raised the request by referring to the relevant information that would affect service delivery, such as property information. The ability to do this would make the process time and cost-effective.

  • Increasing the viability of waste management services will enable more private players to enter the fray, limit illegal dumping and eradicate opportunities for illegal manual scavenging.

Faecal Sludge/Co-treatment plant/Centre operator

  • The plant operator will be able to validate that there is no discrepancy in volume between the waste collected at the households and disposed off at the plant, ensuring that no waste drops off the value chain without treatment.

  • Adhere to the schedule for treatment quality, and record treatment quality results.

  • Adhere to the schedule for maintenance, and ensure that the plant is up and running efficiently.

  • Treatment plants can be plugged into waste-to-value markets, making it easier for buyers of processed and tested waste to discover and buy from them, thereby contributing to the financial sustainability of treatment plants.

Administrators

  • Govern the entire waste value chain via dashboards.

  • View the capacity available for transport and treatment at the state and ULB levels, and its utilisation via dashboards.

  • View compliance of SLAs and citizen satisfaction levels for services.

Citizen

Apply for desludging services

Make payment for services

Individuals and society groups/communities

Desludging Operators (DSO)

Take action on assigned service requests

Private or government entities

Septage Treatment Plant Operator (SeTPO)

Update vehicle log

Private or government entities

Employees

Apply for desludging services on behalf of citizens

Receive payment from citizens over the counter

Send back applications

Reject applications

Assign DSOs to service requests and update the status of the service requests

ULB employees

Citizens
Employees
DSO
SeTPO

Same day recording of the desludging requests

95%

1. Govt Holidays and Sundays - Usually no recording from the ULB side - Back entry 2. Medical leave or absence of ULB or FSTP personnel 3. Change of th ULB or FSTP personnel

Recording all the requests received from the citizens

95%

Functional Status of the Cesspool Vehicles and FSTP

Recording the trips reaching the FSTPs every day for both registered and un-registered vehicles

95%

TRPs on Holidays or leave

Requests are recorded from all the property types - Institutional, Commercial and Residential

100%

Coverage of properties

Volume of sludge from HH to Volume of sludge disposed at FSTP

100%

Currently captured as Volume of Vehicle

Recording all the requests received for all property types and sub types

No. of tickets with Zero Pricing = Increase in ~50 tickets per week across 36 ULBs (30% increase)

NA

UI based management of Vendor, Driver, Vehicle data

Reduction in no. of tickets to impel for adding/updating vendor/driver/vehicle data

If vehicle of new capacity in added, pricing has to be added in the backend from impel

URC - inclusiveness in service delivery -

increase in no. of administrative unit getting access to services

URC

Rise in no. of tickets - 10 per week across ULBs from rural

eGov Foundation
Creative Commons Attribution 4.0 International License

FSM DSO UI

Complete Request

Fetching data from the MDMS

Customising Fields In A Form

The config can be found at CompleteApplication.js

File Path: frontend/micro-ui/web/micro-ui-internals/packages/modules/fsm/src/pages/employee/ApplicationDetails/config/CompleteApplication.js

{
          label: "ES_NEW_APPLICATION_PROPERTY_TYPE",
          isMandatory: true,
          type: "component",
          route: "property-type",
          key: "propertyType",
          component: "SelectPropertyType",
          texts: {
            headerCaption: "",
            header: "CS_FILE_APPLICATION_PROPERTY_LABEL",
            cardText: "CS_FILE_APPLICATION_PROPERTY_TEXT",
            submitBarLabel: "CS_COMMON_NEXT",
          },
          nextStep: "property-subtype",
        },
        {
          label: "ES_NEW_APPLICATION_PROPERTY_SUB-TYPE",
          isMandatory: true,
          type: "component",
          route: "property-subtype",
          key: "subtype",
          component: "SelectPropertySubtype",
          texts: {
            headerCaption: "",
            header: "CS_FILE_APPLICATION_PROPERTY_SUBTYPE_LABEL",
            cardText: "CS_FILE_APPLICATION_PROPERTY_SUBTYPE_TEXT",
            submitBarLabel: "CS_COMMON_NEXT",
          },
          nextStep: "map",
        },
        {
          label: "ES_NEW_APPLICATION_PIT_TYPE",
          isMandatory: false,
          type: "component",
          route: "pit-type",
          key: "pitType",
          component: "SelectPitType",
          texts: {
            header: "CS_FILE_PROPERTY_PIT_TYPE",
            cardText: "CS_FILE_PROPERTY_PIT_TYPE_TEXT",
            submitBarLabel: "CS_COMMON_NEXT",
            skipText: "CORE_COMMON_SKIP_CONTINUE",
          },
          nextStep: "tank-size",
        },
        {
          route: "tank-size",
          component: "SelectTankSize",
          isMandatory: false,
          texts: {
            headerCaption: "",
            header: "CS_FILE_APPLICATION_PIT_SEPTIC_TANK_SIZE_TITLE",
            cardText: "CS_FILE_APPLICATION_PIT_SEPTIC_TANK_SIZE_TEXT",
            submitBarLabel: "CS_COMMON_NEXT",
          },
          type: "component",
          key: "pitDetail",
          nextStep: null,
          label: "ES_NEW_APPLICATION_PIT_DIMENSION",
        },

Upload Pit Photo Button

UploadPitPhoto.js molecule is available within the molecules folder in react-components.

File Path: frontend/micro-ui/web/micro-ui-internals/packages/react-components/src/molecules/UploadPitPhoto.js

Saving Image fileId in FSM service

const uploadImage = useCallback(async () => {
        if (uploadedImagesIds === null || uploadedImagesIds.length < 3) {
            const response = await Digit.UploadServices.Filestorage("FSM", image, props.tenantId);
            setUploadedImagesIds(addUploadedImageIds(response));
        } else {
            console.log("disabled")
        }
    }, [addUploadedImageIds, image]);

Filter Component On DSO Inbox Screen

The link for the MDMS changes made is given below.

egov-mdms-data/RoleStatusMapping.json at DEV · egovernments/egov-mdms-data

RoleStatusMappping.json

  {
            "userRole": "FSM_DSO",
            "statuses": [
                "DSO_INPROGRESS",
                "PENDING_DSO_APPROVAL",
                "COMPLETED",
            ],
            "zeroCheck": true,
            "fixed": false
        },

Schedule Action For Post Pay In DSO

Schedule Action is added for post-pay applications where DSOs can schedule the trip by entering the number of trips.

Code snippet for schedule window:

 case "SCHEDULE":
      case "ES_FSM_SCHEDULE":
        setFormValve(true);
        return setConfig(
          configScheduleDso({
            t,
            rejectMenu: Reason?.DeclineReason,
            setReason: setDeclineReason,
            reason: declineReason,
            applicationCreatedTime: applicationData?.auditDetails?.createdTime,
            vehicle,
            vehicleCapacity: applicationData?.vehicleCapacity,
            action,
            noOfTrips: applicationData?.noOfTrips
          })
        );

ScheduleDso.js is the file responsible for the schedule window pop up.

File path: frontend/micro-ui/web/micro-ui-internals/packages/modules/fsm/src/pages/employee/ApplicationDetails/config/ScheduleDso.js

Programme

SUJOG-Feacal Sludge & Septage Management (FSSM)

The Government of Odisha (GoO) has initiated a programme called "SUJOG - Sustainable Urban Services in a Jiffy by Odisha Government" through the Housing and Urban Development Department (H&UDD). The primary objective of this programme is to implement e-governance services across the Urban Local Bodies (ULBs) in the state. Its aim is to ensure that urban services are delivered to citizens in a seamless, transparent, and trackable manner. The programme has successfully been implemented in 115 ULBs in Odisha, and citizens can access these services through the DIGIT platform.

Facilitating effective sanitation management, the DIGIT Sanitation platform is currently live in 70 ULBs in Odisha. This platform specifically focuses on managing Feacal Sludge Management (FSM) in these areas. The programme aims to bring a paradigm shift in the way urban governance happens in the state by way of digitalisation. Its beneficiaries include citizens, the ULB administration, various government departments, and several other actors involved in the service delivery value chain.

One of the leading states in the domain of urban Feacal Sludge and Septage Management (FSSM), Odisha has already demonstrated effective city-wide FSSM systems in several ULBs with the commissioning of 108 FSTPs across 107 cities by September 2022, with further scale-up across all 115 ULBs underway. To ensure the continued and efficient delivery of FSSM services to all its citizens, the state has partnered with eGov Foundation (eGov) to roll out a Digital FSSM platform for managing the ULB-level operations and monitoring the performance of the FSSM service delivery.

The SUJOG-FSSM platform was successfully piloted in the three ULBs of Berhampur, Balasore, and Dhenkanal in December 2021. After successfully demonstrating three pilot ULBs, the programme has been approved by the HUDD (vide Letter No. 8951, and dated 20.05.2022), and communicated to all the ULBs and the other stakeholders involved in the rollout. Subsequently, the platform has been scaled up to cover 70 ULBs in Phase-1 and Phase-2. The platform will be further scaled up across all the 115 ULBs of Odisha, covering 119 Faecal Sludge Treatment Plants (FSTPs) to bring efficiency, transparency, and speed in the delivery of faecal sludge management services to the citizens through an online interface.

The Pilot

The pilot journey of SUJOG FSSM in Odisha across three ULBs can broadly be categorised into two phases - a phase before and March 2022. During the first phase, the prime focus was on training the end users online and driving citizen adoption through IEC campaigns. However, after three months of consistent efforts, multiple factors hindering the change management on ground surfaced. During the meeting held towards the end of February with HUDD and the key stakeholders involved in implementation, it was decided to investigate the reasons for low adoption rates across ULBs, and put in dedicated efforts towards enhancing the same.

Multiple field visits were conducted by various team members from the SUJOG FSSM implementation unit and following actions were taken towards enhancing the adoption:

  • Infrastructure procurement: One of the key gaps observed was the lack of connectivity for various users, especially the ones at FSTP. Following this observation, government orders were issued by the special secretary for the procurement of infrastructure. A constant monitoring mechanism with commissioners/EOs and the special secretary led to a quick infrastructure procurement across all three FSTPs & ULB offices .

  • In-person refresher training across all ULBs: One learning was that online training was not as effective as in-person, especially with the users in the FSM value chain. There was a spike in the number of requests being logged in the system by the employees as soon as the in-person refresher trainings were conducted across the 3 ULBs.

  • Daily adoption monitoring helped enhance the ownership among various users. This also helped establish a stronger support system for the quick resolution of issues.

  • The team identified the product enhancements that needed to be implemented to further improve the adoption. Two major enhancements that happened as a result are the option for recording the payment post the service, and multi-trip capabilities for each request.

  • Following the above efforts and enhancements, adoption across pilot ULBs has improved drastically. The number of requests before March 2022 (since December 2021) stood at 237 for all three pilot ULBs. The requests between March 2022 and May 2022 were nearly five times higher at 1,167. Given the significant improvement in adoption, a letter was issued to prepare the ULBs for a phased implementation of a statewide rollout of SUJOG FSSM in May 2022.

Phase 1 roll-out:

Preparations for the phase 1 rollout emerged from the learnings the implementation team had during the pilot phase. Phase 1 ULBs were selected following multiple discussions with the state officials & TSU. Following steps ensured the sustained adoption of the application across all ULBs:

Infrastructure readiness: Infrastructure assessment was conducted across all these ULBs before the data collection process. Letters were issued to expedite the infrastructure procurement, and ensure all the ULBs and FSTPs were equipped sufficiently for recording the requests and closing them on a real-time basis.

Involving DUDA officials in configuration: Data collection for configuring the application happened through DUDA officials, who were responsible for data collection and verification in their respective districts. This ensured that the data collection process was quicker and error-proof.

Partnership with OWA for training: Train-the-trainer approach was taken for ensuring successful knowledge transfer to all the potential end users of the application. OWA master trainers were trained to conduct the training sessions with the end users. This smoothened the interactions between trainers and trainees as all the master trainers were well versed with the users skillset and also training in the state language, Odia.

Extensive training sessions were conducted over a span of three days to ensure successful knowledge transfer to over 100+ end-users across 37 ULBs. Interactive sessions by the master trainers helped the end-users understand the steps quickly and start using the application themselves. All the trainees were able to demonstrate the application's usage by the end of the training session. This eased the efforts towards driving adoption among the phase 1 ULBs.

Weekly monitoring of adoption and support for the ULBs: All the state officials involved in the rollout of SUJOG FSSM were part of weekly mentoring sessions. These sessions acted as a channel where the ULBs could discuss insights, ground level challenges, and issues related to the platform and obtain quick resolution. This also ensured sustained adoption. Over 90% of the applications are being recorded on the platform across ULBs, keeping in view the current feature availability on the platform.

Bi-weekly reviews with ULB representatives: The EOs and COs were involved in the bi-weekly calls which were chaired by the additional secretary and engineer-in-chief. The calls revolved mostly around discussing and identifying the gaps in FSM service delivery and SUJOG-FSSM adoption. These calls were also leveraged to discuss policy level changes, identify issues, and challenges from the ULB SPoCs and executives, or TRPs, for immediate action.

Field visits: The eGov team visited 29 ULBs to understand the on-ground situation. The purpose of the visits was to comprehend the FSM value chain and the operational status of FSTPs. The visits were planned and shared with the ULBs, and the team met with FSSM SPocS (sanitation experts/sanitation nodal officers), executives, and EOs/COs during the visits to clarify their viewpoints. All 29 FSTPs were visited, and in-depth discussions with SHG members and technical resource personnel were held. We were able to see things more broadly and understand the gaps that was impeding adoption and service delivery. The state was then informed of the learnings for them to take the necessary action.

Product Features, Roadmap, and Data Captured in SUJOG-FSSM:

The platform enables multiple stakeholders to interact: Citizens, ULB FSSM executives, cesspool operators, and technical resource personnel from FSTPs. This allows a citizen to raise a desludging request by providing minimum information, and a ULB FSSM executive to take action on the raised request or log in request on behalf of a citizen. In the process, citizens are regularly informed of the status of their requests. The role of the technical resource person is to then close all the requests raised once the cesspool operators dispose of the septage in the FSTPs. This ensures the maintenance, monitoring, and tracking of the entire FSM value chain.

Expected Outcomes

The expected outcomes after optimal and efficient usage of the SUJOG-FSSM platform are mentioned below:

  • Access to quality e-service delivery of FSSM that is consistent and supported by local governance systems at ULBs (and also at FSTPs).

  • Inclusion of private players within the ambit of the FSSM transformation, besides providing oversight to the ULB administration.

  • Revenue generated from the FSSM services is captured in the platform. It will help in devising enhanced revenue models for operation and maintenance.

  • The dashboard must be accessible to all stakeholders, and any warning signs about implementing the FSSM in any geographic area can be promptly and efficiently handled.

  • The data and details recorded in the platform can be used for an in-depth study of the cities' FSSM effort by focusing on areas that need improvement or improved enforcement.

  • Greater transparency in the entire value chain, such as real-time tracking of cesspool vehicles (GPS integration), payment systems, etc.

  • The robust monitoring system in the platform will help city administrators to implement scheduled desludging of septic tanks for all properties and design performance-based contracts for the private DSOs.

Here are the articles in this section:

  • Functional customisation

  • Technical customisation

  • Program rollout plan

  • Adoption metrics

  • Implementation plan

  • Implementation guide

  • Implementation checklist

Septage Treatment Plant Operator User Manual

The Septage Treatment Plant Operator (SeTPO) receives multiple vehicles servicing various desludging requests in the urban local body (ULB) and adjacent gram panchayats (GPs) through the day, each day. Some of these trips made by some vehicles may be associated with the applications raised and serviced through the platform. Additionally, incoming vehicles may come in independently, without corresponding applications.

SeTPO can‌:

  • Update the status of applications and trips in “Waiting for Disposal” stage at the FSTP/STP as disposed

  • Log vehicle(s) requests that are not in the system

Login

FSTP operators are provided credentials to login to the system.

User Actions

On this page, the following actions can be performed:

  • Enter username and password

  • Select the city for login

  • Reset password by clicking on the “Forgot Password” link

On clicking continue, FSTP operators are redirected to the FSM homepage.

User Actions

  • Click on Inbox to view incoming vehicles for disposal against applications and perform actions

  • Record incoming vehicle that has not come in via an application

  • View reports

  • Change language

  • Edit profile details by clicking on the user icon on the top right hand corner

  • Logout by clicking on the user icon on top right hand corner

On this page, the following actions can be performed:

Updating Disposal Status of Trips

To view incoming vehicles for disposal against applications, the user can navigate to the inbox. The inbox displays a list of trips along with the vehicle number that is pending to be disposed off at a specific plant.

User Actions

The following actions can be performed:

  • Search for an active trip using the “Application No.”, Vehicle no. and DSO name.

  • Clear search by clicking on “Clear Search”

  • View and update trip details by clicking on a trip ID or vehicle log

  • Sort applications and trips by the application date

On clicking on an application number or vehicle log ID, the user is redirected to the update trip page.

Confirming Disposal

User Actions

  • View trip details such as Vehicle no., DSO Name, and Locality.

  • Update vehicle in time and out time.

  • Update septage dumped (in litres)

  • Add additional details and attachments.

  • Submit form or decline vehicle by clicking on the “Take Action” button

The following actions can be performed:

The take action button has the following options:

  • Decline Vehicle

  • Submit

On clicking the Submit button, the application is updated successfully and a snack bar will appear for confirmation. The application will also be removed from the Inbox.

Declining Vehicle

There are multiple reasons why a vehicle may be declined at the treatment plant, such as due to the quality of waste or if the plant is under maintenance. In such cases, the treatment plant operator may decline the incoming vehicle. This can be done from the application details page where the “Take Action” button has the option for Decline. On clicking on this, the following pop-up will appear.

User Actions

The following actions can be performed:

  • Select the reason for declining

  • Close pop-up by clicking on the Close button on the pop up.

  • Close pop-up by clicking on the cross icon on the top right of the pop up.

  • Confirm decline by clicking on Decline Vehicle.

On clicking on Decline Vehicle, there will be a snack bar confirming the action and the user will be redirected to the home screen.

Log Vehicle Requests that are Not in the System

Incoming vehicles that have not come in via an application can be recorded by the user using the add ‘New’ button on the FSM home screen. On clicking on the New button, the user will be redirected to the following screen:

User Actions

The following actions can be performed:

  • Enter Vehicle Number

  • Click on Next

Once vehicle number is entered, the ‘Next’ button will be highlighted and the user will be redirected to the Vehicle Log screen.

User Actions

The following actions can be performed:

  • Update DSO Name and Locality

  • Update Vehicle In time and Out time.

  • Update volume of waste.

  • Update Additional Details and Attachments.

  • Submit the form by clicking on Submit.

A snack bar will confirm submission and the user will be redirected to the FSM homepage.

FSM FSTPO UI

In FSTP, we are trying to decouple the vehicle dispose from the FSM application. Whether vehicle is attached to any FSM application or not, we allow the vehicle to dispose in the FSTP plant.

FSTP Home UI:

After logging as a FSTP user, we have now the home button option:

Technical Implementation Details:

Code changes path are:

DIGIT-Dev/frontend/micro-ui/web/micro-ui-internals/packages/modules/fsm/src/components/FsmCard.js

FSTP Operations UI:

After moving into “home” option, an FSTP user can choose from the following options:

  • FSTP can choose Add Vehicle Log option if he/she wants to check whether a vehicle is linked to any application and dispose.

  • FSTP can choose Inbox if he/she wants to check all the applications that are is ready to dispose.

Technical Implementation Details:

The path for code:

frontend/micro-ui/web/micro-ui-internals/packages/modules/fsm/src/pages/employee/FstpOperations.js

The code snippet for populating the options:

The code snippet for rendering the icon:

ULBHomeCard.js is the common component used to populate options in the screen.

The paths:

frontend/micro-ui/web/micro-ui-internals/packages/react-components/src/atoms/ULBHomeCard.js

FSTP Add Vehicle Log UI:

FSTP can add vehicle log using vehicle number (in proper format with spaces, e.g. AB 00 CD 1234). An improper format will throw an error.

Techincal Implementation Details:

The path for the code:

frontend/micro-ui/web/micro-ui-internals/packages/modules/fsm/src/pages/employee/FstpAddVehicle.js

The code snippet for populating the add vehicle log field and its validation:

The code snippet for rendering the screen:

FSTP Service Request Screen:

After entering the vehicle number in the add vehicle log screen, we are fetching the FSM application, which is linked to that specific vehicle number. The data is rendered as shown below:

Technical Implementation Details:

The path for the code:

frontend/micro-ui/web/micro-ui-internals/packages/modules/fsm/src/pages/employee/FstpServiceRequest.js

The code snippets for fetching the FSM application linked to vehicle number:

Fetching the vehicle Id using vehicle number

Fetching the vehicle log using vehicle Id

Extracting out the FSM application number from vehicle log:

Fetching the FSM application details using FSM application number

The code snippets to render the data:

Mobile view

Desktop view

Vehicle Log screen:

After selecting the application, FSTPO can dispose the vehicle log in the vehicle log screen.

Additional details and attachment fields are introduced in new updates in FSM v1.2.1 .

The screen for the existing vehicle log:

The screen for new vehicle log if no application is found for vehicle is shown below. FSTPO can dispose the new vehicle log by providing all the details below.

Technical Implementation Details:

The path for the code:

frontend/micro-ui/web/micro-ui-internals/packages/modules/fsm/src/pages/employee/FstpOperatorDetails.js

The code snippet for additional details and attachments field:

For new vehicle log:

The code snippets to render input field for new vehicle log:

Vendor Technical Specification

Overview

Vehicle Registry is a system that enables urban local body (ULB) employees to create and search vendors, that is, Desludging Operators (DSO) and driver entities with appropriate vehicle entities for the FSM application.

Service Dependencies:

  • egov-mdms-service

  • egov-user-service

  • boundary-service

  • Egov-idgen

  • egov-workflow-v2

  • vehicle

API Specification

Data Model

Web Sequence Diagrams

Vendor Swagger Link
Creative Commons License
Creative Commons License

Setting Up Workflows

Overview

Every service integrated with egov-workflow-v2 service needs to first define the workflow configuration which describes the states in the workflow, the action that can be taken on these states, who all can perform those actions, SLA, etc. This configuration is created using APIs and is stored in DB. The configuration can be created either at the state-level or tenant-level based on the requirements.

Pre-requisites

Before you proceed with the configuration, make sure the following pre-requisites are met:

  • egov-workflow-v2 service is up and running

  • Role Action mapping is added for the BusinessService API’s

Key Functionalities

  • Create and modify the workflow configuration.

  • Configure the state level as well the BusinessService-level SLA.

  • Control access to workflow actions from configuration.

  • Validate if the flow defined in configuration is complete during creation.

Deployment Details

  1. Deploy latest version of egov-workflow-v2 service.

  2. Add role action mapping for BusinessService API’s (preferably add create and update only for SUPERUSER. Search can be added for a CITIZEN and required employee roles like TL_CEMP, etc.).

  3. Overwrite the egov.wf.statelevel flag (true for state-level and false for tenant-level).

  4. Add businessService persister yaml path in persister configuration.

Confuiguration Details

1. Create the businessService JSON based on the product requirement. Following is a sample json of a simple 2-step workflow where an application can be applied by a citizen or counter employee, and then can be either rejected or approved by the approver.

{
      "tenantId": "pb",
      "businessService": "PGR",
      "business": "pgr-services",
      "businessServiceSla": 432000000,
      "states": [
        {
          "sla": null,
          "state": null,
          "applicationStatus": null,
          "docUploadRequired": false,
          "isStartState": true,
          "isTerminateState": false,
          "isStateUpdatable": true,
          "actions": [
            {
              "action": "APPLY",
              "nextState": "PENDINGFORASSIGNMENT",
              "roles": [
                "CITIZEN",
                "COUNTER_EMPLOYEE"
              ]
            }
          ]
        },
        {
          "sla": null,
          "state": "APPLIED",
          "applicationStatus": "APPLIED",
          "docUploadRequired": false,
          "isStartState": false,
          "isTerminateState": false,
          "isStateUpdatable": false,
          "actions": [
            {
              "action": "APPROVE",
              "nextState": "APPROVED",
              "roles": [
                "APPROVER"
              ]
            },
            {
              "action": "REJECT",
              "nextState": "REJECTED",
              "roles": [
                "APPROVER"
              ]
            }
          ]
        },
        {
          "sla": null,
          "state": "REJECTED",
          "applicationStatus": "REJECTED",
          "isStateUpdatable": false,
          "docUploadRequired": false,
          "isStartState": false,
          "isTerminateState": true
        },
        {
          "sla": null,
          "state": "APPROVED",
          "applicationStatus": "APPROVED",
          "isStateUpdatable": false,
          "docUploadRequired": false,
          "isStartState": false,
          "isTerminateState": true
        }
      ]
    }

2. Once the businessService json is created, add it in request body of _create API of the workflow, and call the API to create the workflow.

3. To update the workflow, search the workflow object using _search API, and then make changes in the businessService object and then call _update using the modified search result. (States cannot be removed using _update API as it will leave the applications in that state in an invalid state. In such cases, first all the applications in that state should be moved forward or backward, and then the state should be disabled through DB directly).

Integration

Integration Scope

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, and increase the accountability.

Integration Benefits

Integrating with the workflow service provides a way to have a dynamic workflow configuration which can be easily modified according to the changing requirements. The modules do not have to deal with any validations regarding the workflow such as authorisation of the user to take an action, if documents are required to be uploaded at certain stage, etc., as they will be automatically handled by egov-workflow-v2 service based on the configuration defined. It automatically keeps updating the SLA for all applications, which provides a way to track the time taken by an application to get processed.

Steps to Integration

  1. To integrate, the host of egov-workflow-v2 should be overwritten in the helm chart.

  2. /egov-workflow-v2/egov-wf/businessservice/_search should be added as the endpoint for searching the workflow configuration. (Other endpoints are not required once the workflow configuration is created).

  3. The configuration can be fetched by calling _search API.

Reference Docs

Title

Link

Configuring workflows for new product/entity

Workflow service documentation

API List

Title

Link

_create

_update

_search

Note: All APIs are in the same postman collection. Hence, the same link has been added in each row.

Product

DIGIT Sanitation started with Faecal Sludge Management (FSM) and in future, we will pick up Solid Waste Management (SWM). Beyond that, we believe that the platform can be leveraged for other waste streams but the nature of our intervention will be evolve.

Overview of Faecal Sludge Management

The waste we flush down the toilet does not always go into a sewer. Approximately 70% of the households in India have toilets connected to septic tanks or soak pits, technically known as on-site containment systems. They accumulate and store faecal matter over a long period. In sewers, the faecal matter travels daily with a lot of water through long concrete pipes. But in the case of on-site systems, it stays stored for about 3-5 years. Once the storage is full, the waste is emptied and transported to the treatment plant through vacuum trucks. The end-to-end value chain of safe storage, collection, transport, treatment, and end-use or disposal of faecal matter is called Faecal Sludge and Septage Management or FSSM. ‘Faecal Sludge’ and ’Septage’ are used to describe faecal matter in a specific physical and chemical state after prolonged storage.

Why FSM matters - It is the way forward in sanitation

FSSM has emerged as a cost-efficient population scale alternative to the networked sewer, which has been the traditional method of wastewater management.

  1. Cost-effective: FSSM is 10 times cheaper than sewer systems.

  2. Coverage: Less than one-third of urban toilet users are connected to sewer systems. The rest are more or less dependent on FSSM systems. Targeting FSSM will help us impact the maximum number of citizens.

  3. Scale: In India's Swachh Bharat mission, 11 crore toilets were constructed across the country. Most are connected to on-site systems, which again increases the need for FSSM.

Our current understanding of the problems in septage management is based on our interactions with stakeholders and thorough published reports, and whitepapers. We are aware that FSSM systems have interdependent parts, and each stage of the FSSM value chain impacts how effectively the next stage functions. For instance, if the septic tanks do not have proper access, they will add to the cost of emptying, adding time and cost burden on desludging operators (DSOs). Similarly, it becomes unviable for the DSOs to dump the waste at the treatment plant if it is far from the city which is often the case.

While the linear sanitation value chain provides an understanding of the flow of faecal sludge, it does not capture all stakeholders in the process that control and influence the current effectiveness of sanitation systems.

Systems Map

We will use a systems mapping approach to outline the different factors and interactions within the sanitation value chain. We will explore systemic challenges at each part of the value chain that result in poor sanitation outcomes.

Reference Link

Part 1 - Toilets and containment units

Problems faced by key stakeholders

City managers, central/state governments

While sanitation is a priority of the central and state governments, city administrators have been strapped due to deficiencies in standards, building codes, municipal processes, and contracting and monitoring capabilities. These make it difficult to ensure the adequacy, usability, and safety of the toilets provisioned by public funds.

Masons

Masons are fundamental in proper construction of toilets and containment units. But a majority of masons currently lack the necessary training on construction standards. They are rarely employed using formal contracts, contributinb to the lack of traceability and accountability during the construction of toilets.

Citizens

Lack of awareness of the impact of improper construction of toilets and containment tanks, or constraints of affordability and space, leads citizens to influence masons to build containment units that do not follow technical standards. It is difficult to identify trained masons and services are procured through social networks and word of mouth.

Part 2 - Emptying and transport

Problems faced by key stakeholders

Desludging operators

  • Lack of proper access to the containment systems adds time-cost to service.

  • Treatment plants are located far from the city, making safe dumping unviable.

  • While the payment from citizens is a clear incentive for emptying the tanks or pits, there are no incentives to ensure the safe transport of the faecal sludge to the treatment plant.

  • Operations remain inefficient without timely and useful information for service delivery. Working conditions are risky, but provisions for personal protection equipment and emergency healthcare services are rare.

Citizens

  • It is difficult to identify and book desludging services and service delivery is not reliable.

  • Low-income households are denied service since they are not able to afford the full cost.

City managers, central/state governments

  • Challenging to regulate the market for safe dumping without compromising service delivery.

  • Lack of clear and actionable information in terms of safe or unsafe dumping of faecal sludge.

  • Lack of pricing policies, infrastructure standards, licensing processes, and contracting and monitoring capacity limit the ability of decision-makers to take action.

Part 3 - Treatment

City managers, centre/state governments

  • Difficult to regulate the market across various stages of construction and operations.

  • Operational data of the treatment plant and process is often recorded offline and used for post-facto auditing. There is a pervasive lack of actionable information.

  • Lack of rational pricing policies, comprehensive service benchmarks and infrastructure standards, contracting and monitoring tools hamper corrective action.

Plant operators

  • The supply of desludging load varies in an unreliable and unpredictable manner, and over time, leads to system failure.

  • Treatment plant management and maintenance is difficult and costly, and the payments are often not linked to performance.

  • The performance is not directly causally linked to the environmental impact.

  • Operations are not monitored to facilitate preventive action within the plant, and lack any binding linkages with standard operating procedures and service level agreements.

Part 4 - Ecosystem

Civil society and academia

  • In the absence of data, researchers struggle to create new knowledge around the failures, risks, and opportunities, as well as give recommendations for improvement.

  • Since policy and standards are not mapped to operational data, it is difficult for the ecosystem to translate knowledge to action, impact and access.

Government

  • Inability to trace the impact and proper usage of grants and subsidies for sanitation.

  • Limited state capacity in terms of budget, skilled human resources, tools, and technology. Coordination across multiple functions, such as standard-setting, policy-making, contracting, audit, monitoring, is needed to keep sanitation systems functional.

  • Limited penetration of technology, innovation, and competition in the sanitation sector, makes it difficult for the government to enforce accountability across internal processes and market interactions.

Critical Problems in FSSM

At the core of all systemic challenges, there are problems that hinder a systemic change, limit stakeholders from implementing changes, or even cause the system to collapse. The identified problems are explained below:

Absence of well-defined standards for sanitation

  • Current standards do not cover all aspects of sanitation and service delivery - such as standards of treated human waste, treatment plant technologies, and benchmarks, among others.

  • The ecosystem has created many standards, which are not formally notified or enforced.

  • Where standards exist, awareness and compliance are dismal for the following reasons:

  1. Many actors in the value chain do not have the necessary knowledge, skills, or standard operating procedures.

  2. Complexities in service delivery result in incomplete or improper service.

  3. Poor requirement specifications in the Request for Proposals (RFPs) documents.

  4. Model contracts exist but are not followed.

  5. Delays in corrective action since contracts are not tightly coupled with monitoring.

Broken chain of custody from waste generation to reuse

  • Systemic data either does not exist or remains disjointed to understand how much waste exists, where, when, with whom, and why.

  • Feacal sludge tends to drop out of the value chain, untreated.The unavailability of the information - who dropped it, when, how, or where it ended up polluting the environment - hampers the process of taking corrective and preventive measures

Lack of verifiable, trusted data at various levels

  • Data around faceal sludge (how much, where, when, who is responsible) is too little.

  • Required data is not created, available, or shared across relevant ecosystem actors. As a result, the performance of sanitation systems remains opaque and unobservable.

Inability to convert waste to value

  • Current systems are not structured to maximise the value from faceal sludge and related services.

  • The policy framework may not recognise treated human excreta as compost. Unclear and fragmented demand for treated waste contributes to lax operations upstream.

Encryption Client Library

Overview

The enc-client library is a supplementary Java library provided to support encryption-related functionalities so that every service does not need to pre-process the request before calling the encryption service.

Pre-requisites

  • MDMS Service

  • Encryption Service

  • Kafka

Note: The MDMS configurations explained below are fetched by this library at boot time. After you make changes in the MDMS repo and restart the MDMS service, you will need to RESTART THE SERVICE which has imported the enc-client library. For example, the report service is using the enc-client library, so after making configuration changes to the security policy pertaining to any report, you will have to restart the report service.

Key Functionalities

  • Encrypt a JSON Object - The encryptJson function of the library takes any Java object as an input and returns an object which has encrypted values of the selected fields. The fields to be encrypted are selected based on an MDMS configuration. This function requires the following parameters:

  1. Java/JSON object - The object whose fields will get encrypted.

  2. Model - It is used to identify the MDMS configuration to be used to select fields of the provided object.

  3. Tenant Id - The encryption key will be selected based on the passed tenantId.

  • Encrypt a Value - The encryptValue function of the library can be used to encrypt single values. This method also required a tenantId parameter.

  • Decrypt a JSON Object - The decryptJson function of the library takes any Java Object as an input and returns an object that has plain/masked or no values of the encrypted fields. The fields are identified based on the MDMS configuration. The returned value(plain/masked/null) of each of the attribute depends on the user’s role and if it is a PlainAccess request or a normal request. These configurations are part of the MDMS. This function required following parameters:

  1. Java/JSON object - The object containing the encrypted values that are to be decrypted.

  2. Model - It is used to select a configuration from the list of all available MDMS configurations.

  3. Purpose - It is a string parameter that passes the reason of the decrypt request. It is used for Audit purposes.

  4. RequestInfo - The requestInfo parameter serves multiple purposes:

- User Role - A list of user roles are extracted from the requestInfo parameter.

- PlainAccess Request - If the request is an explicit plain access request, it is to be passed as a part of the requestInfo. It will contain the fields that user is requesting for decryption and the id of record.

  • While decrypting Java object, this method also audits the request.

Configurations

All configurations related to enc-client library are stored in the MDMS. These master data are stored in DataSecurity module. It has two types of configurations:

  1. Masking patterns

  2. Security policy

Masking Patterns

The masking patterns for different types of attributes (mobile number, name, etc.) are configurable in MDMS. It contains the following attributes:

  1. patternId - It is the unique pattern identifier. This id is referred to in the SecurityPolicy MDMS.

  2. pattern - This defines the actual pattern according to which the value will be masked.

Click to see a sample of the masking patterns master data.

To know more about regular expression refer the below articles To test regular expression refer the below link.

Security Policy

The security policy master data contains the policy used to encrypt and decrypt JSON objects. Each security policy contains the following details:

  1. model - This is the unique identifier of the policy.

  2. uniqueIdentifier - The field defined here should uniquely identify records passed to the decryptJson function.

  3. attributes - This defines a list of fields from the JSON object that needs to be secured.

  4. roleBasedDecryptionPolicy - This defines attribute-level role-based policy. It will define visibility for each attribute.

Visibility

The visibility is an enum with the following options:

  1. PLAIN - Show text in a plain form.

  2. MASKED - The returned text will contain masked data. The masking pattern will be applied as defined in the masking patterns master data.

  3. NONE - The returned text will not contain any data. It would contain string like “Confidential Information”.

It defines what level of visibility should the decryptJson function return for each attribute.

Attribute

  1. name - This uniquely identifies the attribute out of the list of attributes for a given model.

  2. jsonPath - It is the json path of the attribute from the root of the model. This jsonPath is NOT the same as Jayway JsonPath library. This uses / and * to define the Json paths.

  3. patternId - It refers to the pattern to be used for masking which is defined in the masking patterns master.

  4. defaultVisibility - It is an enum configuring the default level of visibility of that attribute. If the visibility is not defined for a given role, then this defaultVisibility will apply.

The attribute defines a list of attributes of the model that are to be secured. The attribute is defined by the following parameters:

Unique Identifier

This parameter is used to define the unique identifier of that model. It is used for the purpose of auditing the access logs. (This attribute’s jsonPath should be at the root level of the model).

Role-Based Decryption Policy

It defines attribute-level access policies for a list of roles, and has the following parameters:

  1. roles - It defines a list of role codes for which the policy will get applied. Make sure not to duplicate role codes anywhere in the other policy. Otherwise, any one of the policies will get chosen for that role code.

  2. attributeAccessList - It defines a list of attributes for which the visibility differs from the default for those roles. There are two levels of visibility:

    1. First-level visibility: It applies to normal search requests. The search response could have multiple records.

    2. Second-level visibility: It is applied only when a user explicitly requests for plain access of a single record with a list of fields required in plain. The second-level visibility can be requested by passing plainAccessRequest in the RequestInfo.

    Plain Access Request

Any user will be able to get plain access to the secured data (citizen’s PII) by requesting through the plainAccessRequest parameter. It takes the following parameters:

  1. recordId - It is the unique identifier of the record that is requested for plain access.

  2. fields - It defines a list of attributes that are requested for plain access.

Audit Service

Every decrypt request is audited. Based on the uniqueIdentifier defined as part of the security policy, it lists out the identifiers of the records that were decrypted as part of the request. Each audit object contains the following attributes:

Configuring Workflows For New Product/Entity
Workflow Service
https://www.getpostman.com/collections/8552e3de40c819e34190
https://www.getpostman.com/collections/8552e3de40c819e34190
https://www.getpostman.com/collections/8552e3de40c819e34190
{
    "patternId": "001",
    "pattern": ".(?=.{4})"
}
{
  "name": "mobileNumber",
  "jsonPath": "mobileNumber",
  "patternId": "001",
  "defaultVisibility": "MASKED"
}
{
  "name": "uuid",
  "jsonPath": "uuid"
}
{
  "roles": [ "PGR_LME", "GRO" ],
  "attributeAccessList": [
    {
      "attribute": "name",
      "firstLevelVisibility": "MASKED",
      "secondLevelVisibility": "PLAIN"
    },
    {
      "attribute": "mobileNumber",
      "firstLevelVisibility": "MASKED",
      "secondLevelVisibility": "PLAIN"
    }
  ]
}
{
  "RequestInfo": {
    "plainAccessRequest": {
      "recordId": "d5ee3d45-13a1-4aa5-bd86-9b8dae34b900"
      "fields": [ "name", "mobileNumber" ]
    }
  }
}
AuditObject {  
    private String id;      // Audit object's unique identifer

    private String userId;  // The user that has requested for decryption

    private Long timestamp; // The time at which the decryption was requested

    private String purpose; // The purpose of the decryption request

    private String model;   // The model that is requested to decrypt

    private List<String> entityIds; // A list of ids of the entity that were decrypted

    private PlainRequestAccess plainRequestAccess;  // The parameters that were passed as part of the decryption request

    private JsonNode additionalInfo;  // A space for storing any additional information
}
here
https://towardsdatascience.com/regular-expressions-clearly-explained-with-examples-822d76b037b4
Java Regular Expressions for Masks
regex101: build, test, and debug regex

Sanitation Actors & Interactions

Actor Interaction Mapping

The above diagram illustrates the integration between each actor. A brief description of each role is provided below:

Role

Description

Action

System Administrator

  1. Define boundaries.

  2. Create roles and map to actions.

  3. Create users: Map to the role and boundary (boundary mapping to be confirmed).

  4. Define property types and sub-types.

  5. Define pricing.

  6. Upload the list of localities and pin codes.

  7. Upload the list of slums.

  8. Define the minimum advance pricing to be collected.

  9. Create localisation.

Citizen

A citizen can request for a desludging operation online. The user can check the status of the application online, make the payment for the service online, and post desludging, they can rate the quality of the service online.

  1. Request for desludging services.

  2. View the acknowledgement receipt.

  3. View the payment receipts.

  4. Track the status of desludging requests.

  5. View the history of past desludging services.

  6. Make online payments.

ULB Employee (Can be assigned roles as creator, collector, editor, report viewer, dashboard viewer or admin)

A ULB official will act as a regulatory and management authority for the entire desludging process. He/she can receive the request from a citizen online or can create a request on behalf of the citizen online. When the request is received, the user can assign a desludging operator for a request. The official can also update the status of the request on behalf of the DSO after the service is completed at the site, and view the relevant reports.

  1. Add, update, and disable vendors.

  2. Add, update, and disable drivers.

  3. Add, update, and disable vehicles.

  4. Map vendors and drivers.

  5. Map vehicles and drivers.

  6. Create desludging service requests on behalf of citizens.

  7. Accept, reject, or update desludging service requests

  8. Assign vendors to desludging services.

  9. Collect service fees.

  10. View dashboards and reports for a specific ULB.

Transportation Vendors

This user can receive the requests assigned by a ULB official, and update the status of the transaction after the service is completed.

  1. Accept/reject desludging requests.

  2. Assign vehicles to requests.

  3. Update the number of trips.

  4. Map the completion of requests.

Treatment Plant Operator

This user can view the current demand, that is, the list of planned desludging requests available in the system. He/she can update the vehicle log which enters the FSTP/STP every day.

  1. Record incoming vehicles against requests.

  2. Record incoming vehicles without associated service requests.

State Administrator

  1. View dashboards and reports for states.

  2. Filter dashboards and reports by time, and for a specific ULB.

2. DeploymentDIGIT CORE

Technical Customisation

DIGIT UI Implementaton: Guidelines & FAQs

Development Setup

Repo:

Use the dev branch as the base branch for development.

Clone the repo and start using the following steps:

## install

yarn install

## start dev server

yarn start

Adding or modifying modules

  • Modules are enabled by the MDMS config at.

  • To add and enable any module in the new UI, src/App.js needs to be changed.

  • Till PGR, we used to export the module and links were added to the registry. Now, adding to the registry is part of the modules themselves. We export only the init function of the module to take care of all the initialisations. Going forward, these init functions will have to be called. We will create the init function of PGR as well. These init modules must be called after initLibraries.

Changing CS

CSS classes are published over CDN and can be seen at: https://unpkg.com/@egovernments/digit-ui-css/dist/index.css

Any class can be overwritten. Make changes in the src/index.css file.

Customising Fields in a Form

Add any new component created in the registry,

Digit.ComponentRegistryService.setupRegistry({

SelectName: SelectName

});

  • If API calls are failing, the do the following:

Check src/setupProxy.js for proxy url in dev mode.

  • If API calls are failing with no authorisation token, then do the following:

Create a .env file with following:

REACT_APP_USER_TYPE=

REACT_APP_CITIZEN_TOKEN=a3e5f0a2-4ff0-4680-855e-75051fb3e8f7

REACT_APP_EMPLOYEE_TOKEN=061bad07-c0d5-4200-a74f-ca5ed090cf30

REACT_APP_GRO_TOKEN=43af4c18-6418-4a35-8484-31f0700f465a

REACT_APP_LME_TOKEN=fa9f4184-dc64-495d-bded-31674c71b09e

FSM UI Implementation: Guidelines & FAQs

Enable FSM

Modules are enabled by the MDMS config at: .

It is done on dev via:

Create a new branch for the state if already doesn’t exist from the master of repo:

.

To add and enable any module in the new UI, src/App.js needs to be changed.

We only export the init function of the module to take care of all the initialisations:

import { initFSMComponents } from "@egovernments/digit-ui-module-fsm";

const enabledModules = ["FSM"];

initFSMComponents();

Changing CSS

CSS classes are published over CDN and can be seen at: https://unpkg.com/@egovernments/digit-ui-css/dist/index.css

Any class can be overwritten. Make changes in the src/index.css file.

Customising Fields in a Form

Add any new component created in the registry,

Digit.ComponentRegistryService.setupRegistry({

SelectName: SelectName});

Application config: The default config can be found at.

The config has different items in the application form. The new config, if made, needs to be initialised at Digit.Customizations.FSM.applicationFormConfig

  • label: is the employee side label

  • texts: is used for citizen side step form

  • component: the component that is to be rendered here. Any component can be created to show here; examples can be seen at, These components are passed following params:

- t: translate function to be used to convert a key to localized text. e.g., t("CS_CREATECOMPLAINT_MOHALLA")

- config: current step config as shown above

- onSelect: on clicking of next or input, this handled to be called to save the data in the form state

- userType: employee or citizen

- formData: the current form state

Similarly, in case of Applicant Details, MDMS config is located at:

The Trip Details MDMS config is located at:

Customising Views

Application details can be customised via defining: Digit.Customizations.FSM.getApplicationDetailsTableRows

The function will be passed following params:

  • id: application id

  • service: application response object

  • role: currently logged in user role CITIZEN or EMPLOYEE

  • t: function used for translation

Customising Inbox Status Filter

Status can be filtered and rendered by MDMS config located at:

Following customisations are available:

  • userRole : Role of the logged in user for application of customisation.

  • statuses : List of statuses that needs to be shown for the specified user.

  • zeroCheck : Check if the total application count for any status is 0 to hide or rearrange the list.

  • fixed : Limits the status filter list to the specified list.

{
  label: "ES_NEW_APPLICATION_PROPERTY_TYPE",
  isMandatory: true,
  type: "component",
  route: "property-type",
  key: "propertyType",
  component: "SelectPropertyType",
  texts: {
    headerCaption: "",
    header: "CS_FILE_APPLICATION_PROPERTY_LABEL",
    cardText: "CS_FILE_APPLICATION_PROPERTY_TEXT",
    submitBarLabel: "CS_COMMON_NEXT",
  },
  nextStep: "property-subtype",
}
getApplicationDetailsTableRows: ({ id, service, role, t }) => {
    if (role === "CITIZEN") {
      return {
        CS_FSM_APPLICATION_APPLICATION_NO: service.applicationNo,
        CS_FSM_APPLICATION_DETAIL_STATUS: t("CS_COMMON_" + service.applicationStatus),
        ...
      };
    }
    return {};
  }
{
        "userRole": "FSM_EDITOR_EMP",
        "statuses": [
            "DSO_REJECTED",
            "ASSING_DSO",
            "CREATED"
        ],
        "zeroCheck" : true,
        "fixed": false
}
https://github.com/egovernments/digit-ui
citymodule.json
https://github.com/egovernments/egov-mdms-data/blob/DEV/data/pb/tenant/citymodule.json
egov-mdms-data: added fsm in citymodule and stateinfo localization moduleCLOSED
egovernments/digit-ui
https://github.com/egovernments/egov-mdms-data/blob/DEV/data/pb/FSM/CommonFieldsConfig.json
pageComponents
https://github.com/egovernments/egov-mdms-data/blob/DEV/data/pb/FSM/PreFieldsConfig.json
https://github.com/egovernments/egov-mdms-data/blob/DEV/data/pb/FSM/PostFieldsConfig.json
https://github.com/egovernments/egov-mdms-data/blob/DEV/data/pb/DIGIT-UI/RoleStatusMapping.json
Creative Commons License

Implementation Guide

Implementation Approach

This section presents an outline of the methodology used for implementing Feacal Sludge Management (FSM) on a state-wide level. The implementation process is divided into seven distinct stages, each with specific entry and exit criteria, as well as designated roles and responsibilities. These measures are put in place to ensure objective monitoring and decision-making, ultimately contributing to the overall success of the programme. The document provides detailed information about each stage.

The estimated timeline for completing the implementation programme is approximately 38 to 42 weeks. It is, however, essential to accomplish the activities and meet the exit criteria established for each stage in order to adhere to this timeline.

FSM Implementation Stages

Stage 0: Programme Setup/Onboarding

This set of initial crucial activities is initiated after receiving an enrolment letter or a Memorandum of Understanding (MoU) from the state. Successfully completing these activities ensures that the programme begins with essential personnel, teams, and funding.

  • Duration: 4-6 weeks

  • Entry criteria: Acceptance letter/MoU from the state

  • Exit criteria:

- Finalise the FSM programme vision

- Secure funding for the programme

- Establish the state-specific procurement process

- Complete team sign-up and onboarding

Stage 1: Programme Kick-Off

This stage may require multiple interactions/meetings with different interest groups. The principal objective of these interactions is to identify the scope and planning strategies for phasing/rollout, create an active collaboration and governance approach, as well as agree on a high-level timeline for the engagement.

  • Duration: 4-6 weeks

  • Entry criteria:

- Programme setup (Stage 0) is complete

- Implementation partner is signed-up

  • Exit criteria:

- Publish the programme charter

- Implementation plan agreement with priority features and broad timelines

- Programme governance model

- Programme success metrics

- Capacity building

- Data preparation/collection kick-off from the pilot urban local bodies (ULBs)

- Cloud infrastructure procured

  • Key activities:

- Project kick-off meeting and consultation with stakeholders

- Identify and agree on a high-level scope and exclusions

- Identify pilot ULBs

- Product walkthroughs

- Define the project steering committee structure and the project governance process

- Define the phases of rollout/deployment

- Agreement on deployment priorities and high-level delivery timelines

- Identify and study all FSM processes

- Citizen services/channels around it

- Finalise the programme success metrics for rollout, adoption, and governance adhering to the vision of the programme

- Internal capacity building, programme logistics at the state-level and ULBs, as per the current scenario

- Collection of baseline data to measure end-line target for the product (revenue generated, total properties in ULBs, etc.)

- Circulation of baseline data collection templates to the state

Stage 2: Solution Design

During this stage, it is expected that key state officials and subject matter experts will collaborate with the implementation team by sharing state acts and policies, and providing interpretation. This stage serves as a foundation for incorporating the state-specific product features into the product configuration report.

  • Duration: 4-6 weeks

  • Entry criteria:

- Programme charter

  • Exit criteria:

- State sign-off and the publication of FSM processes, data templates, and workflows

- Finalisation of the rollout plan in different phases

- Product configuration report sign-off

- Agreement on necessary state-specific product customisations

- Finalisation and state sign-off on the programme tracking mechanism

- Establishment of an initial reporting structure

- Definition of dashboard key performance indicators (KPIs)

- Sign-off on the data approach, including collection, migration, correction, sync-up, and validation

- Completion of a detailed project plan

  • Key activities:

- Standardisation of all FSM processes

- Initiation of policy changes, if necessary, based on the defined processes

- Definition of success criteria

- Conducting a product familiarisation workshop

- Initiation of master data collection from pilot ULBs

- Finalisation of data migration, collection, and sync-up approach as per requirements

- Finalisation of the data validation approach

- Finalisation of dashboard design for programme tracking

Stage 3: Configuration & Customisation

This stage involves a series of developments, according to the detailed project plan, to ensure the smooth functioning of the customised product. It includes activities such as master data collection and environment setup. Additionally, monitoring and maintenance strategies are implemented.

  • Duration: 6-8 weeks

  • Entry criteria:

- The product configuration report has been signed off by the state

- Sign-off on the data approach (data collection, migration, correction, sync-up, and validation)

- State sign-off and publication of FSM processes, data templates, and workflows

- Detailed project plan

  • Exit criteria:

- Configured/customised product ready for User Acceptance Testing (UAT)

- Establishment of monitoring, support, and maintenance for dashboards

- Finalisation of initial reporting and dashboard key performance indicators (KPIs)

- Identification of participants for the UAT session

  • Key activities:

- Setting up development environments

- Development/customisation of reports and dashboards

- Development/integration of the portal

- Integration with third-party systems (Example: payment gateway, handheld/POS device)

- Updating user manuals and other key documents

- Preparation and execution of test cases

- Setting up monitoring, support, and maintenance processes, tools, and dashboards

- Identifying nodal officers at the ULB level for day-to-day support

- Migration and verification of pilot ULB data in accordance with the data agreement signed off by the state

Stage 4: UAT & Go-Live

During this stage, a product demonstration followed by a hands-on session is conducted for ULB officials. The necessary training for ULB officials and identification of resources required for User Acceptance Testing (UAT) take place. Additionally, the establishment of the state support team, and the initiation of the required processes occur.

  • Duration: 2-3 weeks

  • Entry criteria:

- Configured/customised product ready for UAT

- Availability of pilot ULB officials associated with FSM for UAT and training

  • Exit criteria:

- UAT sign-off & go-live for pilot ULBs

- Setup of review and monitoring cadence

  • Key activities:

- UAT environment setup

- Identification and resolution of issues/bugs

- Regression UAT and sign-off from pilot ULBs/state

- Setting up of the production environment

- Establishing the support centre and related processes (helpdesk)

- Conducting training sessions for users and trainers

- Identifying master trainers from the ground for simultaneous training

- Training the support resources

- Implementing marketing and promotion activities

- Conducting the go-live and launch event

- Setting up of the review and monitoring cadence/team

- General FSM implementation activities link

Stage 5: Rollout

After a successful go-live in the pilot ULBs, and subsequent fine-tuning to stabilise the product, the solution will be gradually rolled out to the remaining ULBs in phases. The state team's guidance and support will be necessary to create rollout plans and ensure the availability of the required infrastructure for training and deployment in each ULB.

  • Duration: 5-6 weeks

  • Entry criteria:

- Successful pilot implementation in the state

- Less than 3 open critical incidents (issues) related to the product, implementation, and data

  • Exit criteria:

- Operational adoption tracking and review cadence established

- Effectiveness of the helpdesk assured

- Resolution of critical bugs

- Initiation of programme success metrics tracking

  • Key Activities:

- Configuring ULBs phase-wise according to the project plan

- Verifying and migrating ULB data phase-wise based on the data agreement sign-off provided by the state

- Implementing a bug ticketing tool for resolving ground-level issues by the state team

- Conducting user training at the district-level

- Rolling out the solution pan-state in phases

Stage 6: Sustenance and Ongoing Improvement

The final stage involves implementing strategies to ensure the long-term sustainability of the product in the state. Systems are established to continuously track data, and provisions are made to enhance the product based on new insights from the data.

  • Duration: Ongoing process

  • Entry criteria:

- Rollout phase 1 (First set of ULBs where the rollout will occur after the pilot

  • Key activities:

- Conducting adoption review meetings in line with the programme's vision, chaired by the programme head

- Implementing plans for ongoing sustenance, including:

a. Funding arrangements

b. IT support

c. Assessing process effectiveness and making improvements as needed

Roles & Responsibilities

Steering Committee: The steering committee comprises the senior bureaucrats and leaders from the state, HUDD, EY, PwC, eGov, and Janaagraha. They are responsible for the overall programme guidance, and fulfill the domain advisory role.

Project Management Unit (PMU): This unit will be responsible for the execution of the programme on behalf of the state team. They work in close collaboration with the ULBs, the technical partner (eGov), and other stakeholders.

eGoV team: The eGoV team is the technical partner of the project, and it will provide all necessary support to the state concerning implementation, programme design, etc.

Resource requirements for the PMU required to be formed by the state:

Resource

No. of resources

Description

Project head

1

Is the head of the PMU who will drive the project from the state’s side.

Domain expert

2

A person who is well aware of the on-ground scenario, well-versed with the act, government orders passed, prevalent business processes, deviations from the acts, etc.

District nodal officer

1 per district

The project coordinator in each district to drive the project centrally. Monitor usage post go-live- point of escalation for implementation team, seasoned and worked in multiple ULBs on various modules. Should have a good understanding of FSM, facilitates, track data collection post go-live, monitor and facilitate the adoption of the application.

The technical implementation team should have the following technical skill-sets to work on FSM:

Development team skill-set

  • Java and REST APIS

  • Postgres

  • Maven

  • Spring framework

  • Basics of 2D CAD Drawings

  • Git

  • Postman

  • YAML/JSON

DevOps team skill-set

  • Strong working knowledge of Linux, command, VM Instances, networking, storage.

  • The session, cache, and token handling (Redis-server).

  • Understanding of VM types, Linux OS types, LoadBalancer, VPC, Subnets, Security Groups, Firewall, Routing, DNS.

  • Experience setting up CI like Jenkins and creating pipelines.

  • Artifactory - Nexus, verdaccio, DockerHub, etc.

  • Experience in setting up SSL certificates and renewal.

  • Gitops, Git branching, PR review process. Rules, Hooks, etc.

  • JBoss Wildfly, Apache, Nginx, Redis and Postgres.

Workflow Service

Overview

Workflows are a series of steps that moves a process from one state to another by actions performed by different kind of actors - humans, machines, time-based events, etc., to achieve a goal such an onboarding an employee, or approving an application or granting a resource, among others. The egov-workflow-v2 is a workflow engine which helps in performing these operations seamlessly using a predefined configuration.

Pre-requisites

Before you proceed with the documentation, the following pre-requisites must be 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 the database is created to store workflow configuration and data.

Interaction Diagram

Key Functionalities

  • 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 who have roles which 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. Point 1 will still hold true and all others participating in the workflow can still search it and act if they have the 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 it 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

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 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 the employee inbox).

egov.wf.statelevel

Boolean flag set to true if state-level workflow is required.

Deployment Details

  1. Deploy latest version of egov-workflow-v2 service.

  2. Add businessService persister yaml path in persister configuration.

  3. Add role action mapping for BusinessService API’s.

  4. Overwrite the egov.wf.statelevel flag (true for state level and false for tenant level).

  5. Create businessService (workflow configuration) according to product requirements.

  6. Add role action mapping for /processInstance/_search API.

  7. Add workflow persister yaml path in persister configuration.

Configuration Details

For configuration details, refer to the links in reference docs.

Integration

Integration Scope

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 to and increase the accountability.

Integration Benefits

  • Role-based workflow.

  • Easy way of writing rule.

  • File movement within workflow roles.

Steps to Integration

  1. To integrate, host of egov-workflow-v2 should be overwritten in helm chart.

  2. /process/_search should be added as the search endpoint for searching workflow processsInstance object. The search endpoint provides pagination with default value configurable. Pagination is controlled by passing limit and offset in query parameter.

  3. /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)

  4. The workflow configuration can be fetched by calling _search API to check if data can be updated or not in the current state.

Reference Docs

Title

Link

Configuring Workflows For New Product/Entity

Setting Up Workflows

API Swagger Documentation

Migration to Workflow 2.0

API List

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.

DSO User Manual

The Desludging Operators or DSOs are responsible for initiating and completing action on citizen requests for desludging services. The requests are routed to the respective DSOs by the urban local body (ULB) officials. The DSOs update the application status once the services are delivered and the payments are collected.

DSOs can do the following:

  • ​Assign vehicles for desludging services​

  • Decline service requests​

  • Complete service requests​

Login

DSOs operators are provided with credentials to log in to the system.

User Actions

On this page, the following actions can be performed:

  • Enter username and password

  • Select city for login

  • Reset password by clicking on the “Forgot Password” link

On clicking continue, DSOs are redirected to the FSM homepage.

User Actions

On this page, the following actions can be performed in the FSM card:

  • Click on Inbox to view assigned requests

  • Search for historical requests serviced

  • Change language

  • Edit profile details by clicking on the user icon on top right hand corner

  • Logout by clicking on the user icon on the top right hand corner

Approve requests

Requests assigned to the DSO can be viewed by clicking on the Inbox link in the FSM homepage.

Requests pending for acceptance will be viewable in the status: Pending for DSO Approval.

User Actions

The following actions can be performed:

  • Search for an active application using “Application No.” and “Mobile No.”

  • Clear search by clicking on “Clear Search’”

  • View and update applications by clicking on an application number

  • Filter applications by locacilty using the ‘Locality’ dropdown

  • Filter applications by ‘Status’

  • Search for past applications by using “Search Application”

  • Sort applications by Application date.

On clicking on an application number, application details are displayed.

User Actions

The following actions can be performed:

  • View application details

  • Click on the “Take Action” button

The take action button has the following options:

  • Assign Vehicle

  • Decline Request

A request can be approved by assigning a vehicle. Clicking on “Assign Vehicle’’ will display the following pop-up:

User Actions

The following actions can be performed:

  • Update Vehicle Registration No.

  • Close pop-up by clicking on the Close button on the pop-up.

  • Close pop-up by clicking on the cross icon on the top right of the pop-up

  • Confirm decline request by clicking on the “Assign Vehicle” button

A snack bar will confirm assignment of vehicle and the application timeline will be updated to DSO in Progress.

Update/Schedule Trips

Once DSO is in progress, the number of trips can be updated.

User Actions

The following actions can be performed:

  • Search for an active application using “Application No.” and “Mobile No.”

  • Clear search by clicking on “Clear Search”

  • View and update applications by clicking on an application number

  • Filter applications by ‘Locacilty’ using the locality dropdown

  • Filter applications by ‘Status’

  • Search for past applications by using “Search Application”

On clicking on an application number, application details are displayed.

User Actions

The following actions can be performed:

  • View application details

  • Click on the ‘Take Action’ button

The take action button has the following options:

  • Complete Request

  • Update/Schedule Trips

On clicking on Update/Schedule trips, the following pop up is displayed:

User Actions

The following actions can be performed:

  • Increase the number of trips by clicking on the + button

  • Decrease the number of trips by clicking on the - button

  • Close pop-up by clicking on the Close button on the pop-up.

  • Close pop-up by clicking on the cross icon on the top right of the pop-up

  • Confirm update/schedule trips by clicking on the “Update/schedule” button

A snack bar will confirm that the number of trips have been updated

Complete Request

Once the service request has been completed and all pending payments have been collected, the same has to be confirmed in the system. This can be done by selecting the “Complete Request” button in the “Take Action” button. On clicking on Complete Request, the following pop up is displayed:

User Actions

The following actions can be performed:

  • Confirm/Update service date

  • Confirm/Update Volume of waste collected

  • Confirm/Update pit details

  • Upload pit photo

  • Close pop-up by clicking on the Close button on the pop-up.

  • Close pop-up by clicking on the cross icon on the top right of the pop-up

  • Confirm details by clicking on the ‘Completed’’ button

A snack bar will confirm that request has been completed and the status will be updated to “Waiting for Disposal”.

Decline Request

DSOs can choose to decline unserviceable service requests. Applications can be rejected by a DSO in the “Pending for DSO Approval” stage.

User Actions

The following actions can be performed:

  • Search for an active application using “Application No.” and “Mobile No.”

  • Clear search by clicking on “Clear Search”

  • View and update applications by clicking on an application number

  • Filter applications by ‘Locacilty’ using the locality dropdown

  • Filter applications by ‘Status’

  • Search for past applications by using “Search Application”

On clicking on an application number, application details are displayed.

User Actions

The following actions can be performed:

  • View application details

  • Click on the “Take Action” button

The take action button has the following options:

  • Assign Vehicle

  • Decline Request

Clicking on “Decline Request’’ will display the following pop-up:

User Actions

The following actions can be performed:

  • Reason for declining

  • Enter comments

  • Close pop-up by clicking on the Close button on the pop up.

  • Close pop-up by clicking on the cross icon on the top right of the pop-up

  • Confirm decline Request by clicking on the “Decline Request” button

A snack bar will confirm decline and the application timeline will be updated to DSO Rejected.

Configuring Workflows For New Product/Entity
Setting Up Workflows
Swagger Documentation
Workflow 2.0 Configuration doc
https://www.getpostman.com/collections/8552e3de40c819e34190
https://www.getpostman.com/collections/8552e3de40c819e34190
https://www.getpostman.com/collections/8552e3de40c819e34190
https://www.getpostman.com/collections/8552e3de40c819e34190
https://www.getpostman.com/collections/8552e3de40c819e34190

FSM Employee UI

There are three main updates in FSM v1.2.1 for employee UI:

  1. Application timeline

  2. Photo viewed by employee/DSO

  3. Payment mode while completing request

1. Application Timeline:

An employee can see the application status in application timeline with provider details.

Technical Implementation Details:

The path for the code:

frontend/micro-ui/web/micro-ui-internals/packages/modules/fsm/src/pages/employee/ApplicationDetails/index.js

The code snippet to render application timeline:

The code snippet for extracting the provider info for each status:

2. Photo viewed by employee/DSO

An employee/DSO can view the photo uploaded by the employee/DSO in complete request action.

Technical Implementation Details:

The path for the code:

frontend/micro-ui/web/micro-ui-internals/packages/modules/fsm/src/pages/employee/ApplicationDetails/index.js

The code snippets to render the field:

ViewImages.js are the common component used to fetch and render the Image file id. The path is shown below:

frontend/micro-ui/web/micro-ui-internals/packages/modules/fsm/src/components/ViewImages.js

3. Payment mode while completing request

An employee has to select the payment mode while completing the request.

Technical Implementation Details:

File path:

frontend/micro-ui/web/micro-ui-internals/packages/modules/fsm/src/pages/employee/ApplicationDetails/config/CompleteApplication.js

The code snippet to render the field.

MDMS file fetch for payment mode:

{
    "tenantId": "pg",
    "moduleName": "FSM",
    "ReceivedPaymentType": [
        {
            "name": "Payed in Cash",
            "code": "PAYED_IN_CASH",
            "active": true
        },
        {
            "name": "Payed in Counter",
            "code": "PAYED_IN_COUNTER",
            "active": true
        },
        {
            "name": "Netbanking",
            "code": "NETBANKING",
            "active": true
        }
    ]
}
egov-mdms-data/ReceivedPaymentType.json at UAT · egovernments/egov-mdms-data
Logo

Functional Customisation

Sujog-FSM is implemented as a part of SUJOG for the state of Odisha. Odisha is currently on v1.3 of DIGIT Sanitation. The following is the list of changes made to the product for implementation:

1. Localisations:

The localisation changes done according to the application flow:

User

Flow

Step

Changes

Citizen

Apply for emptying of septic tank

Citizen creates application

1.On the Property Location Page, Within ULB Limits and From Gram Panchayat added

2.On Payment Details Page, if the Total Amount is N/A, then additional notification will be displayed: "You will be notified shortly of the total amount once the de-sludging request is accepted."

3."Minimum Amount Payable (₹) and Advance Amount To Be Paid (₹) * are added.

Employee

Septic tank emptying request

When employee creates an application

1.Property Location changed as a mandatory field.

3.Property Location has two fields - Within ULB Limits and From Gram Panchayat.

4.Localisation: Advance Amount To Be Paid (₹) * added.

Submit application

After creating the application

1. Localisation: ‘Application Number’ is changed to “Desluding Request Number’”.

View application

All stages in workflow

1. Seperate sections created for displaying ‘Trips’ And “Amount Details”.

2. Additional fields displayed ‘Advance Amount Paid and Balance Amount Paid.

Assign DSO

Search application after creating

2.Localisation: DSO has been replaced with ‘Cesspool Operator’ across SUJOG.

Entire Workflow

Send Back option

“Send back” as a workflow step has been removed from the workflow.

Update trips

After creating the application

1.Localisation: “Update Trip Details” has been replaced with “Update/Schedule Trips’”.

Complete Request page

Error message added. If the bill is pending, the following error message will be displayed - “"Cannot close the application since bill amount is pending."

Employee Inbox

Inbox

Selecting inbox option in employee portal

1.Locality added as a ‘Filter’ option.

2. Localisation: DSO has been replaced with “Cesspool Operator” across SUJOG FSSM.

FSTP

FSTP Inbox

Update application

"Vehicle In time *,Vehicle Out time *" as input fields are removed and will be auto-capured based on the time of action.

Vehicle Log

1.Localisation: “Add Vehicle Log” has been replaced with “Add new”.

2.Additional Vehicle number format have been added for validation: AB 00 C 1234.

2. Additional Builds: Urban-rural convergence is an initiative that aims to ensure access of sanitation services to all gram panchayats (GPs) via urban local bodies (ULBs) located closest to them. With efforts in implementing decentralised waste management across 114 ULBs as well as enabling the rural population to avail sanitation facilities from urban areas located nearby, eGov with CPR (post-field observations and research) decided to include gram panchayats in SUJOG FSSM as part of this initiative. See details of the customisation here.

3. The following MDMS have been configured.

  • Property-type

  • Property Sub-type

  • Slum Names

  • GP List

  • Village List

  • FSTP details

4. The following user categories/roles have been created:

Role in Digit Sanitation v1.3

Role in Sujog

  1. FSM Employee Dashboard Viewer

  2. FSM Employee Report Viewer

  3. FSM Payment Collector

  4. FSM Employee Application Creator

  5. FSM Administrator

  6. FSM Employee Application Editor

ULB Editor

  1. FSM FSTP Opperator

FSTPO

5. FSM Related builds deployed

Category

Services

GIT TAGS

Docker Artifact ID

Remarks

FSM

FSM

fsm:v1.3.0-29c64d6941-24

FSM calculator

fsm-calculator:v1.2.0-01dd6c9b3a-14

Vehicle

vehicle:v1.3.0-5682061fd3-18

Vendor

vendor:v1.3.0-d0ddde9f1b-45

Inbox

inbox:v1.1.1-3d4c447770-60

No changes in this release

Digit-UI fsm

DIGIT UI

digit-ui:v1.6.0-4332691db5-174

Shared service in DIGIT

DIGIT Dependency Builds

The FSM release is bundled with the DIGIT 2.8 release hence the release builds for the DIGIT 2.8 release can be referred from this .

Configs

MDMS

Localisation

6. URL and Credentials of SUJOG-UAT environment for reference.

ULB employee URL : https://sujog-dev.odisha.gov.in/employee/user/login

Citizen URL : https://sujog-dev.odisha.gov.in/citizen/user/login

Credentials:

ULB employee Username : EMP-AND-000167

FSTPO Username : EMP-AND-000168

Password : eGov@123

Technical Specification: Urban-Rural Convergence

Overview

Initiative to provide access to sanitation services to all gram panchayats (GPs) via Urban Local Bodies (ULBs) located closest to them.

Objective

DIGIT Sanitation plans to provide a provision of sanitation services to rural areas to their nearby cities.

Author

Name

Role

Department

Aman Jha

Technical Lead

FSM

Document History

Date

Version

Document version and history

Document author

16-02-2023

1.0

Initial version

Kapil Gupta

17-02-2023

1.1

Updated the solution approach based on review

Aman Jha

Approvals

Date

Approver name

Remarks

15-02-2023

Ghanshyam

There is no need to use additional MDMS for Urban-Rural Convergence (URC). We can add the gram panchayat hierarchy in the existing MDMS boundary-data.json.

21-02-2023

Ghanshyam

We can go ahead with the approach in impel, but in product we can generalise this hierarchy. To do that, modification is required in location-service. We can also build the dynamic component in UI for showing a relative dropdown based on the hierarchy.

Use Case

As a ULB employee, he/she is creating applications to cater to the sanitation needs of local communities in urban areas. Similarly, he/she should also cater to the same sanitation needs of rural bodies which are close to the urban regions.

ULB employees need a provision in a system while creating a new application whereby they can either choose local municipalities or urban supported villages. Based on their choice, they will be able to select either locality/mohalla or gram panchayat (GP) areas from the respective master data dropdown list. The caveat here is if a ULB employee chooses a GP, then the trip amount field should be editable so that he/she can fill any logical amount based on the offline calculation instead of an auto calculated amount that is already there in an application in case of urban bodies.

ULB employees or DSO operators should also be able to edit the number of trips. The final amount should be multiple of the initial amount entered into an application with the number of trips.

UI/UX Wireframe

Technical Components & Design

  • Need to update MDMS data: boundary-data.json

    - Need to add a new child hierarchy for GP under city which will be parallel to a locality. A sample is given at the end of this document.

  • System will use the below URL to fetch the localities or GPs and their corresponding villages.

    - In the case of localities, pass boundaryType as “Locality”.

    • https://dev.digit.org/egov-location/location/v11/boundarys/_search?hierarchyTypeCode=REVENUE&boundaryType=Locality&tenantId=pb.amritsar

    - In the case of GP/villages, pass the boundaryType as “GP”.

    • https://dev.digit.org/egov-location/location/v11/boundarys/_search?hierarchyTypeCode=REVENUE&boundaryType=GP&tenantId=pb.amritsar

  • By default, the 'Urban' option will be pre-selected in the radio button in the above wireframe and the dropdown will have the locality/mohalla master data (existing behaviour). If an employee selects “ULB supported village”, then the locality/mohalla dropdown will be replaced by GPs and the village dropdown data on the fly.

    - Also, the "Amount per Trip" field will be editable with no pre-defined calculated value. Hence, the below API will not get called for URC flow (when “ULB supported village” is selected”):

https://dev.digit.org/fsm-calculator/v1/billingSlab/_search?tenantId=pb.amritsar&propertyType=RESIDENTIAL.APARTMENT&capacity=2000&slum=NO&_=1676626310996

  • Need to add configuration (mdms: UrcConfig.json) for configuring URC feature (Enable/Disable) and facilitating the switch on/off feature for the URC. MDMS data will be as shown below:

{
    "tenantId": "pg.angul",
    "moduleName": "FSM",
    "urcConfig": [{
        "URCEnable": true
    }
    ]
}
  • The above MDMS have two configurations:

    - URCEnable: This flag will be used to enable or disable the URC flow altogether. If this flag is false, then we will not have URC flow (no radio buttons will come) and the existing flow (urban) will happen as it is. If this flag is true, then the radio button will appear. By default, the 'Urban' option will be selected and if the user selects “ULB supported village", then the URC flow will continue as mentioned in above points.

  • Need to store GP and Village as part of additional details(in eg_fsm_address). Also add one more key as boundarytype in additional details to capture (Locality or GP/Village) to determine if the application created is for RURAL or not so that in the near future it will be helpful for the analytics and statistics in dashboards.

  • Default value for this key(boundaryType) will be Locality to support backward compatibility

  • Add Vehicle log would also have the option to select Urban (Default option) or Rural. If Rural gets selected the text name of an element would be replaced from “Locality” to “Gram Panchayat” for a text field.

  • Introduction of a boundarytype as additionalDetails in vehicle_trip table to capture if the vehicle log is created for GP or not.

    • Default value for this column will be Locality to support backward compatibility.

Sample MDMS (boundary-data.json)

{
  "tenantId": "pb.amritsar",
  "moduleName": "egov-location",
  "TenantBoundary": [{
      "hierarchyType": {
        "code": "REVENUE",
        "name": "REVENUE"
      },
      "boundary": {
        "id": 1,
        "boundaryNum": 1,
        "name": "Angul",
        "localname": "Angul",
        "longitude": null,
        "latitude": null,
        "label": "City",
        "code": "od.angul",
        "children": [{
            "id": "2",
            "boundaryNum": 1,
            "name": "Baniabahal",
            "localname": "Baniabahal",
            "longitude": null,
            "latitude": null,
            "label": "Locality",
            "code": "VIL1"
          },
          {
            "id": "3",
            "boundaryNum": 1,
            "name": "Hulurisinga",
            "localname": "Hulurisinga",
            "longitude": null,
            "latitude": null,
            "label": "Locality",
            "code": "VIL2"
          },
          {
            "id": "4",
            "boundaryNum": 1,
            "name": "Angul town",
            "localname": "Angul town",
            "longitude": null,
            "latitude": null,
            "label": "Locality",
            "code": "VIL3"
          },
          {
            "id": "5",
            "boundaryNum": 1,
            "name": "Other",
            "localname": "Other",
            "longitude": null,
            "latitude": null,
            "label": "Locality",
            "code": "VIL4"
          },
          {
            "id": 6,
            "boundaryNum": 1,
            "name": "GP 1",
            "localname": "GP1",
            "longitude": null,
            "latitude": null,
            "label": "GP",
            "code": "GP1",
            "children": [{
                "id": 11,
                "boundaryNum": 1,
                "name": "Village 1",
                "localname": "Village local 1",
                "longitude": 74.871552,
                "latitude": 31.63089,
                "label": "Village",
                "code": "SUN04",
                "pincode": [143001],
                "area": "V-Area1",
                "children": []
              },
              {
                "id": 12,
                "boundaryNum": 1,
                "name": "Village 2",
                "localname": "Village local 2",
                "longitude": null,
                "latitude": null,
                "label": "Village",
                "code": "SUN11",
                "pincode": [143001],
                "area": "V-Area1",
                "children": []
              }
            ]
          },
          {
            "id": 8,
            "boundaryNum": 1,
            "name": "GP 2",
            "localname": "GP2",
            "longitude": null,
            "latitude": null,
            "label": "GP",
            "code": "GP2",
            "children": [{
                "id": 13,
                "boundaryNum": 1,
                "name": "Village 3",
                "localname": "Village local 3",
                "longitude": 74.871552,
                "latitude": 31.63089,
                "label": "Village",
                "code": "SUN04",
                "pincode": [143001],
                "area": "V-Area1",
                "children": []
              },
              {
                "id": 14,
                "boundaryNum": 1,
                "name": "Village 4",
                "localname": "Village local 4",
                "longitude": null,
                "latitude": null,
                "label": "Village",
                "code": "SUN11",
                "pincode": [143001],
                "area": "V-Area1",
                "children": []
              }
            ]
          }
        ]
      }
    },
    {
      "hierarchyType": {
        "code": "ADMIN",
        "name": "ADMIN"
      },
      "boundary": {
        "id": 1,
        "boundaryNum": 1,
        "name": "Angul",
        "localname": "Angul",
        "longitude": null,
        "latitude": null,
        "label": "City",
        "code": "od.angul",
        "children": [{
            "id": "2",
            "boundaryNum": 1,
            "name": "Baniabahal",
            "localname": "Baniabahal",
            "longitude": null,
            "latitude": null,
            "label": "Locality",
            "code": "VIL1"
          },
          {
            "id": "3",
            "boundaryNum": 1,
            "name": "Hulurisinga",
            "localname": "Hulurisinga",
            "longitude": null,
            "latitude": null,
            "label": "Locality",
            "code": "VIL2"
          },
          {
            "id": "4",
            "boundaryNum": 1,
            "name": "Angul town",
            "localname": "Angul town",
            "longitude": null,
            "latitude": null,
            "label": "Locality",
            "code": "VIL3"
          }
        ]
      }
    }
  ]
}

FSM Citizen User Manual

Citizens represent individuals or communities who are the system end-users. The FSM module provides citizens with the scope to apply for desludging services and make the payment for the applied services.

Citizens can do the following:

  • Language selection

  • Login

  • Apply for desludging services

  • Check application status and vehicle status

  • Download application acknowledgement

  • Choose to pay an amount above the minimum advance required and pay the remaining balance post service

  • Rate the services provided by the urban local bodies (ULBs)

Language Selection

Overview

When the user opens the application, it asks them to first select the language. The selected language is highlighted in orange colour.

User actions

On this page, the following actions can be performed:

  • A user can switch the language.

  • A user can click on 'Continue' to navigate to the login screen.

Login

Overview

Users are redirected to this screen once they select the preferred language in the previous screen. Users can choose to either register as a new user or login as an existing user.

Register a new user

User Actions

On this page, the following actions can be performed:

  • A person can register as a new user by entering the mobile number, name and the city.

  • A person can login as an existing user by clicking on the login button.

  • A user can choose to continue with Whatsapp to raise a service request.

  • After the user clicks on "Continue", the page navigates to the "Enter OTP" page.

User actions

On this page, the following actions can be performed:

  • Enter the OTP received on the given mobile number to login.

  • The system will prompt for the selection from a list of available cities. Select the city to complete login.

Login as an Existing User

Overview

This is the page one is redirected to when the user clicks on ‘Login’ to login as an existing user.

User Actions

On this page, the following actions can be performed:

  • Enter mobile number to login as an existing user.

  • Navigate to register as a new user.

  • A user can choose to continue with Whatsapp to raise a service request.

  • After the user clicks on ‘Continue’, the page navigates to the “Enter OTP” page.

User Actions

On this page, the following actions can be performed:

  • Enter the OTP received on the given mobile number to login.

  • Once the OTP is entered, users are prompted to choose a location. Using this screen, they can select the location for which they would like to request for services.

User Actions

On this page, the following actions can be performed:

  • A user can switch the location.

  • A user can click on 'Continue' to navigate to the login screen.

Apply for Desludging Services

Overview

After they login, users are redirected to this screen where multiple actions can be performed related to Faecal Sludge Management services.

User Actions

On this page, the following actions can be performed:

  • Desludging services can be requested by clicking on “Apply for Emptying of Septic Tank/Pit” option on the homepage.

  • User is redirected to the Service Request Page.

User Actions

On this page, the following actions can be performed:

  • Enter “No of Trips” required

  • Enter “Vehicle Capacity” required.

  • Skip and Continue if the above information is not available.

On clicking on “Next”, the user is redirected to the Choose Property Type page.

User Actions

On this page, the following actions can be performed:

  • Selection of Property Type

  • Basis Property Type selected, information regarding tentative cost of desludging service is provided.

On clicking on “Next”, the user is redirected to the Choose Property Subtype page.

User Actions

On this page, the following actions can be performed:

  • Selection of Property Subtype

On clicking on “Next”, the user is redirected to the Pin Property Location page.

User Actions

On this page, the following actions can be performed:

  • Enable the Location finder to allow GPS to track the current location, or, move the pin to the location manually.

  • Search for location using the search bar.

  • Skip and Continue if the above information is not available.

If pin location is not selected, the user is redirected to enter Pincode.

User Actions

On this page, the following actions can be performed:

  • Entering Pincode.

  • Skip and Continue if the above information is not available.

On clicking on “Next”, the user is redirected to the Provide Property Address page.

User Actions

On this page, the following actions can be performed:

  • Selection of City

  • Selection of Locality/Mohalla

On clicking on “Next”, the user is redirected to mention whether the property is located in a Slum.

User Actions

On this page, the following actions can be performed:

  • Selection of whether property is located in Slum

On clicking on “Next”, the user is redirected to the Provide Name of Slum page. If no is selected, then this page is skipped.

User Actions

On this page, the following actions can be performed:

  • Selection of Slum name from dropdown

On clicking on “Next”, the user is redirected to the Provide property address page.

User Actions

On this page, the following actions can be performed:

  • Enter Street Name

  • Enter Door No.

  • Skip and Continue if above information is not available

On clicking on “Next”, the user is redirected to the Provide Landmark page.

User Actions

On this page, the following actions can be performed:

  • Enter Landmark

  • Skip and Continue if above information is not available.

On clicking on “Next”, the user is redirected to the Pit/Septic Tank Details page.

User Actions

On this page, the following actions can be performed:

  • Enter Length of Septic Tank

  • Enter Breadth of Septic Tank

  • Enter Depth of Septic Tank

  • Skip and Continue if the above information is not available.

On clicking on “Next”, the user is redirected to the Upload Pit photo page.

User Actions

On this page, the following actions can be performed:

  • Upload Pit Photo

  • Skip and Continue if the above information is not available.

On clicking on “Next”, the user is redirected to the Select Gender page.

User Actions

On this page, the following actions can be performed:

  • Select Gender

  • Skip and Continue if the above information is not available.

On clicking on “Next”, the user is redirected to the Payment Details page. The page displays Total amount and Minimum amount payable. The advance amount payable field displays the minimum amount payable.

User Actions

On this page, the following actions can be performed:

  • Enter advance amount greater than minimum amount payable and lower than total amount

  • Skip and Continue if the above information is not available

On clicking on “Next”, the user is redirected to the Summary page. The page displays a summary of all the details filled by the user.

User Actions

On this page, the following actions can be performed:

  • Click on Change to change any filled details

  • Click on Submit once the review is complete and the details are satisfactory

On clicking on “Submit”, the user is redirected to the Application Submitted page.

User Actions

On this page, the following actions can be performed:

  • Download application receipt by clicking on download button

  • Go back to the home page.

The system triggers a notification along with the Application No. and details to the registered mobile number. Any subsequent updates and actions on the application also trigger a notification to the applicant.

The system triggers a notification along with the Application No. and details to the registered mobile number. Any subsequent updates and actions on the application also trigger a notification to the applicant.

Check Application Status

From the home page, users can access past application history by clicking on the “My Applications” page.

User Actions

On this page, the following actions can be performed:

  • Click on ‘My applications’ to view a list of past applications.

User Actions

On this page, the following actions can be performed:

  • View details of Applications

Clicking on View redirects the user to Application Details

User Actions

  • View details of applications

  • View current Status of application

On this page, the following actions can be performed:

Make Payment

If the application is on the Payment Pending stage, the user will have the option to make a payment from the View Applications page.

User Actions

On this page, the following actions can be performed:

  • Download Acknowledge receipt of application

  • Make a payment by clicking on the Make Payment button.

The user is redirected to the bill details page which displays the total, advance and due amount.

User Actions

On this page, the following actions can be performed:

  • Confirm details and Proceed to pay.

The user is redirected to Select Payment preference.

The system intimates the user that clicking on Pay will redirect them to a third party payment gateway.

User Actions

On this page, the following actions can be performed:

  • Select Payment Method.

  • Click on pay to proceed.

The system displays a payment acknowledgement message along with the Payment Receipt No.

User Actions

On this page, the following actions can be performed:

  • Print Payment receipt

Rate Services

If the application is on the Payment Pending stage, the user will have the option to make a payment from the View Applications page.

User Actions

On this page, the following actions can be performed:

  • Provide the rating for service by clicking on Rate us.

The user will be redirected to the Provide Feedback page.

User Actions

On this page, the following actions can be performed:

  • Selection of overall rating between 1-5 stars

  • Confirmation on Safety gears used by the operator

  • Providing additional inputs, if any, using the comments box.

Clicking on submit redirects the user to the confirmation page.

User Actions

On this page, the following actions can be performed:

  • Download final payment receipt

  • Go back to the home page.

v1.3
fsm_v1.3/municipal-services/fsm
fsm_v1.3/municipal-services/fsm-calculator
fsm_v1.3/municipal-services/vehicle
fsm_v1.3/municipal-services/vendor
fsm_v1.1/municipal-services/inbox
v1.3
fsm_v1.3/frontend/micro-ui
link
v1.3
fsm_v1.3
v1.3
fsm_v1.3
v1.3
fsm_v1.3

Urban-Rural Convergence

Background

Urban-rural convergence is an initiative that aims to ensure access of sanitation services to all gram panchayats (GPs) via Urban Local Bodies (ULBs) located closest to them. With efforts in implementing decentralised waste management across 114 ULBs as well as enabling the rural population to avail sanitation facilities from urban areas located nearby, eGov with CPR (post-field observations and research) decided to include gram panchayats in the FSM application as part of this initiative.

Introduction

Under the urban-rural convergence (U-RC) GPs are tagged to ULBs which will service desludging requests for households in the respective GPs. The process-flow across the value chain, and actors would remain the same. However, the logic of pricing and billing of requests from GPs may vary from requests within the limits of the ULB itself.

Currently, the factors that are being considered to determine pricing are :

  1. Location of the GP

  2. Distance of the GP from ULB

  3. Distance of GP from the FSTP

Considering these pricing inconsistencies, we are designing and releasing a simple version of the urban-rural convergence system. With the success of a statewide rollout, larger populations and households can have access to and benefit from the FSM module and subsequently the service with speed, and at scale.

Core Value Hypothesis

The users’ needs and the value this feature would provide are as follows:

  1. If we allow households from GPs to raise (or ULBs to record) requests in the FSM application, they will use it responsibly which would result in reduced public dumping with the waste collected and disposed of properly.

  2. If we allow ULB admins to view inputs from GPs in the FSM module on the dashboard, they will use it responsibly and improve the quality of service by making better data-driven decisions.

Solution - Quick Win

Using the above, we have outlined modifications in the FSM module to include gram panchayats:

A field/option to select gram panchayats tagged to a locality from a list to be provided while creating a new desludging application. The amount per trip field will be changed to a free text field instead of an auto-calculated and auto-populated amounts field, and the demand will be generated based on the new amount added.

As the actual amount will be known once the DSO/driver reaches the citizens’ location and sees the property + distance, an option to update the amount per trip is provided where the user updates the trip to start the service.

Risk/Limitations

Addressed in the Out of Scope section.

Out of scope:

The above solution should cover the majority of U-RC use cases, but there are scenarios (edge cases) that deviate from the options. Workarounds for the same are suggested here.

Use Case

Chance of Occurrence*

Workaround

A citizen from GP missed to select GP.

>10%

  1. Application can be rejected and updated if any amount has not been paid.

  2. DSO can share information after inspection/before assigning sanitation workers and vehicles.

A citizen from GP missed to select GP and has paid the full amount in advance.

>1%

*assumption to be validated post launch.

From our on-ground research and observations, of the 40-60 requests the ULB receives for desludging, 4-7 of them are from GPs. This implies that approximately 10% of the total requests per month are from GPs. The above percentage of occurrence is within that 10%. These use cases will be handled in future versions.

Detailed Solution

While creating a New Desludging Application, a radio button to select gram panchayats is provided. The list of GPs is shown in the dropdown and this field will be based on the Locality selected in the "Location Details" section. The radio button is selected by default on “Within ULB Limits”. By selecting gram panchayat and the name of the gram panchayat from the dropdown, the Amount per trip field (in the Payments Details) section is changed to a free text field. The total and advance are calculated based on the same.

Based on field observations, the actual amount is only known once the vehicle reaches the citizens’ location. Hence, an additional field to edit the amount per trip is provided along with the Update Trips in the pop-up before starting the service. The FSM calculator calculates the total amount and balance based on the same, and the billing service generates the demand accordingly.

Which municipal, business and core services would these changes affect?

Municipal Services

Business Services

Core Services

What?

How?

What?

How?

What?

How?

FSM apply

Additional field to enter GP

location

Additional field- GP + impact on geotag.

Billing Service

Bill generates based on the amount entered.

FSM calculator

Calculation based on the amount entered instead of auto-calculation based on property type, etc.

mdms service

New list of GPs tagged to the respective localities.

collections service

Demand generated based on the amount entered.

Vendor

Check to see if the vendor is registered to serve the locality.

reports

New inputs from GPs tagged to localities.

Dashboard analytics

New inputs for analysis from GPs tagged to respective localities.

Vehicle

Check to see if the vehicle is registered to serve the locality.

Specifications

A new tenant service must be created in the MDMS for gram panchayats. The necessary updates as per the following must be made in fsm-address and fsm-geolocation entity list.

List of entities:

  • ULB

- Locality

- City

- Gram panchayats

Create Desludging Application:

Selecting Gram Panchayat

Attribute

Type

Mandatory (Y/N)

Comments

Gram Panchayat

Array

Y

  1. Selecting from the list of GPs under each locality in the MDMS data.

  2. Default value to N/A.

  3. Give a dropdown to change.

  4. Selection of any value apart from N/A must:

    1. Change the auto-fill field to the free text field in the Payment Details section.

    2. The FSM calculator service should be modified to calculate as per the amount entered in the free text field.

    3. Demand for advance must be generated based on the previous point.

  5. Add new GPs as and when updated by a state/ULB.

Payment Details- Advance Amount

Field

Data Type

Mandatory (Y/N)

Comments

Amount per trip

Numeric

N

Free text field.

Total Amount

Numeric

N

Calculated based on the above field and the number of trips.

Advance Amount

Numeric

Y

Minimum amount <= than the amount entered in the free text field.

Update Trips:

Payment Details- Balance Amount

Field

Data type

Mandatory (Y/N)

Comments

Amount per trip

Numeric

Y

Selection of any value apart from N/A must:

  1. Provide the free text field in the Update Trips section to enter the “Amount per Trip”.

  2. The FSM calculator service should be modified to calculate as per the amount entered in the free text field.

  3. Demand for the balance amount must be generated based on the previous point.

Total amount

Numeric

Y

  1. Field displayed in “Update Trips”.

  2. Calculated based on the above field and the number of trips.

  3. Non-editable field.

Balance amount

Numeric

Y

  1. Field displayed in “Update Trips”.

  2. Non-editable field.

  3. Difference between the amount paid and the total based on the latest update.

Example: Amount per trip updated to = Rs 2,000 in the Update Trips Screen.

  • Advance paid = Rs 0

  • Balance amount = Rs 2000-0 = Rs 2,000

  1. Validation - Maximum amount entered = amount as per above calculation.

Success Criteria

The success criteria for U-RC are:

TRUE NORTH

Zero untreated waste

We must ensure that waste is collected and disposed of in the right method, at the right place and at the right time.

SECONDARY

Inclusive sanitation services

Desludging service requests must be accessible to all citizens.

Metrics to track

We will track the metrics below to gather learnings on the impact of these changes on FSM to share it on the FSM dashboards and reports. But more specifically, we will track the metrics to see:

  • If our hypotheses are correct?

  • Is the FSM services more accessible(given criteria above)?

  • What are the unanticipated implications?

Additionally, we must monitor guardrails to ensure there are no major implications on the ULBs’ ability to handle requests (for example, major changes to the volume of requests and difference in SLAs of service between GP and non-GP).

Goal/Reason

Metric

Why we are tracking it

Zero untreated waste

The number of requests received from GPs to # of households per GP.

  1. To understand the gap with respect to the requests and to increase awareness.

  2. Anticipate the adoption overtime.

Zero untreated waste

The number of requests received from GPs reconciled at FSTP.

Due to the distance, chances of open dumping is high. This will help validate/invalidate the assumption.

Inclusive sanitation services

The number of requests received from the GPs.

No major changes in ULB employee adoption. However, trends in the number of requests can be noted.

Guardrails

Metric

Why we are tracking it

The average SLA of GP per request

To understand the time taken to service GPs. Deep-dive to see root causes in case of large gaps or discrepancies.

The average SLA of non-GP per request to the average SLA of GP per request

We need to enable admins to ensure that the citizens in GPs are receiving services in a timely manner, just like the non-GP citizens.

Implementation Checklist

This document calls out the various tasks the teams need to perform before the FSM application is released to production.

Sl No.

Checklist

Reference

Owner

Completed(Yes/No/Partially/WIP)

Remarks

1

Product Release Gate Checklist FSM 1.3

Riddhi

Yes

2

Get the list of common services that need to be upgraded mandatory for FSMv1.3 to function

Riddhi

NA

There is no changes to common services

3

Get the list of SMS template changes and new templates to be loaded as part of v1.3

Riddhi

Yes

4 new templates have to be added

4

Upgrade the eGov Test environment with the changes listed in FSMv1.3 release

Taresh

Yes

5

Sanity testing of FSM on eGov test server

Venu

Yes

6

Make pull requests for Code, Configs, MDMS on to PwC repo

Aman

Yes

7

Merging the pull request after verification

PWC team

Yes

8

Share FSM related service Builds to PwC team

Riddhi

Yes

9

Loading the incremental localisation codes on UAT

Taresh

Yes

10

Sharing the changes and additional SMS templates that need to be applied for UAT and production with PwC team

Riddhi

NA

11

Getting the SMS templates approved

PWC team

In Progress

12

Deploy Builds to UAT environment

Taresh/PwC

Yes

All FSM builds will be deployed by eGov team. Only MDMS restart will be done by PwC

13

Sanity in PwC UAT(Sujog Dev) for FSM

Venu

Yes

14

QA in Sujog UAT for FSM

Venu

Yes

15

All tasks and issues that are part of the v1.3 release are updated as UAT completed

Riddhi

Yes

16

All Sujog modules are tested with the lasted changes on UAT

PwC team

Yes

17

Functional Sign off on UAT

Shrija

In Progress

18

Deployment on Sujog Production

PwC team

Yes

19

Testing on Sujog production using the testing tenant

Venu

Yes

20

Marking all FSMV1.3 upgrade tasks as DONE

Riddhi

In Progress

Configuring Workflows For New Product/Entity

Overview

Workflow is defined as a sequence of tasks that has to be performed on an application/entity to process it. The egov-workflow-v2 is a workflow engine which helps in performing this operations seamlessly using a predefined configuration. We will discuss how to create this configuration for a new product in this document.

Pre-requisites

Before you proceed with the configuration, make sure the following pre-requisites are met:

  • egov-workflow-v2 service is up and running

  • Role-Action mapping are added for businessService API’s

Key Functionalities

  • Create and modify workflow configuration according to the product requirements.

  • Configure state-level as well BusinessService-level SLA to efficiently track progress of the application.

  • Control access to perform actions through configuration.

Deployment Details

  1. Deploy latest version of egov-workflow-v2 service.

  2. Add businessService persister yaml path in persister configuration.

  3. Add Role-Action mapping for BusinessService API’s.

  4. Overwrite the egov.wf.statelevel flag (true for state level and false for tenant level).

Configuration Details

1. The Workflow configuration has 3 level of hierarchy:

a. BusinessService

b. State

c. Action

The top level object is BusinessService. It contains fields describing the workflow and a list of states that are part of the workflow. The businessService can be defined at the tenant level like pb.amritsar or at the state level like pb. All objects maintain an audit sub-object which keeps track of who is creating and updating, and the time.

Each state object is a valid status for the application. The state object contains the information of the state and what actions can be performed.

The action object is the last object in hierarchy. It defines the name of the action and the roles that can perform the action.

2. The workflow should always start from null state as the service treats new applications as having null as the initial state. For example:

3. In action object, whatever nextState is defined, the application will be sent to that state. It can be to another forward state or even some backward state from where the application have already passed. (Generally such actions are named SENDBACK).

4. SENDBACKTOCITIZEN is a special keyword for the action name. This action sends back the application to a citizen’s inbox for him/her to take action. A new state should be created on which a citizen can take action and should be the nextState of this action. While calling this action from module, the assignes should be enriched by the module with the UUIDs of the owners of the application.

Integration

For integration related steps, refer to the document "Setting Up Workflows" in the reference docs.

Reference Docs

API List

Note: All the API’s are in the same postman collection, and hence, the same link has been added in each row.

Attribute Name

Description

tenantId

The tenantId (ULB code) for which the workflow configuration is defined.

businessService

The name of the workflow.

business

The name of the module which uses this workflow configuration.

businessServiceSla

The overall SLA to process the application (in milliseconds).

state

Name of the state.

applicationStatus

The status of the application when in the given state.

docUploadRequired

Boolean flag representing if document is required to enter the state.

isStartState

Boolean flag representing if the state can be used as a starting state in the workflow.

isTerminateState

Boolean flag representing if the state is the leaf node or end state in the workflow configuration. (No actions can be taken on states with this flag as true).

isStateUpdatable

Boolean flag representing whether data can be updated in the application when taking action on the state.

currentState

The current state on which action can be performed.

nextState

The resultant state after an action is performed.

roles

A list containing the roles which can perform the actions.

auditDetails

Contains fields to audit edits on the data (createdTime, createdBy, lastModifiedTIme, lastModifiedby).

{
        "tenantId": "pb.amritsar",
        "businessService": "PGR",
        "business": "pgr-services",
        "businessServiceSla": 432000000,
        "states": [...]
    }
{
        "sla": 36000000,
        "state": "PENDINGFORASSIGNMENT",
        "applicationStatus": "PENDINGFORASSIGNMENT",
        "docUploadRequired": false,
        "isStartState": false,
        "isTerminateState": false,
        "isStateUpdatable": false,
        "actions": [...]
    }
{
          "action": "ASSIGN",
          "roles": [
              "GRO",
              "DGRO"
          ],
          "nextState": "PENDINGATLME",
      }
{
                    "sla": null,
                    "state": null,
                    "applicationStatus": null,
                    "docUploadRequired": false,
                    "isStartState": true,
                    "isTerminateState": false,
                    "isStateUpdatable": true,
                    "actions": [
                        {
                            "action": "APPLY",
                            "nextState": "APPLIED",
                            "roles": [
                                "CITIZEN",
                                "CSR"
                            ]
                        }
                    ]
                }

Title

Link

Workflow Service Documentation

Workflow Service

Setting Up Workflows

Setting Up Workflows

Title

Link

_create

https://www.getpostman.com/collections/8552e3de40c819e34190

_update

https://www.getpostman.com/collections/8552e3de40c819e34190

_search

https://www.getpostman.com/collections/8552e3de40c819e34190

Checklist

Manage Vendor, Driver and Vehicle Details

The FSM Registry allows for the following actions from the frontend for a particular urban local body (ULB):

  • Add new driver, vehicle, vendor

  • Edit driver, vehicle, vendor details

  • Enable and disable drivers, vehicles and vendors

  • Tag driver and vehicle to vendors.

View and Edit Vendor Details

Login as a ULB admin and navigate to the FSM registry by clicking on it.

User Actions

The following actions can be performed:

  • View list of all vendors in the system along with the details of tagged vehicles and drivers

  • Search for a vendor using the search box

  • Clear search by using the ‘Clear Search’ button

  • Enable/Disable a vendor by using the toggle

  • Sort vendors by creation date

  • View total vehicles tagged to the vendor by clicking on the value to “Total Vehicles”

  • View active vehicles tagged to the vendor by clicking on the value to “Total Vehicles”

  • View total drivers tagged to the vendor by clicking on the value to “Total drivers”

  • View active drivers tagged to the vendor by clicking on the value to “Total drivers”

  • Add a new vendor, driver or vehicle by clicking on the ‘Add’ button

View Vendor List

Vendor details can be viewed by clicking on the vendor name in the FSM registry homepage

User Actions

The following actions can be performed:

  • View vendor details along with tagged vehicles and drivers

  • Tag a new vehicle to the vendor by clicking on the “Add Vehicle” button

  • Remove a tagged vehicle by clicking on ‘Delete’ on the top right of the vehicle card

  • Edit vehicle details by clicking on the ‘Edit’ symbol on the top right of the vehicle card

  • Tag a new driver to the Vendor by clicking on the “Add driver” button

  • Remove a tagged driver by clicking on the ‘Delete’ symbol on the top right of vehicle card

  • Edit driver details by clicking on the ‘Edit’ symbol on the top right of the vehicle card

  • The details of a vendor can be edited or a vendor deleted by clicking on the “Take Action” button.

Clicking on the ‘Edit’ button as part of the “Take Action” button will redirect the user to the “Edit Vendor” details page.

Edit Vendor Details

User Actions

The following actions can be performed:

  • Edit Vendor details

  • Submit Application

The user will be redirected to the list of vendors, and a snack bar will confirm edit.

Delete Vendor

A vendor can be deleted by clicking on the “Take Action” button and selecting delete. A pop-up will appear on the screen.

User Actions

The following actions can be performed:

  • Confirm delete

  • Close pop-up by clicking on the Close button on the pop up.

  • Close pop-up by clicking on the cross icon on the top right of the pop-up

The user will be redirected to the list of vendors, and a snack bar will confirm delete.

Tagging Vehicles and Drivers to a Vendor

Multiple vehicles can be tagged to a vendor. It is necessary that a vehicle exists in the system before it can be tagged. A vehicle can be tagged to a vendor by clicking on the “Add Vehicle” button in the vendor details page.

User Actions

The following actions can be performed:

  • View vendor details along with tagged vehicles and drivers

  • Tag a new vehicle to the vendor by clicking on the “Add Vehicle” button

  • Remove a tagged vehicle by clicking on the ‘Delete’ symbol on the top right of vehicle card

  • Edit vehicle details by clicking on the ‘Edit’ symbol on the top right of the vehicle card

  • Tag a new driver to the vendor by clicking on the “Add driver” button

  • Remove a tagged driver by clicking on the ‘Delete’ symbol on the top right of vehicle card

  • Edit driver details by clicking on the ‘Edit’ symbol on the top right of the vehicle card

  • The details of a vendor can be edited or a vendor deleted by clicking on the “Take Action” button

Clicking on “Add Vehicle” will display a pop-up.

Only vehicles that are not tagged to any vendor will be displayed.

User Actions

The following actions can be performed:

  • Select vehicle from the dropdown

  • Click on Submit to confirm

  • Close pop-up by clicking on the Close button on the pop-up.

  • Close pop-up by clicking on the cross icon on the top right of the pop-up

The user will be able to see the tagged vehicle in the Vehicle details section. The vehicle can be untagged from the vendor by clicking on the delete button against the vehicle details.

Multiple drivers can be tagged to a vendor. It is necessary that a driver exists in the system before he/she can be tagged. A driver can be tagged to a vendor by clicking on the “Add Driver” button in the Vendor details page.

A pop-up will be displayed with a dropdown to select a driver. Only drivers that are not tagged to any vendor will be displayed.

User Actions

The following actions can be performed:

  • Select Driver from the dropdown

  • Click on Submit to confirm

  • Close pop-up by clicking on the Close button on the pop-up.

  • Close pop-up by clicking on the cross icon on the top right of the pop-up

The added driver details will be displayed. The driver can be untagged from the vendor by clicking on the delete button against the driver details.

Adding a New Vendor

A new vendor can be added by clicking on the ‘Add’ button on the FSM registry landing page.

User Actions

The following actions can be performed:

  • Add a new vendor by clicking on Vendor

  • Add a new vehicle by clicking on vehicle

  • Add a new driver by clicking on driver

On clicking on Vendor, the user will be redirected to the add vendor page.

User Actions

The following actions can be performed:

  • Enter Vendor Name

  • Select Vendor Owner details such as Gender, Date of Birth, Email and Phone number. Each vendor is created with a unique mobile number and hence, an error message will be displayed if the mobile number has been used to create other vendors.

  • Enter address details

  • Submit the application

Once the user submits an application, a snack bar will confirm the successful addition of a vendor.

Details of the added vendor will be displayed in the vendor list.

View Vehicle List

The vehicle list can be viewed by clicking on the Vehicle tab in the DSM registry.

A list of all vehicles in the system are visible along with the details of the vendor they are tagged to.

User Actions

The following actions can be performed:

  • View list of all vehicles in the system along with the details of tagged vendor

  • Search for a vehicle using the search box

  • Clear search by using the “Clear Search” button

  • Enable/disable a vehicle by using the toggle

  • Sort vehicles by creation date

  • Add a new vendor, driver or vehicle by clicking on the ‘Add’ button

View Vehicle Details

Vehicle details can be viewed by clicking on the vehicle name.

User Actions

The following actions can be performed:

  • View details of the vehicle

  • Edit vendor tagging by clicking on the edit icon besides the vendor name

  • Remove vendor tagging by clicking on the Delete icon besides the vendor name.

  • Click on the “Take Action” button to edit or delete a vehicle.

Edit Vehicle Details

On clicking on the “Take Action” button, the following will be displayed.

User Actions

The following actions can be performed:

  • Click on edit to edit the Vehicle

  • Click on delete to delete the Vehicle.

  • Click anywhere else on the screen to go back to vehicle details.

On clicking on the edit button, the user will be redirected to the “Edit Vehicle” page.

User Actions

The following actions can be performed:

  • Edit vehicle details

  • Submit edited details.

The user will be redirected to the Vehicle details page and the edits will be reflected.

Delete Vehicle Details

A vehicle can be deleted by clicking on the “Take Action” button and selecting delete.

User Actions

The following actions can be performed:

  • Click on edit to edit the Vehicle

  • Click on delete to delete the Vehicle.

  • Click anywhere else on the screen to go back to vehicle details.

On clicking the delete button, a pop-up will be displayed for confirmation.

User Actions

The following actions can be performed:

  • Close pop-up by clicking on the Close button on the pop up.

  • Close pop-up by clicking on the cross icon on the top right of the pop -p

  • Confirm deletion by clicking on the delete button

On clicking on ‘Delete”, the user will be directed to a list of vehicles and a snack bar will be displayed as confirmation.

Tagging a Vehicle to a Vendor

Apart from tagging a vehicle to a vendor from the vendor details page, tagging can also be done from the vehicle details page by clicking on the add vendor button.

User Actions

The following actions can be performed:

  • View details of the vehicle

  • Tagging vehicle to a Vendor by clicking on the ‘+’ icon besides “Add New Vendor”

A pop-up will be displayed with a dropdown to select a vendor.

User Actions

The following actions can be performed:

  • Selection of a vendor from the dropdown.

  • Close pop-up by clicking on the cross icon on the top right of the pop-up

  • Close pop-up by clicking on Cancel

  • Confirm vendor selection by clicking on Submit.

On clicking submit, the added vendor details will be displayed in the vehicle details page and a snack bar will be displayed for confirmation.

Adding a New Vehicle

Add a new vehicle by clicking on the Add button on the FSM registry landing page and select Vehicle.

User Actions

The following actions can be performed:

  • Add a new vendor by clicking on vendor

  • Add a new vehicle by clicking on vehicle

  • Add a new driver by clicking on driver

On clicking on ‘Vehicle’, the user will be redirected to the add vehicle page.

User Actions

The following actions can be performed:

  • Enter the vehicle registration number. Each vehicle is created with a unique registration number and hence, an error message will be displayed if the registration number has been used to create other vehicles.

  • Select vehicle details such as Model,, Type, Capacity, details of pollution certificate, insurance and road tax.

  • Submit the application

Once the user submits an application, a snack bar will confirm the successful addition of a vendor.

Details of the added vehicle will be displayed in the vehicle list.

View Driver List

Login as an ULB admin and navigate to the FSM Registry by clicking on it. Click on the driver tab.A list of all drivers in the system are visible along with the details of the vendor they are tagged to.

User Actions

The following actions can be performed:

  • View list of all drivers in the system along with the details of tagged vendor

  • Search for a driver using the search box

  • Clear search by using the “Clear Search” button

  • Enable/sisable a driver by using the toggle

  • Sort drivers by creation date

  • Add a new vendor, driver or vehicle by clicking on the ‘Add’ button

View Driver Details

Driver details can be viewed by clicking on the driver’s name.

User Actions

The following actions can be performed:

  • View details of the driver

  • Edit vendor tagging by clicking on the edit icon besides the vendor name

  • Remove vendor tagging by clicking on the Delete icon beside Vendor Name.

  • Click on the “Take Action” button to edit or delete a vehicle.

Driver details can be edited by clicking on the “Take Action" button and selecting edit.

User Actions

The following actions can be performed:

  • Click on Edit to edit the driver

  • Click on Delete to delete the driver

  • Click anywhere else on the screen to go back to driver details.

Edit Driver Details

On clicking the Edit button, the user will be redirected to the “Edit Driver” page.

User Actions

The following actions can be performed:

  • Edit vehicle details

  • Submit edited details.

The user will be redirected to the driver details page and the edits will be reflected.

Delete Driver Details

A driver can be deleted by clicking on the “Take Action” button and selecting delete.

User Actions

The following actions can be performed:

  • Click on Edit to edit the driver

  • Click on Delete to delete the driver

  • Click anywhere else on the screen to go back to driver details.

On clicking the Delete button, a pop-up will be displayed for confirmation.

User Actions

The following actions can be performed:

  • Close pop-up by clicking on the Close button on the pop-up.

  • Close pop-up by clicking on the cross icon on the top right of the pop-up

  • Confirm deletion by clicking on the Delete button

On clicking on ‘Delete’, the user will be directed to a list of vehicles and a snack bar will be displayed as confirmation.

Tagging a Driver to a Vendor

Method 1: Apart from tagging a driver to a vendor from the vendor details page, tagging can also be done from the driver details page by clicking on the add new vendor button.

User Actions

The following actions can be performed:

  • View details of the vehicle

  • Tag driver to a vendor by clicking on the + icon besides the “Add New Vendor”.

A pop-up will be displayed with a dropdown to select a vendor.

User Actions

The following actions can be performed:

  • Selection of a vendor from the dropdown.

  • Close pop-up by clicking on the cross icon on the top right of the pop-up

  • Close pop-up by clicking on Cancel

  • Confirm vendor selection by clicking on Submit.

On clicking on submit, the added vendor details will be displayed in the driver details page and a snack bar is displayed for confirmation.

Method 2: A driver can also be tagged to a vendor from the driver list page. Select a vendor from the dropdown. The driver will be tagged to the selected vendor.

Adding a New Driver

Add a new driver by clicking on the Add button on the FSM registry landing page and select Driver.

User Actions

The following actions can be performed:

  • Add a new vendor by clicking on vendor

  • Add a new vehicle by clicking on vehicle

  • Add a new driver by clicking on driver

On clicking on Driver, the user will be redirected to the add vehicle page.

User Actions

The following actions can be performed:

  • Enter Driver name and License Number. Each vehicle is created with a unique license number and hence, an error message will be displayed if the license number has been used to create other vehicles.

  • Enter driver personal details such as Gender, Mobile number, DOB.

  • Submit the application

Once the user submits an application, a snack bar will confirm the successful addition of a vendor. Details of the added driver will be displayed in the driver list.

FSM Calculator

Details for setting up FSM calculator sevice

Overview

FSM calculator is a system that enables the FSM admin to create billing slabs for the FSM application(s) with different combinations of property type, slum, tank, and capacity. It generates the demand after calculating the charges for the given application using the billing slab already configured.

This document contains the details on how to set up the FSM calculator service, describes the functionalities it provides, and details the enhancements made to the FSM calculator service.

Pre-requisites

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 fsm-calculator-persister config path added in it

  • PSQL server is running and database is created to store FSM Application data

  • The following services should be up and running-

- egov-perister

- egov-mdms

- fsm

- billing-service

Key Functionalities

EXISTING

  • FSM admin, an employee of ULB with FSM admin role can create, update billing slab(s).

  • ULB employee with FSM_CREATOR and FSM_EDITOR can search billing slab(s).

  • ULB employee citizen can file, track and rate the application for cleaning septic tank.

  • ULB employee can get the estimate for the FSM application.

  • FSM service internally call fsm-calculator to generate a demand.

  • Vehicle type check has been removed from calculator service and the bill amount is calculated based on the number of trips entered while submitting the FSM application.

ENHANCEMENT

  • Bill amount is calculated based on the number of trips entered while updating the number of trips in the FSM application.

  • Added validation for advance payment with the configuration.

  • Added validation for maximum total advance payment.

  • Added cancellation charges for canceling the application.

  • Validation before completing the request with the payment.

  • Minimum part payment is configurable, that is, it should be fixed or percentage calculation, and the calculation should done based on the mdms config value.

  • Minimum cancellation fee is configurable, that is, it should be fixed or percentage calculation, and the calculation should done based on the mdms config value.

  • Demand generation process: Generating demand every time the trip is updates.

  • Demand generation process: Added validation not to complete the application from the ULB side before completing the payment.

Deployment Details

  1. Deploy the latest version of FSM.

  2. Add fsm-calculator-persister.yml file in the 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):

https://github.com/egovernments/configs/blob/DEV/egov-persister/fsm-calculator-persister.yaml

Configuration Details

MDMS Configuration

FSM MDMS configuration is sufficient.

Business Service / Workflow Configuration

NA

Actions & Role Action Mapping

Actions

[
  {
    "id": {{PLACEHOLDER1}},
    "name": "FSM BillingSlab Create",
    "url": "/fsm-calculator/v1/billingSlab/_create",
    "displayName": "FSM BillingSlab Create",
    "orderNumber": 1,
    "parentModule": "",
    "enabled": false,
    "serviceCode": "",
    "code": "null",
    "path": ""
  },
  {
    "id": {{PLACEHOLDER2}},
    "name": "FSM BillingSlab Update",
    "url": "/fsm-calculator/v1/billingSlab/_update",
    "displayName": "FSM BillingSlab Update",
    "orderNumber": 1,
    "parentModule": "",
    "enabled": false,
    "serviceCode": "",
    "code": "null",
    "path": ""
  },
  {
    "id": {{PLACEHOLDER3}},
    "name": "FSM BillingSlab Search",
    "url": "/fsm-calculator/v1/billingSlab/_search",
    "displayName": "FSM BillingSlab Search",
    "orderNumber": 1,
    "parentModule": "",
    "enabled": false,
    "serviceCode": "",
    "code": "null",
    "path": ""
  },
  {
    "id": {{PLACEHOLDER4}},
    "name": "FSM Estimate",
    "url": "/fsm-calculator/v1/_estimate",
    "displayName": "FSM Estimate",
    "orderNumber": 1,
    "parentModule": "",
    "enabled": false,
    "serviceCode": "",
    "code": "null",
    "path": ""
  }
]

{
  "id": {{PLACEHOLDER5}},
  "name": "FSM Advance Balance Calculation",
  "url": "/fsm-calculator/v1/_advanceBalanceCalculate",
  "displayName": "FSM Advance Balance Calculation",
  "orderNumber": 1,
  "parentModule": "",
  "enabled": false,
  "serviceCode": "",
  "code": "null",
  "path": ""
},
{
  "id": {{PLACEHOLDER6}},
  "name": "FSM Cancellation Fee Calculation",
  "url": "/fsm-calculator/v1/_cancellationFee",
  "displayName": "FSM Advance Balance Calculation",
  "orderNumber": 1,
  "parentModule": "",
  "enabled": false,
  "serviceCode": "",
  "code": "null",
  "path": ""
}

Role Action Mapping

[
  {
    "rolecode": "FSM_ADMIN",
    "actionid": "{{PLACEHOLDER1}}",
    "actioncode": "",
    "tenantId": "pb"
  },
  {
    "rolecode": "FSM_ADMIN",
    "actionid": "{{PLACEHOLDER2}}",
    "actioncode": "",
    "tenantId": "pb"
  },
  {
    "rolecode": "FSM_CREATOR_EMP",
    "actionid": "{{PLACEHOLDER3}}",
    "actioncode": "",
    "tenantId": "pb"
  },
  {
    "rolecode": "FSM_EDITOR_EMP",
    "actionid": "{{PLACEHOLDER3}}",
    "actioncode": "",
    "tenantId": "pb"
  },
  {
    "rolecode": "FSM_ADMIN",
    "actionid": "{{PLACEHOLDER3}}",
    "actioncode": "",
    "tenantId": "pb"
  },
  {
    "rolecode": "FSM_DSO",
    "actionid": "{{PLACEHOLDER3}}",
    "actioncode": "",
    "tenantId": "pb"
  },
  {
    "rolecode": "FSM_CREATOR_EMP",
    "actionid": "{{PLACEHOLDER4}}",
    "actioncode": "",
    "tenantId": "pb"
  },
  {
    "rolecode": "FSM_EDITOR_EMP",
    "actionid": "{{PLACEHOLDER4}}",
    "actioncode": "",
    "tenantId": "pb"
  },
  {
    "rolecode": "FSM_ADMIN",
    "actionid": "{{PLACEHOLDER4}}",
    "actioncode": "",
    "tenantId": "pb"
  }
]

{
  "rolecode": "CITIZEN",
  "actionid": {{PLACEHOLDER3}},
  "actioncode": "",
  "tenantId": "pb"
} ,
{
  "rolecode": "CITIZEN",
  "actionid": {{PLACEHOLDER5}},
  "actioncode": "",
  "tenantId": "pb"
},
{
  "rolecode": "FSM_EDITOR_EMP",
  "actionid": {{PLACEHOLDER5}},
  "actioncode": "",
  "tenantId": "pb"
},
{
  "rolecode": "FSM_CREATOR_EMP",
  "actionid": {{PLACEHOLDER6}},
  "actioncode": "",
  "tenantId": "pb"
},

Infra Ops Configuration

Configurations that we can manage through values.yml fsm-calculator in infraops repo are as follows. values.yml for fms-calculator can be found here.

Description

name in values.yml

Current Value

contextPath of the api’s

SERVER_CONTEXTPATH

/fsm-calculator

Kafka Consumer Group

SPRING_KAFKA_CONSUMER_GROUP_ID

fsm-calculator

kafka topic to which service push data to save new billing slab

PERSISTER_SAVE_BILLING_SLAB_TOPIC

save-fsm-billing-slab

kafka topic to which service push data to update the existing billing slab

PERSISTER_UPDATE_BILLING_SLAB_TOPIC

update-fsm-billing-slab

mdms service host

EGOV_MDMS_HOST

egov-mdms-service from egov-service-host

billing-service host

EGOV_BILLINGSERVICE_HOST

billing-service from egov-service-host

fsm service host

EGOV_FSM_HOST

fsm from egov-service-host

Configurations sample in Values.yml

 - name: SERVER_CONTEXTPATH
    value: /fsm-calculator
  - name: SPRING_KAFKA_CONSUMER_GROUP_ID
    value: fsm-calculator
  - name: PERSISTER_SAVE_BILLING_SLAB_TOPIC
    value: save-fsm-billing-slab
  - name: PERSISTER_UPDATE_BILLING_SLAB_TOPIC
    value: update-fsm-billing-slab
  - name: SPRING_KAFKA_PRODUCER_KEY_SERIALIZER
    value: org.apache.kafka.common.serialization.StringSerializer
  - name: SPRING_KAFKA_PRODUCER_VALUE_SERIALIZER
    value: org.springframework.kafka.support.serializer.JsonSerializer
  - name: EGOV_MDMS_HOST
    valueFrom:
      configMapKeyRef:
        name: egov-service-host
        key: egov-mdms-service
  - name: EGOV_BILLINGSERVICE_HOST
    valueFrom:
      configMapKeyRef:
        name: egov-service-host
        key: billing-service
  - name: EGOV_FSM_HOST
    valueFrom:
      configMapKeyRef:
        name: egov-service-host
        key: fsm

Data Setup

Billing Slab Setup

Create billing slab with combination of PropertyType, refer values from PropertyType Mdms, Slum (YES/NO), capacityFrom and capacityTo refers to the Vehicle Tank Capacity.

Sample Curl

curl --location --request POST 'http://localhost:9098/fsm-calculator/v1/billingSlab/_create' \
--header 'Content-Type: application/json' \
--data-raw '{
    "RequestInfo": {
        "apiInfo": {
            "id": "string",
            "version": "string",
            "path": "string"
        },
        "deviceDetail": {
            "id": "string",
            "signature": "string"
        },
        "ts": 0,
        "action": "string",
        "key": "string",
        "msgId": "string",
        "requesterId": "string",
        "authToken": "a35b5ba7-2d5f-4272-8a67-0303cfab2c9f"
    },
   "billingSlab":{
          
            "tenantId": "pb.amritsar",
            "capacityFrom": 1000.00,
            "capacityTo": 50000.00,
            "propertyType": "RESIDENTIAL.ROW_HOUSES",
            "slum": "NO",
            "price": 9000.00,
            "status": "ACTIVE"
        },
    "workflow": null
}'

Integration

Integration Scope

The FSM-calculator will be integrated with the FSM application. The FSM application internally will invoke the fsm-calculator service to calculate and generate demand for the charges.

Integration Benefits

  • The calculation and demand generation logic will be separated from the FSM service. For each implementation, the calculation implementation can be changed, if required, without modifying the FSM service.

Steps to Integration

  1. FSM application to call fsm-calulator/v1/_calculate to calculate and generate the demand for the fsm application.

  2. ULB employee can call fsm-calculator/v1/_estimate to get the estimates for the fsm application.

  3. ULB Employee can create billing slab calling fsm-calculator/v1/billingSlab/_create

  4. ULB employee can update billing slab calling fsm-calculator/v1/billingSlab/_update

  5. ULB Employee can search billing slab calling fsm-calculator/v1/billingSlab/_search

  6. FSM application to call fsm-calculator/v1/_cancellationFee to calculate cancellation charge based on the configuration data, that is, either it will be fixed or it will be a percentage.

FSM application to call fsm-calculator/v1/_advanceBalanceCalculate to calculate the advance charge based on the configuration data, that is, either it will be fixed or a percentage.

Interaction Diagram

TBD

Reference Docs

Doc Links

Workflow Technical Document

User Technical Document

MDMS Technical Document

NEEDS TO BE UPDATED

IDGen Technical Document

NEEDS TO BE UPDATED

Localization Technical Document

NEEDS TO BE UPDATED

Persister Technical Document

NEEDS TO BE UPDATED

SMS Notification Technical Document

NEEDS TO BE UPDATED

API Contract

Postman Scripts

API List

Title

Link

fsm-calulator/v1/_calculate

fsm-calculator/v1/_estimate

fsm-calculator/v1/billingSlab/_create

fsm-calculator/v1/billingSlab/_update

fsm-calculator/v1/billingSlab/_search

fsm-calculator/v1/_cancellationfee

fsm-calculator/v1/_advancebalancecalculate

Workflow Service
User Service
API Contract
Postman Scripts
https://www.getpostman.com/collections/8b9eb951a810486f41a4
https://www.getpostman.com/collections/8b9eb951a810486f41a4
https://www.getpostman.com/collections/8b9eb951a810486f41a4
https://www.getpostman.com/collections/8b9eb951a810486f41a4
https://www.getpostman.com/collections/8b9eb951a810486f41a4
https://api.postman.com/collections/23418568-77e3f5fb-dd9d-4f05-92e7-b15dcbeecffe?access_key=PMAT-01GN93ZP6B68E0T5TZ62GR02W0
https://api.postman.com/collections/23418568-77e3f5fb-dd9d-4f05-92e7-b15dcbeecffe?access_key=PMAT-01GN93ZP6B68E0T5TZ62GR02W0

Implementation Plan

Task
Owner
Assigned To
Dependency
Effort Estimation (Days)
Start Date
End Date
Revised Start Date
Revised End Date
New End Date
Status
Comments

Handover of FSM1.3

Riddhi

Taresh, Rakesh, Venu and Taniya

20-Mar-2023

20-Mar-2023

29-Mar-2023

29-Mar-2023

Completed

Communication to the team with the docs of FSMv1.3

Master data validation for 37 new ULBs

Riddhi

Taresh and Taniya

4

1-Mar-2023

17-Mar-2023

1-Mar-2023

24-Mar-2023

Completed

Setting up of master data and configurations on FSM test server

Riddhi

Taresh and Taniya

1.5

20-Mar-2023

21-Mar-2023

23-Mar-2023

24-Mar-2023

Completed

Deployment of new version(FSM1.3) in FSM test environment

Riddhi

Taresh

0.5

20-Mar-2023

21-Mar-2023

23-Mar-2023

24-Mar-2023

Completed

Listing the changes in core services related to FSM1.3

Riddhi

Taresh

0.5

21-Mar-2023

22-Mar-2023

30-Mar-2023

30-Mar-2023

Completed

Taking the core service changes(if any) with PwC team and getting their approval

Riddhi

Taresh

0.5

22-Mar-2023

23-Mar-2023

31-Mar-2023

31-Mar-2023

NA

I am told there are no such changes. If that is the case mark the status as NA.

QA sign off on FSM test server

Riddhi

Venu

2

23-Mar-2023

24-Mar-2023

2-Apr-2023

17-Apr-2023

18-Apr-2023

Completed

URC & E2E Testing - QA Sign Off

Riddhi

Venu

2

5-Apr-2023

17-Apr-2023

19-Apr-2023

Completed

Sign Off from the Program Team

Riddhi/Arindam/Shrija/Abhishek

Shrija, Abhishek, Pradeep

2

27-Mar-2023

27-Mar-2023

11-Apr-2023

17-Apr-2023

In-Progress

Customization suggested by Program team

Riddhi/Arindam

Rakesh/Taresh

2

28-Mar-2023

29-Mar-2023

4-Apr-2023

17-Apr-2023

Completed

Core service code merge(if any) on SUJOG UAT by PwC

Riddhi/Arindam

Rakesh/Taresh

NA

0.5

29-Mar-2023

29-Mar-2023

14-Apr-2023

17-Apr-2023

NA

NA

This is not applicable in the case of V1.3.

Sujog UAT set up with lastest builds and master data

Riddhi/Arindam

Taresh, Taniya and Rakesh

DATA COLLECTION HAS TO BE COMPLETE

3

30-Mar-2023

3-Apr-2023

14-Apr-2023

18-Apr-2023

20-Apr-2023

Completed

Align with the PwC on the deployment. There are MDMS restarts etc which need their approval.

QA sign off on Sujog UAT instance

Riddhi/Arindam

Venu, Riddhi and Arindam

Check with Taresh on whether MDMS change will be tested by PwC and how manys do they need

2

4-Apr-2023

5-Apr-2023

18-Apr-2023

20-Apr-2023

3-May-2023

Completed

Need the approval from PwC

PR merge from the PwC team is delayed by a 2 days due to the production release issue

UAT sign off

Riddhi/Arindam/Shrija/Abhishek/Some ULB's in Phase-1

Shrija, Abhishek, Pradeep

2

6-Apr-2023

10-Apr-2023

20-Apr-2023

21-Apr-2023

23-May-2023

In-Progress

This includes PwC team approval that the testing of SUJOG modules are done on UAT

Setting up of master data and configurations on production(Specific to FSM1.3)

Riddhi/Arindam

Taresh and Taniya

3

11-Apr-2023

13-Apr-2023

24-Apr-2023

26-Apr-2023

23-May-2023

Completed

Deploying to production

Riddhi/Arindam

Riddhi/Arindam

1

11-Apr-2023

13-Apr-2023

26-Apr-2023

26-Apr-2023

26-May-2023

Completed

Email communication to PwC team

Sanity testing on production using testing tenant

Riddhi/Arindam

Venu, Riddhi, Arindam, Abhisekh

1

14-Apr-2023

17-Apr-2023

26-Apr-2023

26-Apr-2023

24-May-2023

Completed

After this stage, we can announce to all existing ULBs on the v1.3 upgrade. Ideally, items 18 and 19 should happen within the same evening.

Setting up of new ULB's, Master data, Seed data, User creations for 37 ULB's

Riddhi/Arindam

Taresh, Taniya, Venu

12

14-Apr-2023

19-Apr-2023

10-Apr-2023

28-Apr-2023

7-Jun-2023

In-Progress

Release communication

Riddhi/Arindam

Riddhi/Arindam

19-Apr-2023

19-Apr-2023

28-Apr-2023

28-Apr-2023

7-Jun-2023

To Do

Email communication about the new ULBs made live

FSM Employee User Manual

ULB officials or employees receive the service requests and are responsible for managing and routing these requests to specific DSOs.

Employees can:

  • Create desludging application​ on behalf of citizens

  • Collect payments

  • ​Update application/Generate demand​ ​

  • Assign DSO to an application​ ​

  • Re-assign DSO to an application​ ​

  • Complete or decline request​ ​

  • Multiple request assignment to a single vehicle​

  • Manage vendor, driver and vehicle details

Language Selection

After landing on the employee URL, the user is prompted to select the language with which they would like to access the system.

User actions

On this page, the following actions can be performed:

  • Selection of language

After the user clicks on ‘Continue’, the page navigates to the ‘Login’ page.

Login

ULB employees are provided with credentials to login to the system. Role-based access for various steps in the workflow, that is, different individuals can be assigned to create an application, modify applications or manage vendor, driver and vehicle details.

User actions

On this page, the following actions can be performed:

  • Enter username and password

  • Select city for login

  • Reset password by clicking on the “Forgot Password” link

On clicking continue, employees are redirected to the FSM home page

​Create Desludging Application

The FSM home page has 3 options:

  1. To create a new application on behalf of the citizen

  2. View existing pending applications

  3. Search for historical applications

User Actions

On this page, the following actions can be performed:

  • Navigate to the inbox to view pending actions

  • Create New desludging application

  • Search for old applications

  • Change language

  • Edit profile details by clicking on the user icon on top right hand corner

  • Logout by clicking on the user icon on top right hand corner

Click on "New Desludging Application" to create a new application.

User Actions

On this page, the following actions can be performed:

  • Enter Application details (Application Channel, Applicant Name, Applicant Mobile Number and Gender)

  • Enter Property details (Property Type and Property Subtype)

  • Enter Location details (Pincode, City, Locality, Whether Slum and slum name, Street Name, Door/House No., Landmark)

  • Enter Pit/Septic Tank Details (Pit Type, Dimensions)

  • Enter Trip details (No. of trips required and vehicle capacity)

On filling the above details, the Amount per Trip and Total Amount are calculated automatically. The advance amount, based on ULB settings, is displayed.

User Actions

The following actions can be performed:

  • Advance amount may be edited (above minimum advance amount and below total advance amount)

Click on Submit Application to submit the application, and it redirects to a confirmation page.

User Actions

The following actions can be performed:

  • Download application acknowledgement receipt

  • Go back to the homepage.

An SMS will be triggered to the citizen with an acknowledgement and payment link, if payment is due.

Update Application

An application created by a citizen through the online channel has to be updated by an employee before confirmation. This application will show with the status “Application Created”.

User Actions

The following actions can be performed:

  • Search for an active application using “Application No.” and “Mobile No.”

  • Clear search by clicking on “Clear Search”

  • View and update applications by clicking on an application number

  • Filter applications by ‘Localilty’ using the Locality dropdown

  • Filter applications by ‘Status’

  • Search for past applications by using “Search Application”

On clicking on an application number, application details are displayed.

User Actions

The following actions can be performed:

  • View application details

On clicking on the update application, application details will be viewed. Details such as locality, number of trips and capacity will be displayed.

Clicking on “Update application” will update the status of the application as “Pending for Payment”.

Collect Payment

Desludging applications pending for payment are accessible in the inbox of the user assigned the collector role. The status of the application is reflected in the status column.

User Actions

The following actions can be performed:

  • Search for an active application using “Application No.” and “Mobile No.”

  • Clear Search by clicking on “Clear Search”

  • View and update applications by clicking on an application number

  • Filter applications by ‘Lolacilty’ using the locality dropdown

  • Filter applications by ‘Status’

  • Search for past applications by using “Search Application”

On clicking on an application number, application details are displayed.

User Actions

The following actions can be performed:

  • View application details, including Applicant, Property and Trip details

  • View application timeline

  • Proceed to collect by clicking on the “Collect Payment” button

A user is redirected to the following screen on clicking on Collect Payment

User Actions

The following actions can be performed:

  • View collection amount, including total amount and amount per trip

  • Enter/update payee details

  • Select payment mode

  • Gen/G8 Receipt Details by entering receipt no. and issue date

Upon clicking on collect, a user is redirected to a confirmation page.

User Actions

The following actions can be performed:

  • Print payment receipt

  • Go back to home by clicking on the “Take Action” button

The following is the view of the payment receipt.

Assign DSO

Open desludging applications are accessible by navigating to the Inbox via the FSM homepage. Applications where DSO needs to be assigned will be shown as Pending for DSO assignment.

User Actions

The following actions can be performed:

  • Search for an active application using “Application No.” and “Mobile No.”

  • Clear Search by clicking on “Clear Search”

  • View and update applications by clicking on an application number

  • Filter applications by ‘Localilty’ using the locality dropdown

  • Filter applications by ‘Status’

  • Search for past applications by using “Search Application”

On clicking on an application number, application details are displayed.

User Actions

The following actions can be performed:

  • View application detail

  • Assign DSO

On clicking the Assign DSO button, a pop-up will occur.

User Actions

The following actions can be performed:

  • Select DSO name via dropdown

  • Select expected date of completion

  • Close pop-up by clicking on the Close button

  • Close pop-up by clicking on the cross icon on the top right of the pop-up.

Clicking on Assign will redirect the user to the application details page and display a snack bar as confirmation. The status of the application will be updated to “Pending for DSO Approval”.

Re-Assign DSO

Employees can reassign to other DSOs in case the request has been rejected or declined by the DSO for some reason. Search for applications Pending for DSO Approval status.

User Actions

The following actions can be performed:

  • Search for an active application using “Application No.” and “Mobile No.”

  • Clear search by clicking on “Clear Search”

  • View and update applications by clicking on an application number

  • Filter applications by ‘Localilty’ using the locality dropdown

  • Filter applications by ‘Status’

  • Search for past applications by using “Search Application”

On clicking on an application number, application details are displayed.

User Actions

The following actions can be performed:

  • View application details

  • Click on “Take Action” button

The take action button has the following options:

  • Assign Vehicle (on behalf of DSO)

  • Decline Request (on behalf of DSO)

  • Re-assign DSO

Clicking on “Re-assign DSO” will display the following pop-up.

User Actions

The following actions can be performed:

  • Select “Reason for Re-assign”

  • Select “DSO Name”

  • Update “Expected date of completion”

  • Close pop-up by clicking on the Close button on the pop up.

  • Close pop-up by clicking on the cross icon on the top right of the pop up.

  • Confirm re-assignment by clicking on the ‘Reassign’ button.

Clicking on Assign will redirect the user to the application details page and display a snack bar as confirmation. The status of the application will remain as “Pending for DSO Approval’.

Decline Request (On behalf of DSO)

Employees can be assigned the role of the DSO, and can decline a request on behalf of the DSO. Applications can be rejected by an employee when in “Pending for DSO Approval” stage.

User Actions

The following actions can be performed:

  • Search for an active application using “Application No.” and “Mobile No.”

  • Clear search by clicking on “Clear Search”

  • View and update applications by clicking on an application number

  • Filter applications by ‘Localilty’ using the locality dropdown

  • Filter applications by ‘Status’

  • Search for past applications by using “Search Application”

On clicking on an application number, application details are displayed.

User Actions

The following actions can be performed:

  • View application details

  • Click on the “Take Action” button

The take action button has the following options:

  • Assign Vehicle (on behalf of DSO)

  • Decline Request (on behalf of DSO)

  • Re-assign DSO

Clicking on “Decline Request’” will display the following pop-up.

User Actions

The following actions can be performed:

  • Reason for Declining

  • Enter Comments

  • Close pop-up by clicking on the Close button on the pop-up.

  • Close pop-up by clicking on the cross icon on the top right of the pop-up

  • Confirm decline request by clicking on the “Decline Request” button

A snack bar will confirm decline and the application timeline will be updated to DSO Rejected.

Assign Vehicle (On behalf of DSO)

Employees can be assigned the role of the DSO, and can assign a vehicle on behalf of the DSO. A vehicle can be assigned when the application is in the “Pending for DSO Approval’ stage.

User Actions

The following actions can be performed:

  • Search for an active application using “Application No.” and “Mobile No.”

  • Clear search by clicking on “Clear Search”

  • View and update applications by clicking on an application number

  • Filter applications by ‘Localilty’ using the locality dropdown

  • Filter applications by ‘Status’

  • Search for past applications by using “Search Application”

On clicking on an application number, application details are displayed.

User Actions

The following actions can be performed:

  • View application details

  • Click on the “Take Action” button

The take action button has the following options:

  • Assign Vehicle (on behalf of DSO)

  • Decline Request (on behalf of DSO)

  • Re-assign DSO

Clicking on “Assign Vehicle’’ wil display the following pop-up.

User Actions

The following actions can be performed:

  • Update Vehicle Registration No.

  • Close pop-up by clicking on the Close button on the pop up.

  • Close pop-up by clicking on the cross icon on the top right of the pop up

  • Confirm Decline Request by clicking on the “Assign Vehicle” button

A snack bar will confirm assignment of vehicle and the application timeline will be updated to DSO in Progress.

Update/Schedule Trips

Once DSO is in progress, the number of trips can be updated. This can be done by both the ULB and the DSO.

User Actions

The following actions can be performed:

  • Search for an active application using “Application No.” and “Mobile No.”

  • Clear search by clicking on “Clear Search”

  • View and update applications by clicking on an application number

  • Filter applications by ‘Localilty’ using the locality dropdown

  • Filter applications by ‘Status’

  • Search for past applications by using “Search Application”

On clicking on an application number, application details are displayed.

User Actions

The following actions can be performed:

  • View application details

  • Click on the “Take Action” button

The take action button has the following options:

  • Complete Request

  • Update/Schedule Trips

  • Re-assign DSO

On clicking on Update/Schedule trips, the following pop up is displayed:

User Actions

The following actions can be performed:

  • Increase the number of trips by clicking on the + button

  • Decrease number of trips by clicking on the - button

  • Close pop-up by clicking on the Close button on the pop up.

  • Close pop-up by clicking on the cross icon on the top right of the pop up

  • Confirm update/schedule trips by clicking on the “Update/schedule” button

A snack bar will confirm the updated number of trips.

Complete Request

Once the service request has been completed and all pending payment has been collected, the same has to be confirmed in the system. This can be done by selecting the “Complete Request” button in the “Take Action” button. On clicking on Complete Request, the following pop up is displayed:

User Actions

The following actions can be performed:

  • Confirm/Update service date

  • Confirm/Update the volume of waste collected

  • Confirm/Update pit details

  • Upload pit photo

  • Close pop-up by clicking on the Close button on the pop up.

  • Close pop-up by clicking on the cross icon on the top right of the pop up

  • Confirm details by clicking on the ‘Completed’’ button

A snack bar will confirm that request has been completed and the status will be updated to “Waiting for Disposal”.

User Service

Overview

User service is responsible for user data management, and providing functionality to login and logout in the DIGIT system.

Pre-requisites

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

Key Functionalities

  • Store, update and search user data

  • Provide authentication

  • Provide login,logout functionality into DIGIT platform

  • Store user data PIIs in encrypted form

Interaction Diagram

Deployment Details

  1. Set up latest version of egov-enc-service and egov-mdms- service.

  2. Deploy latest version of egov-user service.

  3. Add role action mapping for APIs.

Configuration Details

Following are the properties in application.properties file in user service which 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 is OTP-based

employee.login.password.otp.enabled

false

Whether employee login is OTP-based

citizen.login.password.otp.fixed.value

123456

Fixed OTP for citizens

citizen.login.password.otp.fixed.enabled

false

Allow fixed OTP for citizens

otp.validation.register.mandatory

true

Whether OTP is 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

Integration

Integration Scope

User data management and functionality to login and logout into Digit system using OTP and password.

Integration Benefits

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 password

Citizen

  • Create user

  • Update user

  • Search user

  • User registration using OTP

  • OTP-based login

Steps to Integration

  • To integrate, the host of the egov-user should be overwritten in helm chart.

  • Use /citizen/_create endpoint for creating users into the system. This endpoint requires the user to validate his/her mobile number using OTP. The OTP will be send to his/her mobile number, and then that OTP will be send as otpReference in the request body.

  • Use /v1/_search and /_search endpoints to search users in the system depending on various search parameters.

  • Use /profile/_update for updating the user profile. The user will be validated (either by OTP-based validation or password validation) when this API is called.

  • /users/_createnovalidate and /users/_updatenovalidate are endpoints to create user data into the system without any validations (no OTP or password required). They should be strictly used only for creating/updating users internally and should not be exposed outside.

  • Forgot password: In case the user forgets the password, it can be reset by calling /user-otp/v1/_send which will generate and send the OTP to the employee’s mobile number. The password can then be updated using this OTP by calling the API /password/nologin/_update in which new password along with the OTP has to be sent.

  • Use /password/_update to update the existing password by logging in. In the request body, both the old and new passwords hace to be sent. Details of the API can be found in the attached swagger documentation.

  • Use /user/oauth/token for generating token, /_logoutfor logout and /_details for getting user information from the token.

  • Multi-tenant user: This functionality allows a user to perform actions across multiple ULBs. For example, an employee belonging to Amritsar can perform a role of say a trade license approver for Jalandhar by assigning a tenant-level role of tenantId pb.jalandhar to him/her.

{
        "id": 24226,
        "uuid": "11t0e02b-0145-4de2-bc42-c97b96264807",
        "userName": "xyz",
        "name": "abc",
        "mobileNumber": "9999999999",
        "emailId": "[email protected]",
        "locale": null,
        "type": "EMPLOYEE",
        "roles": [
            {
                "name": "Employee",
                "code": "EMPLOYEE",
                "tenantId": "pb.amritsar"
            },
            {
                "name": "TL Approver",
                "code": "TL_APPROVER",
                "tenantId": "pb.jalandhar"
            }
        ],
        "active": true,
        "tenantId": "pb.amritsar"
    }
  • If an employee has a role with a state-level tenantId he/she can perform actions corresponding to that role across all tenants.

  • Refresh token: Whenever the /user/oauth/token is called to generate the access_token, along with the access_token one more token is generated called refresh_token. The refresh token is used to generate a new access_token whenever the existing one expires. Till the refresh token is valid, the user will not have to login even if his/her access_token gets expired as it will be generated using refresh_token. The validity time of the refresh token is configurable and can be configured using the property: refresh.token.validity.in.minutes

User Data Privacy

MDMS configuration for security policy

{
  "tenantId": "pb",
  "moduleName": "DataSecurity",
  "SecurityPolicy": [
    {
      "model": "User",
      "uniqueIdentifier": {
        "name": "uuid",
        "jsonPath": "uuid"
      },
      "attributes": [
        {
          "name": "name",
          "jsonPath": "name",
          "patternId": "002",
          "defaultVisibility": "PLAIN"
        },
        {
          "name": "mobileNumber",
          "jsonPath": "mobileNumber",
          "patternId": "001",
          "defaultVisibility": "PLAIN"
        },
        {
          "name": "emailId",
          "jsonPath": "emailId",
          "patternId": "004",
          "defaultVisibility": "PLAIN"
        },
        {
          "name": "username",
          "jsonPath": "username",
          "patternId": "002",
          "defaultVisibility": "PLAIN"
        },
        {
          "name": "altContactNumber",
          "jsonPath": "altContactNumber",
          "patternId": "001",
          "defaultVisibility": "PLAIN"
        },
        {
          "name": "alternatemobilenumber",
          "jsonPath": "alternatemobilenumber",
          "patternId": "001",
          "defaultVisibility": "PLAIN"
        },
        {
          "name": "pan",
          "jsonPath": "pan",
          "patternId": "001",
          "defaultVisibility": "PLAIN"
        },
        {
          "name": "aadhaarNumber",
          "jsonPath": "aadhaarNumber",
          "patternId": "001",
          "defaultVisibility": "PLAIN"
        },
        {
          "name": "guardian",
          "jsonPath": "guardian",
          "patternId": "002",
          "defaultVisibility": "PLAIN"
        },
        {
          "name": "permanentAddress",
          "jsonPath": "permanentAddress/address",
          "patternId": "003",
          "defaultVisibility": "PLAIN"
        },
        {
          "name": "correspondenceAddress",
          "jsonPath": "correspondenceAddress/address",
          "patternId": "003",
          "defaultVisibility": "PLAIN"
        },
        {
          "name": "fatherOrHusbandName",
          "jsonPath": "fatherOrHusbandName",
          "patternId": "002",
          "defaultVisibility": "PLAIN"
        },
        {
          "name": "searchUsername",
          "jsonPath": "userName",
          "patternId": "002",
          "defaultVisibility": "PLAIN"
        }
      ],
      "roleBasedDecryptionPolicy": [
        {
          "roles": [
            "PGR_LME",
            "GRO"
          ],
          "attributeAccessList": [
            {
              "attribute": "name",
              "firstLevelVisibility": "MASKED",
              "secondLevelVisibility": "PLAIN"
            },
            {
              "attribute": "mobileNumber",
              "firstLevelVisibility": "MASKED",
              "secondLevelVisibility": "PLAIN"
            },
            {
              "attribute": "username",
              "firstLevelVisibility": "MASKED",
              "secondLevelVisibility": "PLAIN"
            },
            {
              "attribute": "permanentAddress",
              "firstLevelVisibility": "MASKED",
              "secondLevelVisibility": "PLAIN"
            }
          ]
        },
        {
          "roles": [
            "TLCEMP"
          ],
          "attributeAccessList": [
            {
              "attribute": "mobileNumber",
              "firstLevelVisibility": "MASKED",
              "secondLevelVisibility": "PLAIN"
            }
          ]
        }
      ]
    },
    {
      "model": "UserSelf",
      "uniqueIdentifier": {
        "name": "uuid",
        "jsonPath": "uuid"
      },
      "attributes": [
        {
          "name": "name",
          "jsonPath": "name",
          "patternId": null,
          "defaultVisibility": "PLAIN"
        },
        {
          "name": "mobileNumber",
          "jsonPath": "mobileNumber",
          "patternId": null,
          "defaultVisibility": "PLAIN"
        },
        {
          "name": "emailId",
          "jsonPath": "emailId",
          "patternId": null,
          "defaultVisibility": "PLAIN"
        },
        {
          "name": "username",
          "jsonPath": "username",
          "patternId": null,
          "defaultVisibility": "PLAIN"
        },
        {
          "name": "altContactNumber",
          "jsonPath": "altContactNumber",
          "patternId": null,
          "defaultVisibility": "PLAIN"
        },
        {
          "name": "alternatemobilenumber",
          "jsonPath": "alternatemobilenumber",
          "patternId": null,
          "defaultVisibility": "PLAIN"
        },
        {
          "name": "pan",
          "jsonPath": "pan",
          "patternId": null,
          "defaultVisibility": "PLAIN"
        },
        {
          "name": "aadhaarNumber",
          "jsonPath": "aadhaarNumber",
          "patternId": null,
          "defaultVisibility": "PLAIN"
        },
        {
          "name": "guardian",
          "jsonPath": "guardian",
          "patternId": null,
          "defaultVisibility": "PLAIN"
        },
        {
          "name": "permanentAddress",
          "jsonPath": "permanentAddress/address",
          "patternId": null,
          "defaultVisibility": "PLAIN"
        },
        {
          "name": "correspondenceAddress",
          "jsonPath": "correspondenceAddress/address",
          "patternId": null,
          "defaultVisibility": "PLAIN"
        },
        {
          "name": "fatherOrHusbandName",
          "jsonPath": "fatherOrHusbandName",
          "patternId": null,
          "defaultVisibility": "PLAIN"
        }
      ],
      "roleBasedDecryptionPolicy": []
    }
  ]
}

There are two security policy model for user data: User and UserSelf. In model User, field attributes contain a list of fields from the User object that needs to be secured and field roleBasedDecryptionPolicy is an attribute-level role-based policy. It will define visibility for each attribute.

UserSelf model contains the same structure of security policy, but User security model is used for Search API response and UserSelf is used for Create/Update API response.

Visibility of the PII data is based on the above MDMS configuration. There are three types of visibility mentioned in the configuration:

  1. PLAIN - Show text in plain form.

  2. MASKED - The returned text will contain masked data. The masking pattern will be applied as defined in the Masking Patterns master data.

  3. NONE - The returned text will not contain any data. It would contain string like “Confidential Information”.

Plain access request

{
  "RequestInfo": {
    "plainAccessRequest": {
      "recordId": "d5ee3d45-13a1-4aa5-bd86-9b8dae34b900"
      "fields": [ "name", "mobileNumber" ]
    }
  }
}

Any user will be able to get plain access to the secured data (citizen’s PII) by requesting through the plainAccessRequest parameter. It takes the following parameters:

  1. recordId - It is the unique identifier of the record that is requested for plain access.

  2. fields - It defines a list of attributes that are requested for plain access.

To know more about the encryption policy, refer to document Encryption Service mentioned in the reference docs.

Reference Docs

Title

Link

User data encryption promotion details

Encryption Service

API List

Title

Link

/citizen/_create

/users/_createnovalidate

/_search

/v1/_search

/_details

/users/_updatenovalidate

/profile/_update

/password/_update

/password/nologin/_update

/_logout

/user/oauth/token

Note: All APIs are in the same postman collection, and hence, the same link has been added in each row.

On AWS

The is one of the AWS services for deploying, managing, and scaling any distributed and containerised workloads. Here we can provide the EKS cluster on AWS from the ground up and using an automated way (infra-as-code) using and then deploy the DIGIT services config-as-code using .

Pre-read:

  • Know about EKS: .

  • Know what Terraform is: .

Prerequisites

  1. ​ with the admin access to provision EKS service. You can always subscribe to a free AWS account to learn the basics and try, but there is a limit to . For this demo, you need to have a commercial subscription to the EKS service, if you want to try out for a day or two, it might cost you about Rs 500 - 1000. (Note: Post the demo, for the internal folks, eGov will provide a 2-3 hours time-bound access to eGov's AWS account based on the request and the available number of slots per day).

  2. Install on your local machine that helps you interact with the Kubernetes cluster.

  3. Install that helps you package the services along with the configurations, envs, secrets, etc, into a .

  4. Install the version (0.14.10) for the Infra-as-Code (IaC) to provision cloud resources as code and with desired resource graph and also it helps to destroy the cluster in one go.

  5. ​ on your local machine so that you can use AWS CLI commands to provision and manage cloud resources on your account.

  6. Install that helps you authenticate your connection from your local machine so that you should be able to deploy DIGIT services.

  7. Use the credentials provided for the Terraform () to connect with your AWS account and provision cloud resources.

    ​

    1. You will get a Secret Access Key and Access Key ID. Save them.

    2. Open the terminal and run the following command. You have already installed the AWS CLI, and you have the credentials saved. (Provide the credentials. You can leave the region and output format blank).

    The above will create the following file in your machine as /Users/.aws/credentials.

Before we provision cloud resources, we must understand what resources need to be provisioned by Terraform to deploy DIGIT.

The following picture shows the key components (EKS, Worker Nodes, Postgress DB, EBS Volumes, Load Balancer).

EKS Architecture for DIGIT Setup

Considering the above deployment architecture, the following is the resource graph we will provision using Terraform in a standard way so that every time and for every env, it will have the same infra.

  • EKS control plane (Kubernetes master)

  • Work node group (VMs with the estimated number of vCPUs, memory)

  • EBS volumes (Persistent volumes)

  • RDS (PostGres)

  • VPCs (Private network)

  • Users to access, deploy, and read-only

Understand the resource graph in Terraform script:

  • Ideally, one would write the Terraform script from the scratch using this .

  • Here, we have already written the Terraform script that provisions the production-grade DIGIT infra and can be customised with the specified configuration.

  • Let's clone the where the Terraform script to provision the EKS cluster is available. Below is the structure of the files:

Example:

  • VPC Resources:

    • VPC

    • Subnets

    • Internet Gateway

    • Route Table

  • EKS Cluster Resources:

    • IAM Role to allow EKS service to manage other AWS services.

    • EC2 Security Group to allow networking traffic with the EKS cluster.

    • EKS Cluster.

  • EKS Worker Nodes Resources:

    • IAM role allowing Kubernetes actions to access other AWS services.

    • EC2 Security Group to allow networking traffic.

    • Data source to fetch the latest EKS worker AMI.

    • AutoScaling Launch Configuration to configure worker instances.

    • AutoScaling Group to launch worker instances.

  • Database

    • Configuration in this directory creates a set of RDS resources, including DB instance, DB subnet group, and DB parameter group.

  • Storage Module

    • Configuration in this directory creates EBS volume and attaches it together.

    ​

  • The following main.tf with create s3 bucket to store all the state of the execution to keep track.

    iFix-DevOps/Infra-as-code/terraform/sample-aws/remote-state

    .​

  1. The following main.tf contains the detailed resource definitions that need to be provisioned.

    Dir: iFix-DevOps/Infra-as-code/terraform/sample-aws

Custom variables/configurations:

You can define your configurations in variables.tf and provide the env-specific cloud requirements so that using the same Terraform template, you can customise the configurations.

Following are the values you need to mention in the following files. The blank ones will be prompted for inputs during execution.

​ ​

​

Important: Create your keybase key before you run the terraform

  • Use this URL to to create both public and private keys in your machine. Upload the public key into the account that you have created, give it a name, and ensure that you mention that in your Terraform. This allows you to encrypt sensitive information.

    • Example: User keybase user in eGov case is "egovterraform" that needs to be created and the public key needs to be uploaded here: ​

    • You can use this to decrypt your secret key. To decrypt a PGP message, upload the PGP message, PGP private key, and passphrase.

Run Terraform

Now that we know what the Terraform script does, the resources graph that it provisions, and what custom values should be given to your env, let us begin to run the Terraform scripts to provision infra required for deploying DIGIT on AWS.

  1. First CD into the following directory, run the following command 1-by-1, and watch the output closely.

Upon successful execution, the following resources get created, which can be verified by the command "terraform output".

  • s3 bucket: to store terraform state.

  • Network: VPC, security groups.

  • IAM users auth: using keybase to create admin, deployer, the user. Use this URL to to create both public and private keys in your machine. Upload the public key into the account that you have just created, give it a name, and mention that in your terraform. This allows you to encrypt sensitive information.

    • Example: User keybase user in eGov case is "egovterraform" that needs to be created, and public keys need to be uploaded here: ​

    • You can use this to decrypt your secret key. To decrypt a PGP message, upload the PGP message, PGP private key, and passphrase.

  • EKS cluster: with master(s) & worker node(s).

  • Storage(s): for es-master, es-data-v1, es-master-infra, es-data-infra-v1, zookeeper, kafka, kafka-infra.

  • Use this link to in order to get the kubeconfig file and connect to the cluster from your local machine. This enables you deploy DIGIT services to the cluster.

  1. Finally, verify that you can connect to the cluster by running the following command.

You are all set to deploy the product.

Standard Operating Procedure (SOP)

The programme's scope includes rolling out the DIGIT-based FSSM platform across all the 115 ULBs of Odisha, covering 119 FSTPs, in a phased manner. The choice of the FSTPs within phases will be based on their operational readiness and the availability of TRPs in the state.

The multi-step approach that commences with go-live readiness planning across all ULBs is showcased below:

Infrastructure Checklist for the ULBs and FSTPs

Programme Governance Structure

Training & Capacity Building

Training and capacity building is considered to be an important aspect of this rollout. The Odisha Water Academy (OWA), which has been established as a Centre of Excellence under the Water Corporation of Odisha (WATCO) and the Housing & Urban Development Department (HUDD), Government of Odisha, is playing an important role in ensuring the sustainability of the programme by taking up the training and capacity building responsibilities. The participants from the 33 ULBs of phase-1 have successfully completed the training programme held under the Odisha Water Academy (OWA) at Unnati Bhawan, Bhubaneswar, on September 20th and 21st, 2022.

Empowering the FSSM stakeholders with the knowledge of the platform, the various services that are going to be delivered through it, and its key features and functionalities, is going to be key to driving the adoption of SUJOG-FSSM at all levels of the service delivery chain. With this objective in mind, the multi-tier training structure has been designed.

Multi-tier training structure

It is proposed that the complete training plan and the creation of the training assets will be owned by eGov Foundation, while the master trainers for training the ULB FSSM executives and TRPs will be provided by OWA from its pool of resources with the support of eGov Foundation. These master trainers will be trained by eGov Foundation, and they will further disseminate the knowhow to ULBs, first at a central location, and then by physically visiting each of the ULBs within a cluster for refresher sessions.

  1. eGov to onboard and train the master trainers identified by Odisha Urban Academy.

  2. Master trainers will help in training the ULB employees with support from OWSSB and eGov during the go-live training sessions.

  3. Master trainers will hand-hold the ULB and collect feedback from them post training.

Training sessions for ULB FSSM executives and technical resource personnel

  1. Nominated participants from the ULBs will be trained by OWA master trainers at a central location, which would be Bhubaneswar. The training will be conducted in two batches.

  2. The master trainers (MTs) will train the ULB nominated persons (1 nominee from each ULB and 1 technical resource person) to become field trainers in their ULBs. In turn, these field trainers will be responsible for training all the other users, that is, the ULB operators, FSTP operators, PSSO staff, etc.

  3. After training the field trainers, MTs will be expected to conduct assessments to ensure the effectiveness of these trainers. The MTs will also inform the ULB nominees about the adoption metrics and how to track these metrics on an ongoing basis.

  4. In case the ULBs are not able to send the participants to a central or cluster location, the OWA MTs will need to travel to each of the ULBs to conduct in-person training. All the expenses associated with such travels undertaken by the MTs will be borne by the OWA. MTs will be expected to carry their own laptops.

  5. If the ULB nominees are traveling to a central location, the to and fro travel cost will be borne by the individual ULBs, while the stay and local commute within Bhubaneswar will be borne by the OWA.

  6. If the ULB nominees are traveling to a district/cluster location, all the costs (travel, stay and any other expenses) will be borne by the individual ULBs.

  7. Resource requirements (to be arranged by OWA) for central or cluster location:

  • Training venue/hall with computers and internet connectivity with a capacity of hosting tentatively 95-100 persons (central location).

  • Big screen TV.

  • Projector.

  • Refreshments and other basic amenities for trainers and trainees.

Roles and responsibilities

Capacity building and adoption post go-live

The process is set up with the ULBs to meet and discuss the challenges, issues and insights from experiencing the platform and field, and to share it across with fellow ULBs. It is conducted at regular intervals with the help of the eGov team and ULB nominated individuals. This call is utilised to resolve issues (L1) from and bridge the knowledge gaps, if any. L2 issues are immediately raised as JIRA tickets and assigned to the impel team for quick resolution. This weekly call for capacity building also acts as a clear communication channel directly with the team for addressing portal, knowledge, and policy level issues.

Adoption Metrics

Change management and review plan

Weekly monitoring and support: All the state officials involved in the rollout of SUJOG-FSSM are part of weekly mentoring/monitoring sessions, which act as a channel for the ULBs to discuss insights, on-ground challenges, and issues related to the platform to obtain quick resolution. This ensures sustained adoption, resulting in over 90% of incoming requests being recorded on the platform across ULBs.

Bi-weekly reviews with ULB representatives: The EOs and COs were involved in the bi-weekly calls, which is chaired by the additional secretary and engineer-in-chief, to discuss and identify gaps in FSSM service delivery and SUJOG-FSSM adoption. Additionally, identified issues, policy change requirements, and challenges facing ULB workers were also highlighted for immediate resolution.

Learnings and Recommendations

Learnings from the pivotal problems

The pivotal problems that were explored during the pilot phase are listed below:

eGov, in partnership with the Government of Odisha, abstracts the challenges and pivotal problems that the SUJOG-FSSM platform will address.

  1. Broken chain of custody from waste generation to safe disposal.

  2. Non-availability of verifiable, trusted data at various levels of aggregation to all actors.

  3. Absence of well-defined standards for sanitation.

  4. Stakeholder behaviour is often misaligned with safe sanitation practices.

Initial gaps in driving adoption

The initial gaps in driving adoption during the pilot phase are mentioned below:

  1. Infrastructure gaps across ULBs.

  2. Lack of regular monitoring and understanding the gaps in usage.

  3. Change in personnel handling the application.

  4. Gaps in refresher training to the ULB personnel.

Actions taken based on the learnings

The actions taken during the pilot phase and before the onset of phase-1 are listed in the below sections.

Pilot ULBs

  1. Letters for procuring the infrastructure across all ULBs and FSTPs.

  2. Regular monitoring of daily usage through the adoption tracker.

  3. In-person refresher training across all ULBs.

  4. A strong support system to resolve the issues, if any on a regular basis.

Phase-1 ULBs

  1. Monitoring the infrastructure procurement across all ULBs and FSTPs.

  2. Plan for hands-on-training to ULB SPOCs and employees who are going to use the application.

  3. Adoption monitoring at all levels and a support system to resolve issues, real-time.

Recommendations for process standardisation across the state based on the ongoing engagement and field visit:

For a seamless state-wide scale up and adoption by the ULB employees and citizens, it is important to standardise processes and policies in the service delivery process. Following are the key recommendations for standardisation and steps to be taken to implement the same:

  1. Allocating FSSM executives responsible for taking all desludging requests from the citizens: Within ULB, a single person should be made responsible for handling the FSSM requests coming from the ULBs own phone helpline/14420/walk-in citizens, and logging them into the SUJOG-FSSM platform and assigning them to desludging operators (DSOs). This person will be the designated FSSM Executive in the ULB. This person could be the sanitation dealing assistant (DA), or the single window operator or an ALF member as per the FSTP operations arrangement within the ULB. They should fulfill the following basic criteria:

- Have basic computer literacy.

- Work within the sanitation wing (FSSM) of the ULB.

- Have a sound understanding of the FSSM operations followed in the ULB.

  1. Enabling private operators use the SUJOG-FSSM: ULBs need to ensure that all the private operators are empaneled to the ULB, and mandatorily start logging the applications in the SUJOG-FSSM portal or inform the ULB FSSM executive for each application and trip as they are using the services of the FSTP. This will bring the private operators within the ambit of the FSSM transformation and provide an oversight to the ULB administration. It will ensure that ULBs will have some oversight on the quantum of requests serviced by private operators and check any potential mishandling of sludge. The requests serviced daily can be reconciled against the number of trips at the FSTP end. For this:

- ULB EOs to issue notices to all private DSOs operating within the ULB to comply with rollout requirements (data and training) and start using the SUJOG-FSSM platform to record the requests.

- ULBs to ensure that mandatory usage of the SUJOG-FSSM platform by private DSO gets included in the licensing terms either immediately or at the time of renewal of license as per the rules of the current contract.

  1. Standardising pricing of trips by cesspool vehicles: In phase-1 ULBs, there are certain ULBS where there are different pricing of trips by cesspool vehicles for multi-trips. For example, a ULB which has a 3,000 litre capacity of cesspool vehicle, the price of the first trip to an applicant’s location will be Rs 900 and for the second trip, it will be Rs 700. Besides, there are different pricing of the same volume of cesspool vehicles across ULBs. In case of urban-rural convergence, the pricing structure devised as of now is for panchayat areas within a certain radius (say 20 km) from the ULB boundary, and service charges include a base price plus fuel charge (say, base price is Rs 1,200 plus fuel charges @6 km per litre). Therefore, standardising the pricing of trips by cesspool vehicles will be explored.

  2. Collation of details regarding entities where there is zero pricing: There are certain entities (such as a ULB itself, community toilets, etc.) from which no fees are collected for septic tank/pit cleaning. The same is also applicable for slums in certain ULBs. Therefore, ULBs will have a list of entities where zero pricing is there to avail cesspool cleaning services.

  3. Streamlining and standardising the agreement between a private DSO and the ULB: Currently, there are three types of mode of operation of cesspool vehicles in ULBs that are “ULB Owned and ULB Operated”, “ULB Owned and Privately Operated” and “Privately Owned and Privately Operated”. However, in case of private DSO, there are scenarios that were explored during the phase-1 training session, which will be considered while designing/structuring the agreement of a private DSO with the ULB:

a. ULB Owned & Privately Operated:

i. Kashinagar Case:

Each trip amount is deposited by a private DSO daily at the ULB. At the end of month, a fixed amount (say Rs. 12,000) is given to the private DSO. (Cases may also arise where instead of a fixed amount, a trip-wise amount may be given to a private DSO daily or at the end of month).

ii. Khordha Case:

ULB & private agreement is done in which a private DSO pays a one-time amount (say Rs 5 lakh for 2 vehicles) to ULB for some years (say 7 years). During these 7 years, the manpower cost, and maintenance cost is taken care of by the private DSO, and it also keeps all the trip amounts with them.

b. Privately Owned & Privately Operated:

i. Angul Case:

Currently, the private DSO is taking the amount of all trips without giving any amount to the ULBs. But the ULBs are planning to send a letter to the private DSO to pay a certain amount to the ULB (at FSTP) for each trip that is being disposed of at an FSTP as the FSTP is a government property used by a private DSO.

User data encryption promotion
Encryption client library
https://www.getpostman.com/collections/15443fcb25c8aacd8897
https://www.getpostman.com/collections/15443fcb25c8aacd8897
https://www.getpostman.com/collections/15443fcb25c8aacd8897
https://www.getpostman.com/collections/15443fcb25c8aacd8897
https://www.getpostman.com/collections/15443fcb25c8aacd8897
https://www.getpostman.com/collections/15443fcb25c8aacd8897
https://www.getpostman.com/collections/15443fcb25c8aacd8897
https://www.getpostman.com/collections/15443fcb25c8aacd8897
https://www.getpostman.com/collections/15443fcb25c8aacd8897
https://www.getpostman.com/collections/15443fcb25c8aacd8897
https://www.getpostman.com/collections/15443fcb25c8aacd8897
aws configure --profile egov-workshop-account 

AWS Access Key ID []:<Your access key>
AWS Secret Access Key []:<Your secret key>
Default region name []: ap-south-1
Default output format []: text
[egov-test-account] 
aws_access_key_id=*********** 
aws_secret_access_key=****************************
git clone --branch release https://github.com/egovernments/iFix-DevOps.git
cd iFix-DevOps/infra-as-code/terraform


└── modules
    ├── db
    │   └── aws
    │       ├── main.tf
    │       ├── outputs.tf
    │       └── variables.tf
    ├── kubernetes
    │   └── aws
    │       ├── eks-cluster
    │       │   ├── main.tf
    │       │   ├── outputs.tf
    │       │   └── variables.tf
    │       ├── network
    │       │   ├── main.tf
    │       │   ├── outputs.tf
    │       │   └── variables.tf
    │       └── workers
    │           ├── main.tf
    │           ├── outputs.tf
    │           └── variables.tf
    └── storage
        └── aws
            ├── main.tf
            ├── outputs.tf
            └── variables.tf
provider "aws" {
  region = "ap-south-1"
}

#This is a bucket name that you can name as you wish
resource "aws_s3_bucket" "terraform_state" {
  bucket = "try-workshop-yourname" 

  versioning {
    enabled = true
  }

  lifecycle {
    prevent_destroy = true
  }
}

#This is a bucket name that you can name as you wish
resource "aws_dynamodb_table" "terraform_state_lock" {
  name           = "try-workshop-yourname"
  read_capacity  = 1
  write_capacity = 1
  hash_key       = "LockID"

  attribute {
    name = "LockID"
    type = "S"
  }
}
# master configs, terraform state helps to maintain the flow of the execution
terraform {
  backend "s3" {
    bucket = "try-workshop-yourname"
    key = "terraform"
    region = "ap-south-1"
  }
}

# Network Module
module "network" {
  source             = "../modules/kubernetes/aws/network"
  vpc_cidr_block     = "${var.vpc_cidr_block}"
  cluster_name       = "${var.cluster_name}"
  availability_zones = "${var.network_availability_zones}"
}

# PostGres DB
module "db" {
  source                        = "../modules/db/aws"
  subnet_ids                    = "${module.network.private_subnets}"
  vpc_security_group_ids        = ["${module.network.rds_db_sg_id}"]
  availability_zone             = "${element(var.availability_zones, 0)}"
  instance_class                = "db.t3.medium"
  engine_version                = "11.5"
  storage_type                  = "gp2"
  storage_gb                    = "100"
  backup_retention_days         = "7"
  administrator_login           = "egovdev"
  administrator_login_password  = "${var.db_password}"
  db_name                       = "${var.cluster_name}-db"
  environment                   = "${var.cluster_name}"
}

# **********  Uses with various access like Admin, Dev, Deploy
module "iam_user_deployer" {
  source  = "terraform-aws-modules/iam/aws//modules/iam-user"

  name          = "${var.cluster_name}-kube-deployer"
  force_destroy = true  
  create_iam_user_login_profile = false
  create_iam_access_key         = true

  # User "egovterraform" has uploaded his public key here - https://keybase.io/egovterraform/pgp_keys.asc
  pgp_key = "${var.iam_keybase_user}"
}

module "iam_user_admin" {
  source  = "terraform-aws-modules/iam/aws//modules/iam-user"

  name          = "${var.cluster_name}-kube-admin"
  force_destroy = true  
  create_iam_user_login_profile = false
  create_iam_access_key         = true

  # User "egovterraform" has uploaded his public key here - https://keybase.io/egovterraform/pgp_keys.asc
  pgp_key = "${var.iam_keybase_user}"
}

module "iam_user_user" {
  source  = "terraform-aws-modules/iam/aws//modules/iam-user"

  name          = "${var.cluster_name}-kube-user"
  force_destroy = true  
  create_iam_user_login_profile = false
  create_iam_access_key         = true

  # User "test" has uploaded his public key here - https://keybase.io/test/pgp_keys.asc
  pgp_key = "${var.iam_keybase_user}"
}



# ********** EKS Cluster (Control Plane) **********
data "aws_eks_cluster" "cluster" {
  name = "${module.eks.cluster_id}"
}

data "aws_eks_cluster_auth" "cluster" {
  name = "${module.eks.cluster_id}"
}
provider "kubernetes" {
  host                   = "${data.aws_eks_cluster.cluster.endpoint}"
  cluster_ca_certificate = "${base64decode(data.aws_eks_cluster.cluster.certificate_authority.0.data)}"
  token                  = "${data.aws_eks_cluster_auth.cluster.token}"
  load_config_file       = false
  version                = "~> 1.11"
}

module "eks" {
  source          = "terraform-aws-modules/eks/aws"
  cluster_name    = "${var.cluster_name}"
  cluster_version = "${var.kubernetes_version}"
  subnets         = "${concat(module.network.private_subnets, module.network.public_subnets)}"

  tags = "${
    map(
      "kubernetes.io/cluster/${var.cluster_name}", "owned",
      "KubernetesCluster", "${var.cluster_name}"
    )
  }"

  vpc_id = "${module.network.vpc_id}"

  # ********** Worker Nodes
  worker_groups_launch_template = [
    {
      name                    = "spot"
      subnets                 = "${concat(slice(module.network.private_subnets, 0, length(var.availability_zones)), slice(module.network.public_subnets, 0, length(var.availability_zones)))}"
      override_instance_types = "${var.override_instance_types}"
      asg_max_size            = 4
      asg_desired_capacity    = 4
      kubelet_extra_args      = "--node-labels=node.kubernetes.io/lifecycle=spot"
      additional_security_group_ids = ["${module.network.worker_nodes_sg_id}"]
      spot_allocation_strategy= "capacity-optimized"
      spot_instance_pools     = null
    },
  ]

  map_users    = [
    {
      userarn  = "${module.iam_user_deployer.this_iam_user_arn}"
      username = "${module.iam_user_deployer.this_iam_user_name}"
      groups   = ["system:masters"]
    },
    {
      userarn  = "${module.iam_user_admin.this_iam_user_arn}"
      username = "${module.iam_user_admin.this_iam_user_name}"
      groups   = ["global-readonly", "digit-user"]
    },
    {
      userarn  = "${module.iam_user_user.this_iam_user_arn}"
      username = "${module.iam_user_user.this_iam_user_name}"
      groups   = ["global-readonly"]
    },    
  ]
}

# ********** EBS Volumes for the statefulsets (PVCs)
module "es-master" {

  source = "../modules/storage/aws"
  storage_count = 3
  environment = "${var.cluster_name}"
  disk_prefix = "es-master"
  availability_zones = "${var.availability_zones}"
  storage_sku = "gp2"
  disk_size_gb = "2"

}
module "es-data-v1" {

  source = "../modules/storage/aws"
  storage_count = 3
  environment = "${var.cluster_name}"
  disk_prefix = "es-data-v1"
  availability_zones = "${var.availability_zones}"
  storage_sku = "gp2"
  disk_size_gb = "25"

}

module "zookeeper" {

  source = "../modules/storage/aws"
  storage_count = 3
  environment = "${var.cluster_name}"
  disk_prefix = "zookeeper"
  availability_zones = "${var.availability_zones}"
  storage_sku = "gp2"
  disk_size_gb = "2"

}

module "kafka" {

  source = "../modules/storage/aws"
  storage_count = 3
  environment = "${var.cluster_name}"
  disk_prefix = "kafka"
  availability_zones = "${var.availability_zones}"
  storage_sku = "gp2"
  disk_size_gb = "50"

}
├── iFix-dev
│   ├── main.tf 
│   ├── outputs.tf
│   ├── providers.tf
│   ├── remote-state
│   │   └── main.tf
│   └── variables.tf
## Add Cluster Name
variable "cluster_name" {
  default = "<Desired Cluster name>"  #eg: my-digit-eks
}

## Add vpc_cidr_block
variable "vpc_cidr_block" {
  default = "CIDR" 
}

# If you want prod grade N/W, you can define HA, DRS with multi zone
variable "network_availability_zones" {  
  default = ["ap-south-1b", "ap-south-1a"]
}

# Which zone, it matters
variable "availability_zones" {
  default = ["ap-south-1b"]
}

variable "kubernetes_version" {
  default = "1.18"
}

# instance type for your worker nodes like r5a.large is 8 vCPU and 16GB RAM
variable "instance_type" {
  default = "r5a.large"
}

# spot instance configuration
variable "override_instance_types" {
  default = ["r5a.large", "r5ad.large", "r5d.large", "t3a.xlarge"] 
}

# number of machines as per estimate
variable "number_of_worker_nodes" {
  default = "3"
}

##Add ssh key in case you want to ssh to nodes
variable "ssh_key_name" {
  default = "ssh key name"
}

# terraform users ssh public key, you need to one for you, refer below to create yours
variable "iam_keybase_user" {
  default = "keybase:egovterraform"
}

# will be prompted to provide during the execution
variable "db_password" {}
cd DIGIT-DevOps/infra-as-code/terraform/sample-aws/remote-state
terraform init
terraform plan
terraform apply


cd DIGIT-DevOps/infra-as-code/terraform/sample-aws
terraform init
terraform plan
terraform apply
aws sts get-caller-identity

# Run the below command and give the respective region-code and the cluster name
aws eks --region <region-code> update-kubeconfig --name <cluster_name>
kubectl config use-context <your cluster name>

kubectl get nodes

NAME                                             STATUS AGE   VERSION               OS-Image           
ip-192-168-xx-1.ap-south-1.compute.internal   Ready  45d   v1.15.10-eks-bac369   Amazon Linux 2   
ip-192-168-xx-2.ap-south-1.compute.internal   Ready  45d   v1.15.10-eks-bac369   Amazon Linux 2   
ip-192-168-xx-3.ap-south-1.compute.internal   Ready  45d   v1.15.10-eks-bac369   Amazon Linux 2   
ip-192-168-xx-4.ap-south-1.compute.internal   Ready  45d   v1.15.10-eks-bac369   Amazon Linux 2
Amazon Elastic Kubernetes Service (EKS)
terraform
Helm
https://www.youtube.com/watch?v=SsUnPWp5ilc
https://youtu.be/h970ZBgKINg
AWS account
what is offered as free
Kubectl
Helm
Kubernetes manifests
Terraform
Install AWS CLI
AWS IAM Authenticator
AWS IAM User
Infra-as-code
doc
DIGIT-DevOps GitHub repo
main.tf
main.tf
variables.tf
https://keybase.io/
create your PGP key
keybase
https://keybase.io/egovterraform/pgp_keys.asc
portal
https://keybase.io/
create your own PGP key
keybase
https://keybase.io/egovterraform/pgp_keys.asc
portal
get the kubeconfig from EKS

Pilot ULBs

PHASE-1 ULBs

PHASE-2 ULBs

(upcoming)

PHASE-3 ULBs

3

33

33

46

Entity

Roles and responsibilities

State FSSM PMU+ eGov team

  • Train to all the OWA master trainers.

  • Provide training material/assets in a soft format.

  • Post training query resolution and handholding for MTs.

  • Create of a training plan and calendar based on project schedule.

  • Attend sessions by master trainers and field trainers as observers whenever possible.

  • Monitor the effectiveness of the training and providing inputs for improvement.

  • Conduct weekly reviews with MTs to track effectiveness of the training and software adoption.

OWA

  • Conduct training for all the ULB FSSM executives and TRPs at a central location (Bhubaneswar), or cluster locations, or by visiting each ULB.

  • Collect post training feedback from the ULBs.

  • Refresher training for the ULB users post launch by visiting each of the ULBs or via on-line mode.

  • Adoption monitoring: To ensure effectiveness of the training by looking at platform usage within the ULBs and reporting the status to the FSSM-PMU on a regular basis.

  • Participating in weekly reviews with eGov FSSM-PMU team to track effectiveness of the training and software adoption.

  • Query resolution and hand-holding for the field (ULB) users regarding the usage of the software application.

  • Arrange training infrastructure in Bhubaneswar and at a cluster level.

  • Make arrangements for the travel and accommodation of the MTs.

ULBs

  • Nominate participants from the ULBs who would be trained by the OWA MTs.

  • Arrange travel and accommodation for ULB participants traveling to Bhubaneswar.

  • Provide training infrastructure for training which is happening within ULBs.

Adoption goals

Metrics

Dependency

Real-time recording of the requests

95%

1. Government holidays and Sundays: Usually no recording from the ULB side - Back entry.

2. Medical leave or absence of ULB or FSTP personnel.

3. Change of the ULB or FSTP personnel.

Recording all the requests received from the citizens

95%

Functional status of the cesspool vehicles and FSTP.

Recording the trips reaching the FSTPs every day for both registered and un-registered vehicles

95%

TRPs on holidays or leaves.

Requests are recorded from all the property types: Institutional, commercial and residential

100%

Coverage of properties.

Volume of sludge from HH to volume of sludge disposed at FSTP

100%

Currently captured as volume of the vehicle.

Recording all the requests received for all property types and sub-types

Number of tickets with zero pricing = increase in ~50 tickets per week across 36 ULBs (30% increase)

NA

UI-based management of vendor, driver, vehicle data

Reduction in the number of tickets to impel for adding/updating vendor/driver/vehicle data

If a vehicle of new capacity in added, the pricing has to be added in the backend from impel.

URC - Inclusiveness in service delivery

Increase in the number of administrative units getting access to services

URC

Rise in the number of tickets - 10 per week across ULBs from rural areas.

TQM

Percentage of plants with output quality as per benchmarks.

State to use and adopt SUJOG as a single platform for TQM as well.

Type of meeting

Mode

Duration

Agenda

Output

Chaired by

Attended by

Daily standup review (Internal)

Online

30 mins

Daily progress monitoring and issue resolution.

JIRA Tickets status

Abhisek

Program, impel, product

Engg (Need basis), eGov CC’s (Interns)

Weekly status review (internal) post go live

Online

60 min

Status review

Publishing the weekly status report

Aveek / Shrija / Abhisek

Programme team

Review of bottlenecks. Seeking executive-level intervention.

Weekly status review (External)

Online

60 min

Status review with ULBs.

Publishing the weekly status report

eGov + OWSSB + ULB executives and TRPs

Programme, impel, ULB SPOCs, eGov CC’s (interns), state TSU

Review of bottlenecks. Seeking executive-level intervention.

Bi-weekly review

Online

60 min

Status check on the progress.

Executive summary and action items to be closed within specified time

HUDD + OWSSB + Eos/COs

Programme, HUDD, OWSSB, ULB EOs, DUDA reps

(External)

Leadership interventions.

Risk assessment and mitigation.

Weekly call to review the data submitted by DUDA officials

Online

60 min

Review and correction of the data sheets submitted by the DUDA officials.

Final data sheet

EIC/Shrija/Abhisek

eGov programme team, OWSSB and DUDA officials

State handover - SUJOG integration (Weekly tracking)

Online

60 min

A gradual handover of the module to the state for integrating it with SUJOG.

Tracker

Programme team

Sushant Mishra, PwC team and eGov programme team

State handover (Weekly tracking)

Online

45 min

Gradual handover of the module to the state to drive adoption and help in issue resolution, identifying the blockers, etc.

-

Programme team

State-nominated individuals, OWSSB, eGov programme team

FSM Vendor Registry

Details for registering new vendors

Overview

The vendor registry is a system that enables urban local body (ULB) employees to create and search a vendor, that is, the desludging operator (DSO) and driver entities with appropriate vehicle entities for the FSM application. This document contains the details about how to set up the vendor and describe the functionalities provided.

Pre-requisites

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 a vendor-persister config path added in it.

  • PSQL server is running and database is created to store FSM application data.

  • Following services should be up and running:

- egov-mdms-service

- egov-user-service

- boundary-service

- vehicle-service

Key Functionalities

EXISTING

  1. Added payment payment preference and agency attributes for DSO.

  2. Added gender attribute in the create and update APIs for vendor.

  3. Updated the vendor search API to add vehicleCapacity in the search parameter to search all vendors matching the vehicle capacity specified in the search parameter.

  4. Introduced the vendor tab.

  5. Option to add/remove/update vendors individually.

  6. User can add vehicle and driver.

  7. Search for the list of all vehicles not associated with any vendors.

  8. Users can enable or disable the vendor.

  9. Introduced the driver tab.

  10. Option to add/remove/update driver individually.

  11. User should be able to create/update/enable/disable a driver from the driver screen.

  12. Functionality to add/remove directly driver to vendor.

ENHANCEMENT

Part Search :

FSM Registry Vendor Tab

The vendor tab now supports part search by vendor name. This means that users can enter a partial vendor name and retrieve all relevant results that contain that specific portion.

For instance, if the vendor name is "Shambala corporation", users can search for any part of the vendor name, such as "sham" or "Shambala", and retrieve all relevant results which contain that specific portion.

FSM Registry Driver Tab

The driver tab now supports part search by driver name. This means that users can enter a partial driver name and retrieve all relevant results which contain that specific portion.

For instance, if the driver name is "Rajesh Ranjan", users can search for any part of the driver name, such as "raj" or "ranjan", and retrieve all relevant results which contain that specific portion.

Updating Registry Information

In the vendor tab, the admin has the ability to update certain vendor information, such as Gender, Mobile number, and Locality/Mohalla.

In the driver tab, the admin has the ability to update certain driver information, such as Gender, Driver, and License Number.

Deployment Details

  1. Deploy the latest version of the vendor.

  2. Add vendor-persister.yml file in the config folder in git and add that path in persister (the file path is to be added in the environment yaml file in param called persist-yml-path), and restart egov-persister-service.

  3. Integrate the following below changes in vendor-persister.yml SAN-1063 and 1064 (SAN-1158 and SAN-1157) - Persister file - Vendor … · egovernments/configs@95dd26f.

  4. SM-801 Not able to create vendor in UAT using api by madan-kumar-eGov · Pull Request #2237 · egovernments/configs.

Configuration Details

SAN-1047 - Added the query map for update vehicle and vendor topics. · egovernments/configs@56da639

SAN-1047: Added the vendor agency and payment preference column in th… · egovernments/configs@1659e4f

SAN-1047: Added new columns for vendor vehicle and driver status · egovernments/configs@2337e21

Added the audit logging for vehicle and vendor · egovernments/configs@482185f

Added new changes for Driver create and update & vendor -vehicle driv… · egovernments/configs@9ee374e

Update the persister for driver updates · egovernments/configs@04368c7

change the VENDOR_ID to VECHILE_ID for changing the vehicle status fo… · egovernments/configs@8a6ec56

updated the column in eg_vendor_driver table in update vendor topic · egovernments/configs@71b5297

changes reversed · egovernments/configs@5b86889

unlinking ofdriver from vendor · egovernments/configs@a36bb6e

SM-766 vendor not getting update in driver Tab · egovernments/configs@ad83851

SM-766 revert back the changes · egovernments/configs@e95bbeb

SM-766 Not able to change the vendor in driver details. · egovernments/configs@6f42ca2

SM-781 Not able to add vehicle in vendor tab · egovernments/configs@2b79b92

MDMS Configuration

SAN-1049: Added role actions for Driver APIs. · egovernments/egov-mdms-data@fb8e530

SAN-1063: Added the permissiosn for Vehicle trip creation · egovernments/egov-mdms-data@632ee94

SAN-1047: Added role action mapping for vendor and vehicle update · egovernments/egov-mdms-data@3e608a8

Business Service / Workflow Configuration

NA

Actions & Role Action Mapping

After adding actions and role action mappings, restart the egov-mdms-service

Actions

{
      "id": {{PLACEHOLDER1}},
      "name": "Create Vendor/DSO",
      "url": "/vendor/v1/_create",
      "displayName": "Create Vehicle",
      "orderNumber": 0,
      "enabled": false,
      "serviceCode": "vendor",
      "code": "null",
      "path": ""
    },
    {
      "id": {{PLACEHOLDER2}},
      "name": "Search Vendor/DSO",
      "url": "/vendor/v1/_search",
      "displayName": "Search  Vendor",
      "orderNumber": 1,
      "enabled": false,
      "serviceCode": "vendor",
      "code": "null",
      "path": ""
    },
{
  "id": {{PLACEHOLDER3}},
  "name": "Vendor Driver Create",
  "url": "/Vendor/driver/v1/_create",
  "displayName": "Vendor Driver Create",
  "orderNumber": 1,
  "parentModule": "",
  "enabled": false,
  "serviceCode": "vendor",
  "code": "null",
  "path": ""
},
{
  "id": {{PLACEHOLDER4}},
  "name": "Vendor Driver Update",
  "url": "/Vendor/driver/v1/_update",
  "displayName": "Vendor Driver Update",
  "orderNumber": 1,
  "parentModule": "",
  "enabled": false,
  "serviceCode": "vendor",
  "code": "null",
  "path": ""
},
{
  "id": {{PLACEHOLDER5}},
  "name": "Vendor Driver Search",
  "url": "/Vendor/driver/v1/_search",
  "displayName": "Vendor Driver Search",
  "orderNumber": 1,
  "parentModule": "",
  "enabled": false,
  "serviceCode": "vendor",
  "code": "null",
  "path": ""
},
{
  "id": {{PLACEHOLDER6}},
  "name": "Update Vendor/DSO",
  "url": "/vendor/v1/_update",
  "displayName": "Update Vendor",
  "orderNumber": 0,
  "enabled": false,
  "serviceCode": "vendor",
  "code": "null",
  "path": ""
}

Role Action Mapping

[
  {
    "rolecode": "FSM_ADMIN",
    "actionid": "{{PLACEHOLDER1}}",
    "actioncode": "",
    "tenantId": "pb"
  },
  {
    "rolecode": "FSM_ADMIN",
    "actionid": "{{PLACEHOLDER2}}",
    "actioncode": "",
    "tenantId": "pb"
  },
  {
    "rolecode": "FSM_DSO",
    "actionid": "{{PLACEHOLDER2}}",
    "actioncode": "",
    "tenantId": "pb"
  },
  {
    "rolecode": "FSM_EDITOR_EMP",
    "actionid": "{{PLACEHOLDER2}}",
    "actioncode": "",
    "tenantId": "pb"
  },
  {
    "rolecode": "FSM_VIEW_EMP",
    "actionid": "{{PLACEHOLDER2}}",
    "actioncode": "",
    "tenantId": "pb"
  },
  {
    "rolecode": "FSM_EMP_FSTPO",
    "actionid": "{{PLACEHOLDER2}}",
    "actioncode": "",
    "tenantId": "pb"
  },
  {
    "rolecode": "CITIZEN",
    "actionid": "{{PLACEHOLDER2}}",
    "actioncode": "",
    "tenantId": "pb"
  }
]
{
     "rolecode": "FSM_ADMIN",
     "actionid": {{PLACEHOLDER3}},
     "actioncode": "",
     "tenantId": "pb"
},
{
     "rolecode": "FSM_CREATOR_EMP",
     "actionid": {{PLACEHOLDER3}},
     "actioncode": "",
     "tenantId": "pb"
},
{
     "rolecode": "FSM_DSO",
     "actionid": {{PLACEHOLDER3}},
     "actioncode": "",
     "tenantId": "pb"
},
{
     "rolecode": "FSM_EDITOR_EMP",
     "actionid": {{PLACEHOLDER3}},
     "actioncode": "",
     "tenantId": "pb"
},
{
     "rolecode": "FSM_VIEW_EMP",
     "actionid": {{PLACEHOLDER3}},
     "actioncode": "",
     "tenantId": "pb"
},
{
     "rolecode": "FSM_EMP_FSTPO",
     "actionid": {{PLACEHOLDER3}},
     "actioncode": "",
     "tenantId": "pb"
},
{
     "rolecode": "FSM_ADMIN",
     "actionid": {{PLACEHOLDER4}},
     "actioncode": "",
     "tenantId": "pb"
},
{
     "rolecode": "FSM_CREATOR_EMP",
     "actionid": {{PLACEHOLDER4}},
     "actioncode": "",
     "tenantId": "pb"
},
{
     "rolecode": "FSM_DSO",
     "actionid": {{PLACEHOLDER4}},
     "actioncode": "",
     "tenantId": "pb"
},
{
     "rolecode": "FSM_EDITOR_EMP",
     "actionid": {{PLACEHOLDER4}},
     "actioncode": "",
     "tenantId": "pb"
},
{
     "rolecode": "FSM_VIEW_EMP",
     "actionid": {{PLACEHOLDER4}},
     "actioncode": "",
     "tenantId": "pb"
},
{
     "rolecode": "FSM_EMP_FSTPO",
     "actionid": {{PLACEHOLDER4}},
     "actioncode": "",
     "tenantId": "pb"
},
{
     "rolecode": "FSM_ADMIN",
     "actionid": {{PLACEHOLDER5}},
     "actioncode": "",
     "tenantId": "pb"
},
{
     "rolecode": "FSM_CREATOR_EMP",
     "actionid": {{PLACEHOLDER5}},
     "actioncode": "",
     "tenantId": "pb"
},
{
     "rolecode": "FSM_DSO",
     "actionid": {{PLACEHOLDER5}},
     "actioncode": "",
     "tenantId": "pb"
},
{
     "rolecode": "FSM_EDITOR_EMP",
     "actionid": {{PLACEHOLDER5}},
     "actioncode": "",
     "tenantId": "pb"
},
{
     "rolecode": "FSM_VIEW_EMP",
     "actionid": {{PLACEHOLDER5}},
     "actioncode": "",
     "tenantId": "pb"
},
{
     "rolecode": "FSM_EMP_FSTPO",
     "actionid": {{PLACEHOLDER5}},
     "actioncode": "",
     "tenantId": "pb"
},
{
     "rolecode": "FSM_ADMIN",
     "actionid": {{PLACEHOLDER6}},
     "actioncode": "",
     "tenantId": "pb"
}

Infra Ops Configuration

Configurations that we can manage through values.yml vehicle in infra-ops repo are listed below. values.yml for the vehicle is available below.

Description

Name in values.yml

Current value

Kafka Consumer Group

SPRING_KAFKA_CONSUMER_GROUP_ID

egov-vendor-services

Kafka topic to which service push data to save new vendor

PERSISTER_SAVE_VENDOR_TOPIC

save-vendor-application

MDMS service host

EGOV_MDMS_HOST

egov-mdms-service from egov-service-host

Vehicle service host

EGOV_VEHICLE_HOST

vehicle from egov-service-host

User service host

EGOV_USER_HOST

egov-user-service from egov-service-host

Location service Host

EGOV_LOCATION_HOST

egov-location from egov-service-host

Configurations sample in Values.yml

# Common Labels
labels:
  app: "vendor"
  group: "rainmaker"


# Ingress Configs
ingress:
  enabled: true
  zuul: true
  context: "vendor"


# Init Containers Configs
initContainers:
  dbMigration:
    enabled: true
    schemaTable: "vendor_schema"
    image:
      repository: "vendor-db"


# Container Configs
image:
  repository: "vendor"
replicas: "1"
healthChecks:
  enabled: true
  livenessProbePath: "/vendor/health"
  readinessProbePath: "/vendor/health"
appType: "java-spring"
tracing-enabled: true
heap: "-Xmx256m -Xms256m"
java-args: "-Dspring.profiles.active=monitoring"


# Additional Container Envs
env: |
  - name: EGOV_VEHICLE_HOST
    valueFrom:
      configMapKeyRef:
        name: egov-service-host
        key: vehicle
  - name: EGOV_MDMS_HOST
    valueFrom:
      configMapKeyRef:
        name: egov-service-host
        key: egov-mdms-service
  - name: EGOV_USER_HOST
    valueFrom:
      configMapKeyRef:
        name: egov-service-host
        key: egov-user
  - name: EGOV_LOCATION_HOST
    valueFrom:
      configMapKeyRef:
        name: egov-service-host
        key: egov-location
  - name: EGOV_HRMS_HOST
    valueFrom:
      configMapKeyRef:
        name: egov-service-host
        key: egov-hrms
  - name: SPRING_KAFKA_CONSUMER_GROUP_ID
    value: egov-vendor-services
  - name: PERSISTER_SAVE_VENDOR_TOPIC
    value: save-vendor-application
  - name: PERSISTER_UPDATE_VENDOR_TOPIC
    value: update-vendor-application
  - name: SPRING_KAFKA_PRODUCER_KEY_SERIALIZER
    value: org.apache.kafka.common.serialization.StringSerializer
  - name: SPRING_KAFKA_PRODUCER_VALUE_SERIALIZER
    value: org.springframework.kafka.support.serializer.JsonSerializer
  - name: JAVA_OPTS
    value: {{ index .Values "heap" | quote }}
  - name: JAVA_ARGS
    value: {{ index .Values "java-args" | quote }}
  - name: SERVER_PORT
    value: "8080"
  - name: SECURITY_BASIC_ENABLED
    value: "false"  
  - name: MANAGEMENT_SECURITY_ENABLED
    value: "false"
  {{- if index .Values "tracing-enabled" }}
  - name: TRACER_OPENTRACING_ENABLED
    value: "true" 
  {{- end }}

Data Setup

The DSO for the FSM system is a vendor. For every city/ULB, a DSO should be created with the representative details as owner, associated vehicles and drivers.

Sample Curl

curl 'https://dev.digit.org/vendor/driver/v1/_update?tenantId=pb.amritsar' \
  -H 'authority: dev.digit.org' \
  -H 'accept: application/json, text/plain, */*' \
  -H 'accept-language: en-GB,en-US;q=0.9,en;q=0.8' \
  -H 'content-type: application/json;charset=UTF-8' \
  -H 'cookie: _ga=GA1.2.1852108775.1653914860; intercom-id-xp1951jv=17aa7431-3dc0-4524-9956-a22bb67a637f; __cuid=858e6f9f233c4b2c804d3f81109b48ac; amp_fef1e8=7faa94f4-6926-4f98-ac07-be2414f977c6R...1gkkb64lb.1gkkb6kvh.7p.a.83' \
  -H 'origin: https://dev.digit.org' \
  -H 'referer: https://dev.digit.org/digit-ui/employee/fsm/registry/modify-driver/b967d3ab-4ce4-41eb-931e-343734a673a0' \
  -H 'sec-ch-ua: "Not?A_Brand";v="8", "Chromium";v="108", "Google Chrome";v="108"' \
  -H 'sec-ch-ua-mobile: ?0' \
  -H 'sec-ch-ua-platform: "Linux"' \
  -H 'sec-fetch-dest: empty' \
  -H 'sec-fetch-mode: cors' \
  -H 'sec-fetch-site: same-origin' \
  -H 'user-agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Safari/537.36' \
  --data-raw '{"driver":{"id":"b967d3ab-4ce4-41eb-931e-343734a673a0","tenantId":"pb.amritsar","name":"Vinot","owner":{"id":23597,"uuid":"1eaeae8e-e2cb-4736-b0da-2469441c7136","userName":"9876543210","password":null,"salutation":null,"name":"Vinot","gender":"MALE","mobileNumber":"9876543210","emailId":"[email protected]","altContactNumber":null,"pan":"","aadhaarNumber":null,"permanentAddress":"xxccc","permanentCity":null,"permanentPinCode":null,"correspondenceCity":null,"correspondencePinCode":null,"correspondenceAddress":"xxccc","active":true,"dob":1575504000000,"pwdExpiryDate":1542493260000,"locale":null,"type":"CITIZEN","signature":null,"accountLocked":false,"roles":[{"id":null,"name":"Citizen","code":"CITIZEN","tenantId":"pb"},{"id":null,"name":"FSM Desluding Operator","code":"FSM_DSO","tenantId":"pb"},{"id":null,"name":"FSM Driver","code":"FSM_DRIVER","tenantId":"pb"}],"fatherOrHusbandName":null,"relationship":"OTHER","bloodGroup":null,"identificationMark":null,"photo":null,"createdBy":"23299","createdDate":1533648094000,"lastModifiedBy":"28452","lastModifiedDate":1655290352000,"otpReference":null,"tenantId":"pb"},"ownerId":"1eaeae8e-e2cb-4736-b0da-2469441c7136","description":null,"licenseNumber":"34567899990","status":"ACTIVE","auditDetails":{"createdBy":"5674253d-9c2a-4d47-88ae-450f3fbbcad2","lastModifiedBy":"5674253d-9c2a-4d47-88ae-450f3fbbcad2","createdTime":1671536878567,"lastModifiedTime":1671536878567},"vendorDriverStatus":null},"RequestInfo":{"apiId":"Rainmaker","authToken":"5aac2f5f-086b-4770-a832-023641a62650","userInfo":{"id":28452,"uuid":"5674253d-9c2a-4d47-88ae-450f3fbbcad2","userName":"BPAFieldInspector","name":"lakshmi","mobileNumber":"8656565343","emailId":null,"locale":null,"type":"EMPLOYEE","roles":[{"name":"FSM Administrator","code":"FSM_ADMIN","tenantId":"pb.amritsar"},{"name":"BPA Services Approver","code":"BPA_APPROVER","tenantId":"pb.amritsar"},{"name":"Employee","code":"EMPLOYEE","tenantId":"pb.amritsar"},{"name":"FSM Employee Report Viewer","code":"FSM_REPORT_VIEWER","tenantId":"pb.amritsar"},{"name":"BPA Services verifier","code":"BPA_VERIFIER","tenantId":"pb.amritsar"},{"name":"BPA Field Inspector","code":"BPA_FIELD_INSPECTOR","tenantId":"pb.amritsar"},{"name":"BPAREG doc verifier","code":"BPAREG_DOC_VERIFIER","tenantId":"pb.amritsar"}],"active":true,"tenantId":"pb.amritsar","permanentCity":null},"msgId":"1671537564062|en_IN","plainAccessRequest":{}}}' \
  --compressed

Integration

Integration Scope

Any system or DIGIT module can be integrated with the vendor service. It helps to manage the vendor with the vehicles, drivers, and owner for representatives, and login for the representative/owner to login into the system to carry our role-specific operations.

Integration Benefits

  • Validation of DSO/vendor availability.

  • Fetch the vehicle assigned to the DSO.

  • Fetch the drivers assigned to the DSO.

Steps to Integration

  • FSM to call vendor/v1/_search to fetch the DSOs.

  • FSM can call vendor/v1/_search to fetch the DSO’s and the respective vehicles and drivers.

Interaction Diagrams

Reference Docs

Doc Links

Workflow Technical Document

User technical document

MDMS technical document

NEEDS TO BE UPDATED

IDGen technical document

NEEDS TO BE UPDATED

Localisation technical document

NEEDS TO BE UPDATED

Persister technical document

NEEDS TO BE UPDATED

SMS notification technical document

NEEDS TO BE UPDATED

API contract

Postman scripts

API List

Title

Link

/vendor/v1/_create

/vendor/v1/_search

/vendor/v1/_plainsearch

/vendor/v1/_update

/vendor/driver/v1/_create

/vendor/driver/v1/_update

/vendor/driver/v1/_search

User Interface Design

The user interface (UI) design is broken up into the following sections:

  1. Login

  2. Raise a Desludging Request

  3. View Applications

  4. Accept Applications

  5. Payments

  6. Assign Desludging Operator

  7. Assign Vehicle

  8. Complete Request

  9. Rate Services

  10. Manage Vendor, Driver and Vehicle Details

1. Login

Citizen Login

Find the mock-ups below:

Language Selection

When the user opens the application, it first asks them to select the language. The selected language is highlighted in orange color. Once the user selects a language, he/she must click on the ‘Continue’ button which opens the login page.

Location Selection

Users are redirected to this screen once they select the preferred language in the previous screen. The city field will be a list with radio buttons based on the tenants that are configured in the instance, and the selected radio button is highlighted in orange. The selection of the city will determine the urban local body (ULB) where the application request is raised.

Once the user selects a location and clicks on continue, the user is redirected to the following screen:

The mobile number entered in the application is for all communication purposes. All SMS communication will be sent to the user on the entered number. A user can also access the history of all past and active transactions using this number. The next button will only be deactivated and will be highlighted once the user has entered a valid number. An error message will be displayed if the number is not 10 digits, or alphabets/special characters are entered.

On clicking ‘Next’, an OTP will be sent to the user, and the user will be redirected to the following screen:

The screen will prompt the user to enter the OTP sent to the registered mobile number. A counter will be displayed on the screen with a countdown on the number of seconds pending post which the OTP has be re-quested. After 30 seconds, a resend button will be visible to the user. The next button will only be deactivated and will be highlighted once the user has entered an OTP. On clicking ‘Next’, the user will be redirected to the FSM landing page. On entering the incorrect OTP, the user will see an error message that says “Invalid OTP”.

Employee Login

Language Selection

When the user opens the application, it asks them to first select the language. The selected language is highlighted in orange color. Once the user selects a language, he/she must click on the ‘Continue’ button which opens the login page.

Login

The user will be provided with a unique system-generated ID and password manually for login.

For an incorrect password, it should show the message “incorrect password” below the password field. If an existing user does not remember his/her password, they must click on “Forgot Password”. This will open a pop-up asking the user to contact the administrator. The ‘OK’ button will collapse the pop-up.

The city field is a dropdown based on the tenets created in the instance. Once all fields are filled, the user can click on ‘Continue’. If any field is not filled, the user will be prompted to fill all fields.

2. Raise a Desludging Request

Citizen Interface

A landing page is available to a citizen on login.

Applying for a Desludging Request

The citizen can apply for desludging requests by clicking on “Apply for Emptying Septic Tank/Pit”. This will redirect the user to the service request page.

The user is prompted to enter the “No. of Trips” and the “Vehicle Capacity”. If the user knows the details, he/she can enter the details and click on ‘Next’. If not, the user also has the option to “Skip and Continue”.

Once the user clicks on ‘Next’, the user is redirected to “Choose Property Type”. A workflow on the top will show the user in which step of the request form he/she is. The radio button for the selected property type will be highlighted with orange. The next button will only be deactivated and will be highlighted once the user has selected a property type.

Based on the property type selected, an information box is displayed to the user informing them about the approximate cost of desludging. On clicking next, the user is prompted to “Choose Property Sub-Type”:

The radio button for the selected property type will be highlighted in orange. The next button will only be deactivated and will be highlighted once the user has selected a property type.

The user is prompted to select the pincode for the property location using the map or search a location using the search bar. The user can also drag the point on the map to the selected location. If the user knows the pin location, he/she can enter the details and click on ‘Next’. If not, the user also has the option to “Skip and Continue”. If the pin location is not selected, the user is redirected to enter the pincode.

The user can enter a 7-digit pincode. If any alphabets/special characters are entered, the user will be prompted with an invalid pincode error. If the user knows the pincode, he/she can enter the details and click on ‘Next’. If not, the user also has the option to “Skip and Continue”.

After this, the user will be redirected to the property address page and he/she will have to select a city and a mohalla. Both of these are dropdowns. The city dropdown is populated based on the tenants created in the system. The list of localities/mohallas will be from the MDMS. The next button will be deactivated and will be highlighted once the user has filled in the details. Once a property address is provided, the user is asked to select whether the property is a slum.

The radio button for the selected option will be highlighted in orange. The next button will only be deactivated and will be highlighted once the user has selected an option. If yes is selected, the user will be redirected to enter the slum name.

The slum name can be selected from a dropdown. The next button will only be deactivated and will be highlighted once the user has selected a slum name. On clicking ‘Next’, the user is redirected to the property address screen.

After this, the user will be redirected to the property address page where he/she will have to enter the “Street Name” and “Door/House No”. The ‘Next’ button will be deactivated and will be highlighted once the user has filled in the details. Once a property address is provided, the user is asked to provide a landmark.

The landmark can be entered by typing in the text box. If the user knows the landmark, he/she can enter the details and click on ‘Next’. If not, the user also has the option to “Skip and Continue”.

The user will be prompted to “Choose Pit type”. The radio button for the selected option will be highlighted in orange. If the user knows the pit type, he/she can enter the details and click on ‘Next’. If not, the user also has the option to “Skip and Continue”.

The user will be prompted to “Upload Pit Photos” by clicking on the camera icon. Once the button is clicked on, the user can choose the camera or select a photo from the gallery. If the user has the photo, he/she can upload the photo and click on ‘Next’. If not, the user also has the option to “Skip and Continue”.

The user will be asked to select gender. The radio button for the selected option will be highlighted in orange. If the user wants to declare their gender, the user can select from Male/Female/Transgender/Others, and click on ‘Next’. If not, the user also has the option to “Skip and Continue”.

The user is redirected to the “Payment Details” page. If an advance has been configured in the backend by the ULB, the advance amount is displayed on the screen. The user can enter the advance amount. If an amount below the advance amount is entered, then an error is displayed. To confirm, the user can click on ‘Next’. The user is then prompted to “Check the Answers”.

A change option is displayed beside each answer. In case the user wants to edit any details, the user can click on the change button and the user will be redirected to that part of the workflow. If not, the user can click on ‘Submit’.

The user is displayed a confirmation message for application submission along with an application number. A download button can be used to download the application receipt as displayed below. The user can also go back home by clicking on the “Go back to home page” button.

Employee Interface

A landing page is available to the ULB employee on login.

Applying for a Desludging Request

The employee can apply for desludging requests on behalf of the citizen by clicking on “New Desludging Request”. This will redirect the user to a form.

The user is prompted to enter the mandatory and non mandatory fields. The “Amount per Trip”, “Total Amount” and “Advance Collection” fields are empty, and will be autopopulated once the “Property Type, “Property Sub-type”, “No. of Trips” and “Vehicle Capacity” are filled.

The following validations will be present in the page:

  1. Mobile number to be 10 digits and cannot be alphanumeric or contain special characters.

  2. Advance amount edited cannot be greater than total amount or lesser than minimum amount.

The submit button is greyed out and will only show as active when all mandatory fields are filled.

Once the user submits the form, the user is redirected to a confirmation page. The confirmation page will display a unique application number. A download option to download the application receipts displayed below is also available. The user can go back to the landing page using the “Go Back to Home” button.

3. View Applications

Citizen Interface

A citizen can view his/her applications by redirecting to “My Applications” from their landing page.

The “My Applications” page lists down all the ongoing applications and will display the Application No., Service Category and Application Status. A view button will be made available along with each application. Once the user clicks on ‘View’, they are redirected to the following page:

The user can view all details of the application on the screen. There is an option to download the application receipt and payment receipts using the Download button.

The application timeline below the application shows the history of the application along with details of the date when the workflow step was completed. If the application is in the “Pending for Payment”, the same will be displayed and a corresponding link will be displayed in the “Application Timeline”.

Similarly, if the application is in the “Pending Citizen Feedback” stage, the same will be displayed and a corresponding link will be displayed in the “Application Timeline”.

Employee Interface

To view the applications, an employee can navigate to the inbox from the Landing page. The inbox shows a list of all active applications along with their SLAs.

The user can search for an active application using “Application No.” and “Mobile No.” and click on search. This will return the application with the corresponding “Application Number” or the list of applications with the corresponding mobile number. The user can further filter applications based on the criteria on the left hand side, that is, Locality or Status.

To view Past Applications, the user can navigate to Search Applications. Here, users can search for both Active and past applications with the following fields: Application Number, Mobile Number, Status and Locality. On clicking on an application number, the user is redirected to the Application details page.

The user can view all details of the application on the screen. The application timeline below the application shows the history of the application along with details of the date when the workflow step was completed.

4. Accept Applications

The ULB employee can accept and update application details when a citizen has raised a request or rejected it.

This can be done by clicking on the “Update Application” button. Details such as locality, number of trips and capacity will be displayed. Clicking on “Update application” will update the status of the application as “Pending for Payment”.

Clicking on “Reject Application’ will reject the application and the user will be prompted to select a reason for rejection and click on submit. Once the application is updated, it will move to pending for payment status if advance payment is applicable.

5. Payments

Citizen Interface

If the application is on the “Payment Pending” stage, the user will have the option to make a payment from the “View Applications” page.

The user can make a payment by clicking on the “Make Payment” button. The user is redirected to the bill details page which displays the total, advance and due amount.

Here, the amount due is prefilled and displayed to the user. If the user is aligned, they can proceed by clicking on “Proceed to Pay”.

All payment methods available and configured will be available here as radio buttons. The selected radio button will be filled in orange to display the selection. The user also receives an intimation that they will be redirected to a third-party site. On completion of the payment, the user is redirected to a payment confirmation page. A ‘Print’ receipt option is available to download the payment receipt.

Employee Interface

Desludging applications pending for payment are accessible in the inbox of the user assigned the collector role. The status of the application is reflected in the status column.

By clicking on the application number, the user can view application details.

The user will be able to view details of the application along with details of the Amount Per Trip, Total Amount and amount to be collected. The application details will also display the status as “Pending for Payment”. The user can proceed to collect payment by clicking on the “Collect Payment” button and the user will be redirected to the “Collect Payment” page.

The user will see information about the amount to be collected and further will be required to fill the following information:

  1. Payer Name

  2. Payer Phone number

Additionally, the user will be prompted to select the payment mode using radio buttons. The selected radio button will be highlighted with orange. If the user is getting a physical receipt, then the receipt number can be recorded under the Gen/G8 receipt details.

On clicking the submit button, the user is redirected to the payment confirmation screen. The user can download the payment receipt using the ‘Print’ receipt button or go back to the landing page using the “Take Action” button.

6. Assign Desludging Operator

Once the payment (if any) is collected, the ULB employee can assign a desludging operator. Applications where DSO needs to be assigned will be shown as “Pending for DSO Assignment” in the inbox.

By clicking on the application number, the user can view application details.

The user can start the process of assigning a DSO by clicking on the “Assign DSO” button. This will display the following pop-up to the user:

The user can select the DSO via a dropdown. The list of DSOs is populated by matching the vehicle capacity requested to the DSOs with vehicles with the required capacity. An expected date of completion is to be selected. Once all fields are filled, the user can assign the selected DSO. An error message will be displayed if a field is left blank. The user can also go back to the application details page by clicking on the ‘Close’ button.

Once the user clicks on ‘Assign’, the status in the workflow timeline will reflect “Pending for DSO Approval”. For any reason, if the DSO is unavailable to service the request, the request can be reassigned to another DSO. This can be done by clicking on the “Take Action” button and clicking on reassign DSO.

The same fields need to be filled as that for “Assign DSO”. However, the user is required to select a reason for rejection from a list preconfigured in the backend. An error message will be displayed if a field is left blank. On re-assigning a DSO, the user is displayed a snack bar with confirmation.

The user can also go back to the application details page by clicking on the ‘Close’ button.

7. Assign Vehicle

A vehicle can be assigned by both the ULB and the DSO (or basis roles configured) when the application is in the “Pending for DSO Approval” stage. By clicking on the application number, the user can view application details.

The user can start the process of assigning a vehicle by clicking on the “Assign Vehicle” button. This will display the following pop up to the user.

The user can select the “Vehicle no.” via a dropdown. The list of vehicles is populated by matching the vehicle capacity requested with the required capacity. The vehicle capacity and number of trips are displayed on the pop up. An error message will be displayed if the vehicle registration number field is left blank. The user can also go back to the application details page by clicking on the ‘Close’ button.

Once the user clicks on ‘Assign”, the status in the Workflow timeline will reflect the “DSO InProgress” stage.

At any point during service, the DSO or ULB can update the number of trips. This can be done by clicking on the “Take Action” button and selecting the “Update/Schedule Trips” option.

The user can increase or decrease the number of trips by clicking on the plus or minus sign. The number of trips will increase or decrease and be displayed based on the user action. The user can confirm the updated number of trips by clicking on the Update/Schedule button. The user can also go back to the application details page by clicking on the ‘Close’ button.

A snack bar will confirm the updated number of trips.

8. Complete Request

Once the service request has been completed and all pending payment has been collected, the same has to be confirmed in the system. This can be done by selecting the “Complete Request” button in the “Take Action” button. On clicking on “Complete Request”, the following pop-up is displayed:

The user is required to fill the following details:

  1. Date of Service (selected from a calendar)

  2. Volume of Waste collected

Additionally, the user can add optional details such as Pit Type and Pit Dimensions and upload a photo of the Pit. An error message will be displayed if all mandatory fields are not filled.

The user can confirm the completion by clicking on the ‘Completed’ button. The user can also go back to the application details page by clicking on the ‘Close’ button.

9. Rate Services

if the application is on the Payment Pending stage, the user will have the option to make a payment from the “View Applications” page.

On clicking on ‘View’, the user is redirected to the application details page. The workflow timeline will reflect that the application is pending for citizen feedback and a clickable “Rate Us” option is displayed to the user.

Once the user clicks on rate us, the user will be redirected to the following page:

The user can provide feedback by selecting one out of 5 stars and selecting safety gears used via a multi-select box. If either of these fields are not filled, the user is displayed an error when clicking on the submit button. Additional comments may be added by the user.

On clicking the submit button, the user will be redirected to a confirmation page. The user can use the ‘Download’ button to download any payment or acknowledgement receipts from the users.

Manage Vendor, Driver and Vehicle Details

The FSM Registry allows for the following actions from the frontend for a particular urban local body (ULB):

  • Add new driver, vehicle, vendor

  • Edit driver, vehicle, vendor details

  • Enable and disable drivers, vehicles and vendors

  • Tag driver and vehicle to vendors.

The user can access the ULB registry by clicking on the FSM Registry link in the landing page.

View Vendor List

The landing page of the FSM registry is defaulted to show the list of vendors in the system. A particular vendor can be searched for by entering the Vendor name in the search bar. Search can be cleared by clicking on the “Clear Search” button.

The user can view the number of associated total and active vehicles and drivers against a vendor. The user can view the details of the tagged vehicles and drivers by clicking on the number. The user can enable/disable the vendor using the toggle.

Add a Vendor

A new vendor, vehicle or driver can be added by clicking on the plus button on the top right of the page.

On clicking the plus button, the user will be prompted to select whether he/she/it/they/them want to add a Vendor, Driver or Vehicle. To add a new Vendor, the user can click on Vendor and the user will be redirected to the “Add Vendor” page.

A new vendor can be added by entering details such as Vendor Name, personal details, including Gender, Date of Birth, Email and Phone number and Address details such as Door No, Pincode and landmark. Each vendor is created with a unique mobile number and hence, an error message will be displayed if the mobile number has been used to create other vendors. An error message will be displayed if all mandatory fields are not filled.

The user can confirm the completion by clicking on the ‘Submit’ button. The user can also go back to the FSM Registry landing page by using the breadcrumbs.

Once the user submits an application, a snack bar will confirm the successful addition of a vendor and details of the added vendor will be displayed in the vendor list.

View and Edit Vendor Details

Vendor details can be viewed by clicking on the vendor name. This will display details such as name, number and address. Details of vehicles and drivers tagged to the vendor will be visible on the screen. The user can go back to the FSM Registry landing page by using the breadcrumbs.

Vendor details can be edited by clicking on the “Take Action" button and selecting edit. Add or edit information and click on “Submit Application”. The changes will reflect on the vendor details page.

A vendor can be deleted by clicking on the “Take Action” button and selecting delete.

A pop-up will be displayed for confirmation. The user can confirm delete by clicking on ‘Delete’ or go back to the vendor details by clicking on ‘Cancel’.

On clicking delete, the user will be redirected to the FSM registry landing page and a snack bar will be displayed confirming that the vendor has been deleted.

Tagging Vehicles and Drivers to a Vendor

Multiple vehicles can be tagged to a vendor. It is necessary that a vehicle exists in the system before it can be tagged. A vehicle can be tagged to a vendor by clicking on the “Add Vehicle” button in the vendor details page.

A pop-up will be displayed with a dropdown to select a vehicle. Only vehicles that are not tagged to any vendor are to be displayed. The user can select the vehicle number and click on submit or go back to the vendor details page by clicking on close.

The added vehicle details will be displayed. The vehicle can be untagged from the vendor by clicking on the delete button against the vehicle details.

Multiple drivers can be tagged to a vendor. It is necessary that a driver exists in the system before it can be tagged. A driver can be tagged to a vendor by clicking on the “Add Driver” button in the vendor details page.

A pop-up will be displayed with a dropdown to select a driver. Only drivers that are not tagged to any vendor will be displayed. The user can select the driver name and click on submit or go back to the vendor details page by clicking on close.

The added driver details will be displayed. The driver can be untagged from the vendor by clicking on the delete button against the driver details.

View Vehicle List

To view the list of Vehicles, the user can navigate to the Vehicle tab from the FSM Registry landing page.

The user can view the creation date, tagged vendor and status for a vehicle in this page. A particular vehicle can be searched for by entering the vehicle number in the search bar. Search can be cleared by clicking on “Clear Search”. Vehicles can be sorted by creation date, by clicking on the arrow beside the column heading. The user can enable/disable the vehicle using the toggle.

Add a Vehicle

To add a new vehicle, the user can click on vehicle near the plus button and the user will be redirected to the “Add Vehicle” page.

A new vehicle can be added by entering details such as Vehicle Registration number, Model, Type, Capacity, details of pollution certificate, insurance and road tax. Each vehicle is created with a unique registration number and hence, an error message will be displayed if the registration number has been used to create other vehicles. An error message will be displayed if all mandatory fields are not filled.

The user can confirm the completion by clicking on the ‘Submit’ Button. The user can also go back to the FSM Registry landing page by using the breadcrumbs. Once the user submits an application, a snack bar will confirm the successful addition of a vehicle.

Details of the added vehicle will be displayed in the vehicle list.

View and Edit Vehicle Details

Vehicle details can be viewed by clicking on the vehicle name. This will display details such as the registration number, vehicle type, make, model, capacity etc. The vendor that the vehicle is tagged to and whether it is active is also displayed in the details.

Vehicle details can be edited by clicking on the “Take Action” button and selecting edit. Add or edit information and click on submit application. The changes will reflect in the vehicle details page.

A vehicle can be deleted by clicking on the “Take Action” button and selecting delete.

A pop-up will be displayed for confirmation. The user can click on delete to confirm to cancel to go back to vehicle details. The vehicle will be deleted.

Tagging a Vehicle to a Vendor

Apart from tagging a vehicle to a vendor from the vendor details page, tagging can also be done from the vehicle details page by clicking on the add vendor button. The tagging can be edited by clicking on the edit icon beside Vendor name, in case a vendor is already added.

A pop-up will be displayed with a dropdown to select a vendor. The user can select the vendor and click on submit or go back to the vehicle details page by clicking on ‘Cancel’.

The added vendor details will be displayed. The vehicle can be untagged from the vendor by clicking on the delete button against the vendor name. The edit (pencil) button allows you to change the vendor tagging.

View Driver List

To view the list of drivers, the user can navigate to the drivers tab.

The user can view the creation date, tagged vendor, and status for a driver in this page. A particular driver can be searched for by entering the driver name in the search bar. Search can be cleared by clicking on “Clear Search”.

Drivers can be sorted by creation date, by clicking on the arrow beside the column heading. The user can enable/disable the vehicle using the toggle. The user can change the tagging of the Vendor by using the drop down in the “Vendor Name” column.

Add a Driver

To add a new driver, the user can click on Driver from the plus button and the user will be redirected to the “Add Driver” page.

A new driver can be added by entering details such as Driver Name, and License number. Each vehicle is created with a unique license number and hence, an error message will be displayed if the license number has been used to create other vehicles. An error message will be displayed if all mandatory fields are not filled.

The user can confirm the completion by clicking on the ‘Submit’ button. The user can also go back to the FSM Registry landing page by using the breadcrumbs. Once the user submits an application, a snack bar will confirm the successful addition of a driver. Details of the added driver will be displayed in the driver list.

View and Edit Driver Details

Driver details can be viewed by clicking on the driver name. This will display details such as the Name, phone number and license number. The vendor that the driver is tagged to is also displayed in the details.

Driver details can be edited by clicking on the “Take Action” button and selecting edit. The user can add or edit information and click on submit application. The changes will reflect in the driver details page.

A driver can be deleted by clicking on the “Take Action” button and selecting delete.

A pop-up will be displayed for confirmation. The user can click on delete to confirm or view driver details by clicking on cancel. The vehicle will be deleted.

Tagging a Driver to a Vendor

Method 1: Apart from tagging a driver to a vendor from the vendor details page, tagging can also be done from the driver details page by clicking on the add new vendor button.

A pop-up will be displayed with a dropdown to select a vendor. The user can select the vendor and click on submit or go back to the driver details page by clicking on ‘Cancel’.

The added vendor details will be displayed. The vehicle can be untagged from the vendor by clicking on the delete button against the vendor name. The edit (pencil) button allows you to change the vendor tagging.

Workflow Service
User Service
API Contract
Postman Collection
https://api.postman.com/collections/23418568-17e45900-5801-462d-a6b1-2cf108b37c8d?access_key=PMAT-01GMQRX9YME11ZQKFV30QW4AP0
https://api.postman.com/collections/23418568-17e45900-5801-462d-a6b1-2cf108b37c8d?access_key=PMAT-01GMQRX9YME11ZQKFV30QW4AP0
https://www.getpostman.com/collections/c79e98843bcdcc873d09
https://api.postman.com/collections/23418568-17e45900-5801-462d-a6b1-2cf108b37c8d?access_key=PMAT-01GMQRX9YME11ZQKFV30QW4AP0
https://api.postman.com/collections/23418568-17e45900-5801-462d-a6b1-2cf108b37c8d?access_key=PMAT-01GMQRX9YME11ZQKFV30QW4AP0
https://api.postman.com/collections/23418568-17e45900-5801-462d-a6b1-2cf108b37c8d?access_key=PMAT-01GMQRX9YME11ZQKFV30QW4AP0
https://api.postman.com/collections/23418568-17e45900-5801-462d-a6b1-2cf108b37c8d?access_key=PMAT-01GMQRX9YME11ZQKFV30QW4AP0

Release Builds for DIGIT 2.8

Category

Services

GIT TAGS

Docker Artifact ID

Remarks

Frontend (old UI) v2.7

Citizen

citizen:v1.8.0-b078fa041d-97

Employee

employee:v1.8.0-2ac8314b2f-116

DSS Dashboard

dss-dashboard:v1.8.0-0d70d60e63-53

Digit-UI v2.7

DIGIT UI

digit-ui:v1.5.0-dc44c10a7b-739

Core Services v2.7

Encryption

egov-enc-service:v1.1.2-72f8a8f87b-9

xState Chatbot

xstate-chatbot:v1.1.1-96b24b0d72-21

Searcher

egov-searcher:v1.1.5-72f8a8f87b-16

Payment Gateway

egov-pg-service:v1.2.3-c856353983-16

Filestore

egov-filestore:v1.2.4-72f8a8f87b-10

Zuul - API Gateway

zuul:v1.3.1-96b24b0d72-39

Mail Notification

egov-notification-mail:v1.1.2-72f8a8f87b-12

SMS Notification

egov-notification-sms:v1.1.3-48a03ad7bb-10

Localization

egov-localization:v1.1.3-72f8a8f87b-6

Persist

egov-persister:v1.1.4-72f8a8f87b-6

ID Gen

egov-idgen:v1.2.3-72f8a8f87b-7

User

egov-user:v1.2.7-cc363f0584-12

User Chatbot

egov-user-chatbot:v1.2.6-96b24b0d72-4

MDMS

egov-mdms-service:v1.3.2-72f8a8f87b-12

URL Shortening

egov-url-shortening:v1.1.2-1715164454-3

Indexer

egov-indexer:v1.1.7-f52184e6ba-25

Report

report:v1.3.4-96b24b0d72-16

Workflow

egov-workflow-v2:v1.2.1-df98ec3c35-2

PDF Generator

pdf-service:v1.1.6-96b24b0d72-22

Chatbot

chatbot:v1.1.6-72f8a8f87b-8

Deprecated.

Access Control

egov-accesscontrol:v1.1.3-72f8a8f87b-24

Location

egov-location:v1.1.4-72f8a8f87b-6

OTP

egov-otp:v1.2.2-72f8a8f87b-12

User OTP

user-otp:v1.1.5-1715164454-3

NLP Engine

nlp-engine:v1.0.0-fbea6fba-21

No changes in the current release.

Egov Document-Uploader

egov-document-uploader:v1.1.0-75d461a4d2-4

National Dashboard Ingest

national-dashboard-ingest:v0.0.1-762c61e743-16

New service

National Dashboard Kafka Pipeline

national-dashboard-kafka-pipeline:v0.0.1-762c61e743-3

New service

Business Services v2.7

Apportion

egov-apportion-service:v1.1.5-72f8a8f87b-5

Collection

collection-services:v1.1.6-c856353983-29

Billing

billing-service:v1.3.4-72f8a8f87b-39

HRMS

egov-hrms:v1.2.5-fbb30b2704-8

Dashboard Analytics

dashboard-analytics:v1.1.7-1ffb5fa2fd-49

Dashboard Ingest

dashboard-ingest:v1.1.4-72f8a8f87b-10

EGF Instrument

egf-instrument:v1.1.4-72f8a8f87b-4

EGF Master

egf-master:v1.1.3-72f8a8f87b-15

Finance Collection Voucher Consumer

finance-collections-voucher-consumer:v1.1.6-96b24b0d72-18

Municipal Services v2.7

Trade License

tl-services:v1.1.7-1715164454-66

Trade License Calculator

tl-calculator:v1.1.5-5bc44eec8a-5

Fire NOC

firenoc-services:v1.3.2-12ed7e93c1-64

Fire NOC Calculator

firenoc-calculator:v1.2.1-96b24b0d72-20

Property Services

property-services:v1.1.8-50fadd72a1-37

Property Tax Calculator

pt-calculator-v2:v1.1.5-96b24b0d72-12

Property Tax

pt-services-v2:v1.0.0-48a03ad7bb-4

Deprecated. No changes in the current release.

Water Charges

ws-services:v1.4.3-9611caae31-23

Water Charges Calculator

ws-calculator:v1.3.3-1715164454-23

Sewerage Charges

sw-services:v1.4.3-9611caae31-20

Sewerage Charges Calculator

sw-calculator:v1.3.3-1715164454-13

BPA Calculator

bpa-calculator:v1.1.1-72f8a8f87b-8

BPA Services

bpa-services:v1.1.6-a19ec01ecf-9

User Event

egov-user-event:v1.2.0-c1e1e8ce24-21

PGR

rainmaker-pgr:v1.1.4-48a03ad7bb-4

v1 - Deprecated.

PGR Service

pgr-services:v1.1.4-c856353983-23

v2

Land Services

land-services:v1.0.4-96b24b0d72-14

NOC Services

noc-services:v1.0.5-1715164454-1

FSM

fsm:v1.1.0-2c66d3550a-45

FSM Calculator

fsm-calculator:v1.1.0-2c66d3550a-2

Vehicle

vehicle:v1.1.0-2c66d3550a-31

Vendor

vendor:v1.1.0-2c66d3550a-9

eChallan Services

echallan-services:v1.0.5-700b644c79-16

eChallan Calculator

echallan-calculator:v1.0.2-72f8a8f87b-14

Inbox

inbox:v1.1.1-a9e95f948f-75

Turn-IO

turn-io-adapter:v1.0.1-96b24b0d72-5

Birth and Death Services

birth-death-services:v1.0.0-f96bf4c8bc-110

New service

Utilities Services v2.7

Custom Consumer

egov-custom-consumer:v1.1.1-72f8a8f87b-3

PDF

egov-pdf:v1.1.2-344ffc814a-37

eDCR v2.7

eDCR

egov-edcr:v2.1.1-1815083c26-25

Finance v2.7

Finance

egov-finance:v3.0.2-0d0a8db8ff-28

Configs v2.7

MDMS v2.7

Localization v2.7

QA Automation v2.7

FSM UI/UX Audit

Type
Estimation (in hours)
Assignee
Comment
Status
Reviewed by PM
Gaps (if any)
Reviewed by Antriksh

FSM home breadcrumb title all should align

Improvement

2

Done

Y

Y

All text alignment should be left for FSM registry table

Improvement

2

Done

Disable button alignment, Figure our dropdown

Antriksh will share design

The date of vehicle creation camel case needs to be fixed

Improvement

0.5

Done

Y

Alignment of breadcrumbs and title should be out of the card and left

Improvement

3

Done

Y

Vehicle details title and second card should be aligned

Improvement

2

Done

Y

Remove the break line in the FSM details page

Improvement

2

Follow Design same as New Desludging Application

Done

Y

Spacing between section header, field above and field below

(+91) in every mobile input field need to be added if it is not major changes

Improvement

16

91 Should be every where there is mobile number field

Done

Some are in old format and some are in new format

Look at entire application and check where gaps are

The rupee symbol needs to be removed from the left side and symbols should be left aligned

Improvement

2

Done

Rupee is still coming on the left hand side in application form

Also look at the entire application and check where gaps are

Add vendor card need to be alligned for vehicle

Improvement

3

Done

Add vendor pop-up close circle need to follow the Figma design, pop-up does not align for text properly

Improvement

2

Done

Update trips, add driver, add vendor, add driver modal cancel icon need to be corrected

Improvement

2

Done

Remove top padding in vendor/vehicle/driver details screen

Improvement

2

Done

Vendor/driver/vehicle details screen title-breadcrumb-card should be aligned properly

Improvement

4

Done

Vendor/driver/vehicle edit screen title-breadcrumb-card should be aligned properly

Improvement

Done

Vendor/driver/vehicle edit screen title should be outside card

Improvement

Done

Vehicle number search box in the vehicle tab should check the correct format

Improvement

2

Done

HOME SCREEN REMOVE

Improvement

2

Done

Pincode validation

Improvement

16

Done

Roles permission for FSM inbox links are not proper

Improvement

3

Done

In collector screen, error for incorrect phone number is showing as Payment_Invalid_Mobile

Localisation

0.15

Done

Sorting FSM inbox should follow common inbox for vendor/driver/vehicle tab -backend

Improvement

12

Done

Sorting FSM inbox should follow common inbox for vendor/driver/vehicle tab- UI

Improvement

12

Done

The vendor name dropdown UI sould be according to the Figma link and align left

Improvement

18

Done

Show only go back to home if has only go back to home else show take action + If only one action is present in take action, then show only the action name

Improvement

12

Done

Redirection from SMS for payment, Showing as ES_PAYMENT_DETAILS_TOTAL AMOUNT and ES_PAYMENT_DETAILS_ADV_AMOUNT

Localisation

Done

Wherever input text does not match validation, error message needs to show in real-time

Improvement

40

Blocker

Todo

Change is redirected to a page in form and then the entire form restarts. Expected action: Change button should go to required page and then Next button should go back to the same page

Improvement

Common Issue in Every Module. Antriksh, Jagan and team is looking into it

Different terminologies found for Payment Method. In the Generate Receipt page (Payment mode -> Cash, Cheque, Credit/Debit Card) where as In Complete Request Page (Payment Received -> Paid In Cash, Paid at Counter, Net Banking).

Improvement

Need Clarity on what method should be populated?

Receipt capacity instead of type

Improvement

Dependency on Backend PDF Service

Todo

Vehicly type and payment sections should be separate

Improvement

Dependency on Backend PDF Service

Todo

Receipt needs to be redesigned

Dependency of Core Team. Since Receipt is a core services

FSM registry table should be common component

Improvement

16

Already common component is using

Todo

Either we can keep the option for the advanced amount and full amount in collect page for citizen, or remove the option <Tahera will get back on this

Improvement

Addressed in Frontendedback section of advance pay

Todo

Will be covering in Advance Pay Section

Pay Now and Pay Later looks a little confusing. Check the localisation with other modules

Improvement

Addressed in Frontendedback section of advance pay

Todo

Will be covering in Advance Pay Section

After clicking pay now, it is showing advance amount which looks a little confusing. Need to check with PO

Improvement

Addressed in Frontendedback section of advance pay

Todo

Will be covering in Advance Pay Section

Login error message "This MobileNumber Already Register as UserName in System. Pls try Another UserName"/ Reword to "This Mobile Number Already Register in the System. Please try Another UserName"

Improvement

1

Core team work

Todo

Test the entire product

Todo

Scroll up to the field

Improvement

12

Todo

Next button should be disabled when data is not filled; next button usage is currently inconsistent

Improvement

View application screen for citizen should have data in the same format as the acknowledgement receipt

Improvement

new UI has to be developed on figma first

Anil Singha
Anil Singha
Anil Singha
Anil Singha
Anil Singha
Anil Singha
Anil Singha
Anil Singha
Anil Singha
Anil Singha
Anil Singha
Anil Singha
Anil Singha
Anil Singha
Anil Singha
Anil Singha
Anil Singha
Anil Singha
Sardar Shaik
Anil Singha
Anil Singha
Nabeel Md
Anil Singha
Tahera Bharmal
Tahera Bharmal
Tahera Bharmal
Nabeel Md

UI Developer Guide

This guide offers a systematic view of how to create the application screens on DIGIT.

Developer code: Download the UI code from the link here Sanitation.

UI Development Pre-requisites

Technical pre-requisites

  • Knowledge of the DIGIT UI framework

  • Prior knowledge of React JS

  • Prior knowledge of Redux/Hooks

  • Prior knowledge of SCSS/React StoryBook

  • Prior knowledge of Git

  • Prior knowledge of Queries and Mutations

Citizen Module Setup

This section of the guide enables developers to create their own front-end citizen module from scratch which they can deploy on top of DIGIT UI. The new module will be visible as a ‘card’ in the DIGIT citizen portal.

Steps to build a citizen portal for a module:

Create Project Structure:

Project Structure

Front-end module project structure

Download the UI code from the link here Sanitation.

Follow the steps detailed in this doc.

Create Project Structure

  • Go to micro-ui--internals → packages → modules.

  • Inside the module, create a folder and provide a name for the service. For instance, the service name here is birth registration.

  • Create folder fsm (you can give any name).

  • Add the package.json to the created folder. Mention the module name and other dependencies here.

{
 "name": "@egovernments/digit-ui-module-fsm",
 "version": "1.6.1",
 "license": "MIT",
 "main": "dist/index.js",
 "description": "Digit FSM Module",
 "module": "dist/index.modern.js",
 "source": "src/Module.js",
 "files": [
   "dist"
 ],
 "scripts": {
   "start": "microbundle-crl watch --no-compress --format modern,cjs",
   "build": "microbundle-crl --compress --no-sourcemap --format cjs",
   "prepublish": "yarn build"
 },
 "peerDependencies": {
   "react": "17.0.2",
   "react-router-dom": "5.3.0"
 },
 "dependencies": {
   "@egovernments/digit-ui-react-components": "^1.6.1",
   "microbundle-crl": "0.13.11",
   "react": "17.0.2",
   "react-dom": "17.0.2",
   "react-hook-form": "6.15.8",
   "react-i18next": "11.16.2",
   "react-query": "3.6.1",
   "react-router-dom": "5.3.0",
   "react-time-picker": "4.2.1"
 }
}

After creating the package.json for FSM, the project structure (as seen in the image below) is created:

Install Dependency:

Add MDMS (Master Data Management Service) Configuration.

When creating a new module, the module needs to be enabled in citymodule.json. A sample module is available for reference here: .

For the purpose of illustration here, add the following module (birth registration) as given below:

{
 "tenantId": "pb",
 "moduleName": "tenant",
 "citymodule": [
   {
     "module": "FSM",
     "code": "FSM",
     "bannerImage": "https://egov-uat-assets.s3.amazonaws.com/FSM.png",
     "active": true,
     "order": 2,
     "tenants": [
       {
         "code": "pb.jalandhar"
       },
       {
         "code": "pb.amritsar"
       }
     ]
   }

The FSM UI module needs to be registered in three places so that it will be available for the developer at run-time as well as at the time of deployment.

Below are the three places where the module needs to be registered:

micro-ui/web/micro-ui-internals/package.json

micro-ui/web/micro-ui-internals/example/package.json

micro-ui/web/micro-ui-internalsWeb/package.json

Micro-ui-internals:

Open the micro-ui-internals package.json file and add this module as a dependency.

"dev:fsm": "cd packages/modules/fsm && yarn start",

"build:fsm": "cd packages/modules/fsm && yarn build",

In the example/package.json, add the following line:

"@egovernments/digit-ui-module-fsm":”1.6.1”,

In the web/package.json, add the following line:

"@egovernments/digit-ui-module-fsm":”1.6.1”,

Import Required Components:

DIGIT comes with common re-usable libraries that can be imported for use in a new module. CSS , libraries , common , react components can be imported by adding into package.json.

"@egovernments/digit-ui-css": "1.5.3",

"@egovernments/digit-ui-libraries":"1.5.3",

"@egovernments/digit-ui-module-common":"1.5.3",

"@egovernments/digit-ui-module-fsm":"1.5.0",

"@egovernments/digit-ui-module-dss":"1.5.3",

"@egovernments/digit-ui-react-components":"1.5.3",

Common components live in micro-ui/web/micro-ui-internals/packages/react-components micro-ui/web/micro-ui-internals/packages/css. DIGIT components that we are reusing:

  1. FormComposer

  2. ActionBar

  3. Banner

  4. Card

  5. CardText

  6. Loader

  7. SubmitBar

  8. AppContainer

  9. BackButton

  10. PrivateRoute

  11. Icons

  12. CitizenHomecard

Write Citizen Module Code

This section will walk you through the code that needs to be developed for the application. Detailed user screen wireframes should be available at this point for development.

Following are the steps:

1. Create Application Form:

We need to create a form where users can enter all required information and submit the form. Create a file called index.js in the path below:

/web/micro-ui/internals/packages/module/br/src/pages/citizen/create/index.js

index.js will import the Formcomposer. Inside that, add the heading, label, and form components. The configuration file that will contain the actual form schema is mapped below in the following two lines. The newConfig.json file details are mentioned in the below sections:

import { newConfig } from "../../../components/config/config";

const configs = newConfig?newConfig:newConfig;

import { FormComposer } from "@egovernments/digit-ui-react-components";
import React from "react";
import { useTranslation } from "react-i18next";
import { newConfig } from "../../../components/config/config";


const Create = () => {
 const { t } = useTranslation();
 const configs = newConfig?newConfig:newConfig;
 return (
   <FormComposer
   heading={t("Create New Desludging Application")}
   label={t("ES_COMMON_APPLICATION_SUBMIT")}
   config={configs.map((config) => {
     return {
       ...config,
       body: config.body.filter((a) => !a.hideInEmployee),
     };
   })}
    fieldStyle={{ marginRight: 0 }}
 />
 );
};


export default Create;

2. Filling in config.js:

Create a file called config.js under the following path:

/micro-ui/web/micro-ui-internals/packages/modules/br/src/components/config.js

This file defines the form meta-data and structure. The form heading goes into the "head" field. Components inside the form go into the body field. This form config has already been mapped in the index.js file, and therefore, will be rendered onto the screen:

const newConfig = [
 {
   head: "ES_TITLE_APPLICANT_DETAILS",
   body: [
     {
       label: "ES_NEW_APPLICATION_APPLICATION_CHANNEL",
       isMandatory: true,
       type: "component",
       key: "channel",
       component: "SelectChannel",
       nextStep: "applicantName",
     },
     {
       type: "component",
       key: "applicationData",
       withoutLabel: true,
       component: "SelectName",
     },
     {
       type: "component",
       key: "paymentPreference",
       withoutLabel: true,
       component: "SelectPaymentType",
     },
   ],
 },
];


export default newConfig;

Components used in the newConfig.js:

SelectChannel

SelectName

SelectPaymentType

3. Routing:

After adding the config.js and create/index.js, add routing for the birth registration form. Create the index.js into fsm/src/pages/citizen/index.js, where the private route will be added. In index.js, mention the path and component name, the component one needs to show or render when one hits that route.

import { AppContainer, BackButton,PrivateRoute } from "@egovernments/digit-ui-react-components";
import React from "react";
import {  Switch, useRouteMatch } from "react-router-dom";


import { useTranslation } from "react-i18next";






const App = () => {
 const { path, url, ...match } = useRouteMatch();
 const { t } = useTranslation();


 const Create = Digit?.ComponentRegistryService?.getComponent("Create");
 const Response = Digit?.ComponentRegistryService?.getComponent("Response");
  return (
   <span className={"pt-citizen"}>
     <Switch>
       <AppContainer>
       <BackButton>Back</BackButton>
      
         <PrivateRoute path={`${path}/new-application`} component={Create} />
         <PrivateRoute path={`${path}/response`} component={Response} />
       </AppContainer>
     </Switch>
   </span>
 );
};


export default App;

4. Filling in module.js:

module.js is the entry point of every module, so one needs to register all the components, links, code, etc.

import {  CitizenHomeCard, PTIcon } from "@egovernments/digit-ui-react-components";
import React, { useEffect } from "react";
import { useTranslation } from "react-i18next";
import { useRouteMatch } from "react-router-dom";
import CitizenApp from "./pages/citizen";
import Create from "./pages/citizen/create/index";
import EmployeeApp from "./pages/employee";
import Response from "./pages/citizen/create/Response";




const componentsToRegister = {
 Response,
 FSMCreate : Create,
};


export const FSMModule = ({ stateCode, userType, tenants }) => {
 const { path, url } = useRouteMatch();


 const moduleCode = "FSM";
 const language = Digit.StoreData.getCurrentLanguage();
 const { isLoading, data: store } = Digit.Services.useStore({ stateCode, moduleCode, language });


 if (userType === "citizen") {
   return <CitizenApp path={path} stateCode={stateCode} />;
 }


 return <EmployeeApp path={path} stateCode={stateCode} />;
};


export const FSMLinks = ({ matchPath, userType }) => {
 const { t } = useTranslation();




 const links = [
    {
     link: `${matchPath}/new-application`,
     i18nKey: t("FSM Registration”),
   },
 
 
 ];


 return <CitizenHomeCard header={t("FsmRegistration")} links={links} Icon={() => <PTIcon className="fill-path-primary-main" />} />;
};


export const initFSMComponents = () => {
 Object.entries(componentsToRegister).forEach(([key, value]) => {
   Digit.ComponentRegistryService.setComponent(key, value);
 });
};

5. Enable Module in the UI framework:

After registering all components, links and module code, enable it in two places:

  1. Web/Src/app.js : In app.js we import the FSMModule, initFSMComponents, and FSMLinks and enable the FSM module.

import React from 'react';


import { initDSSComponents } from "@egovernments/digit-ui-module-dss";
import { PaymentModule, PaymentLinks, paymentConfigs } from "@egovernments/digit-ui-module-common";
import { DigitUI } from "@egovernments/digit-ui-module-core";
import { initLibraries } from "@egovernments/digit-ui-libraries";
import { initEngagementComponents } from "@egovernments/digit-ui-module-engagement";
import {initCustomisationComponents} from "./Customisations";
import { initCommonPTComponents } from "@egovernments/digit-ui-module-commonpt";
import { FSMModule ,initFSMModuleComponents ,FSMModuleLinks} from "@egovernments/digit-ui-module-br";


initLibraries();
//"WS" removed the ws enabledModules ;
const enabledModules = ["Payment","QuickPayLinks", "DSS","Engagement", "FSM"];
window.Digit.ComponentRegistryService.setupRegistry({
 ...paymentConfigs,
 PaymentModule,
 PaymentLinks,
 FSMModule,
 FSMLinks,


});


initFSMComponents();
initDSSComponents();
initEngagementComponents();


initCustomisationComponents();


function App() {
 const stateCode = window.globalConfigs?.getConfig("STATE_LEVEL_TENANT_ID") || process.env.REACT_APP_STATE_LEVEL_TENANT_ID;
 if (!stateCode) {
   return <h1>stateCode is not defined</h1>
 }
 return (
   <DigitUI stateCode={stateCode} enabledModules={enabledModules}  />
 );
}


export default App;
  1. web/micro-ui-internals/example/src/index.js:

In index.js, we will import the FSMModule, initFSMComponents, and FSMLinks and enable the FSM module.

import React from "react";
import ReactDOM from "react-dom";
import { initLibraries } from "@egovernments/digit-ui-libraries";
import { FSMModule, initFSMComponents ,FSMLinks} from "@egovernments/digit-ui-module-br";
import { initDSSComponents } from "@egovernments/digit-ui-module-dss";
import { PaymentModule, PaymentLinks, paymentConfigs } from "@egovernments/digit-ui-module-common";
import { initEngagementComponents } from "@egovernments/digit-ui-module-engagement";
import { DigitUI } from "@egovernments/digit-ui-module-core";
import "@egovernments/digit-ui-css/example/index.css";






var Digit = window.Digit || {};


const enabledModules = [ "Payment","QuickPayLinks", "DSS","Engagement","FSM"];


const initTokens = (stateCode) => {
 const userType = window.sessionStorage.getItem("userType") || process.env.REACT_APP_USER_TYPE || "CITIZEN";


 const token =window.localStorage.getItem("token")|| process.env[`REACT_APP_${userType}_TOKEN`];
 const citizenInfo = window.localStorage.getItem("Citizen.user-info")
 const citizenTenantId = window.localStorage.getItem("Citizen.tenant-id") || stateCode;


 const employeeInfo = window.localStorage.getItem("Employee.user-info");
 const employeeTenantId = window.localStorage.getItem("Employee.tenant-id");


 const userTypeInfo = userType === "CITIZEN" || userType === "QACT" ? "citizen" : "employee";
 window.Digit.SessionStorage.set("user_type", userTypeInfo);
 window.Digit.SessionStorage.set("userType", userTypeInfo);


 if (userType !== "CITIZEN") {
   window.Digit.SessionStorage.set("User", { access_token: token, info: userType !== "CITIZEN" ? JSON.parse(employeeInfo) : citizenInfo });
 } else {
   // if (!window.Digit.SessionStorage.get("User")?.extraRoleInfo) window.Digit.SessionStorage.set("User", { access_token: token, info: citizenInfo });
 }


 window.Digit.SessionStorage.set("Citizen.tenantId", citizenTenantId);
if(employeeTenantId && employeeTenantId.length) window.Digit.SessionStorage.set("Employee.tenantId", employeeTenantId);
};


const initDigitUI = () => {
 window?.Digit.ComponentRegistryService.setupRegistry({


   PaymentModule,
   FSMModule,
   PaymentLinks,
   FSMLinks,
 });




 initDSSComponents();
 initEngagementComponents();
 initFSMComponents();






  const stateCode = window?.globalConfigs?.getConfig("STATE_LEVEL_TENANT_ID") || "pb";
 initTokens(stateCode);


 const registry = window?.Digit.ComponentRegistryService.getRegistry();
 ReactDOM.render(<DigitUI stateCode={stateCode} enabledModules={enabledModules} />, document.getElementById("root"));
};


initLibraries().then(() => {
 initDigitUI();
});

Once the link is added to the homepage, one can see the FSM module on our Digit-UI Homepage. Next, add the homepage card for the citizen module.

import {
 Calender, CardBasedOptions, CaseIcon, ComplaintIcon, DocumentIcon, HomeIcon, Loader, OBPSIcon, PTIcon, StandaloneSearchBar, WhatsNewCard
} from "@egovernments/digit-ui-react-components";
import React from "react";
import { useTranslation } from "react-i18next";
import { useHistory } from "react-router-dom";


const Home = () => {
const { t } = useTranslation();
const history = useHistory();
const tenantId = Digit.ULBService.getCitizenCurrentTenant(true);
const { data: { stateInfo } = {}, isLoading } = Digit.Hooks.useStore.getInitData();


const conditionsToDisableNotificationCountTrigger = () => {
 if (Digit.UserService?.getUser()?.info?.type === "EMPLOYEE") return false;
 if (!Digit.UserService?.getUser()?.access_token) return false;
 return true;
};


const { data: EventsData, isLoading: EventsDataLoading } = Digit.Hooks.useEvents({
 tenantId,
 variant: "whats-new",
 config: {
   enabled: conditionsToDisableNotificationCountTrigger(),
 },
});


if (!tenantId) {
 history.push(`/digit-ui/citizen/select-language`);
}


const allCitizenServicesProps = {
 header: t("DASHBOARD_CITIZEN_SERVICES_LABEL"),
 sideOption: {
   name: t("DASHBOARD_VIEW_ALL_LABEL"),
   onClick: () => history.push("/digit-ui/citizen/all-services"),
 },
 options: [
 
 
   {
     name: t("FSM"),
     Icon: <OBPSIcon />,
     onClick: () => history.push("/digit-ui/citizen/FSM-home"),
   },
 
 ],
 styles: { display: "flex", flexWrap: "wrap", justifyContent: "flex-start", width: "100%" },
};
const allInfoAndUpdatesProps = {
 header: t("CS_COMMON_DASHBOARD_INFO_UPDATES"),
 sideOption: {
   name: t("DASHBOARD_VIEW_ALL_LABEL"),
   onClick: () => {},
 },
 options: [
   {
     name: t("CS_HEADER_MYCITY"),
     Icon: <HomeIcon />,
   },
   {
     name: t("EVENTS_EVENTS_HEADER"),
     Icon: <Calender />,
     onClick: () => history.push("/digit-ui/citizen/engagement/events"),
   },
   {
     name: t("CS_COMMON_DOCUMENTS"),
     Icon: <DocumentIcon />,
     onClick: () => history.push("/digit-ui/citizen/engagement/docs"),
   },
   {
     name: t("CS_COMMON_SURVEYS"),
     Icon: <DocumentIcon />,
     onClick: () => history.push("/digit-ui/citizen/engagement/surveys/list"),
   },
 
 ],
 styles: { display: "flex", flexWrap: "wrap", justifyContent: "flex-start", width: "100%" },
};


return isLoading ? (
 <Loader />
) : (
 <div className="HomePageWrapper">
   <div className="BannerWithSearch">
     <img src={stateInfo?.bannerUrl} />
     <div className="Search">
       <StandaloneSearchBar placeholder={t("CS_COMMON_SEARCH_PLACEHOLDER")} />
     </div>
   </div>


   <div className="ServicesSection">
     <CardBasedOptions {...allCitizenServicesProps} />
     <CardBasedOptions {...allInfoAndUpdatesProps} />
   </div>


   {conditionsToDisableNotificationCountTrigger() ? (
     EventsDataLoading ? (
       <Loader />
     ) : (
       <div className="WhatsNewSection">
         <div className="headSection">
           <h2>{t("DASHBOARD_WHATS_NEW_LABEL")}</h2>
           <p onClick={() => history.push("/digit-ui/citizen/engagement/whats-new")}>{t("DASHBOARD_VIEW_ALL_LABEL")}</p>
         </div>
         <WhatsNewCard {...EventsData?.[0]} />
       </div>
     )
   ) : null}
 </div>
);
};


export default Home;

6. Integration with Backend API:

This section will explain how to integrate the UI part for the citizen module with the backend API.

import Urls from '@egovernments/digit-ui-libraries/src/services/atoms/urls';
import { Request } from '@egovernments/digit-ui-libraries/src/services/atoms/Utils/Request';


export const FSMService = {
 search: (tenantId, filters = {}) =>
   Request({
     url: Urls.fsm.search,
     useCache: false,
     method: "POST",
     auth: true,
     userService: false,
     params: { tenantId, ...filters },
   }),
 create: (details, tenantId) =>
   Request({
     url: Urls.fsm.create,
     data: details,
     useCache: true,
     userService: true,
     method: "POST",
     params: { tenantId },
     auth: true,
   })
};
export default FSMService;

In Request, pass the URL so that the URL is mentioned or added into the service/atoms/url.js

fsm: {
 create: "https://62f0e3e5e2bca93cd23f2ada.mockapi.io/user",
 get:"https://62f0e3e5e2bca93cd23f2ada.mockapi.io/user",
}

Hooks

Once FSMService is created with all requests, create a hook and that hook will be used in the code to pass the data to the backend.

import { useQuery, useMutation } from "react-query";


import FSMService from "../../services/elements/FSM";


export const useFSMCreate = (tenantId, config = {}) => {
 return useMutation((data) => BRService.create(data, tenantId));
};


export default useFSMCreate;

After creating Service and Hooks, register it into packages/ libraries/src/index.js

import Enums from "./enums/index";
import mergeConfig from "./config/mergeConfig";
import { useStore } from "./services/index";
import { initI18n } from "./translations/index";
import { Storage, PersistantStorage } from "./services/atoms/Utils/Storage";
import { UserService } from "./services/elements/User";
import { ULBService } from "./services/molecules/Ulb";
import Hooks from "./hooks";
import { subFormRegistry } from "./subFormRegistry";
import FSMService from "./services/elements/FSM";


const setupLibraries = (Library, props) => {
 window.Digit = window.Digit || {};
 window.Digit[Library] = window.Digit[Library] || {};
 window.Digit[Library] = { ...window.Digit[Library], ...props };
};


const initLibraries = () => {
 setupLibraries("SessionStorage", Storage);
 setupLibraries("PersistantStorage", PersistantStorage);
 setupLibraries("UserService", UserService);
 setupLibraries("ULBService", ULBService);


 setupLibraries("Config", { mergeConfig });
 setupLibraries("Services", { useStore });


 setupLibraries("FSMService", FSMService);


 return new Promise((resolve) => {
   initI18n(resolve);
 });
};


export { initLibraries, Enums, Hooks, subFormRegistry };

Once the backend is set up, the hooks or service will be used to send the data to the backend after submitting the form. Add the onSubmit function in this file: (fsm/src/pages/citizen/create/index.js) and in that function, pass the user’s entered data to the BRService that has been created.

import { FormComposer, Loader } from "@egovernments/digit-ui-react-components";
import React, {  useState } from "react";
import { useTranslation } from "react-i18next";
import { useHistory } from "react-router-dom";
import { newConfig } from "../../../components/config/config";


const Create = () => {
 const tenantId = Digit.ULBService.getCurrentTenantId();
 const { t } = useTranslation();
 const history = useHistory();


 const onSubmit = (data) => {


   let Users = [
     {


       user: {
         firstName: data?.FSMSelectName?.firstName,
         lastName: data?.FSMSelectName?.lastName,
         tenantId: tenantId,
       },
      
     },
   ];
     /* use customiseCreateFormData hook to make some chnages to the Employee object */
    Digit.FSMService.create(Users, tenantId).then((result,err)=>{
      let getdata = {...data , get: result }
      onSelect("", getdata, "", true);
      console.log("daaaa",getdata);
    })
    .catch((e) => {
    console.log("err");
   });


   history.push("/digit-ui/citizen/fsm/response");


   console.log("getting data",Users)
  
 };
  /* use newConfig instead of commonFields for local development in case needed */


 const configs = newConfig?newConfig:newConfig;


 return (
   <FormComposer
   heading={t("FSM Registration")}
   label={t("ES_COMMON_APPLICATION_SUBMIT")}
   config={configs.map((config) => {
     return {
       ...config,
       body: config.body.filter((a) => !a.hideInEmployee),
     };
   })}
   onSubmit={onSubmit}
   fieldStyle={{ marginRight: 0 }}
 />
 );
};


export default Create;

Once the integration is done, the data will be saved into the database.

Local Development Setup

The following tools have to be installed before development. Make sure to install the specific versions provided below. If no version is provided, it is assumed that the latest version can be installed.

Install Visual Studio Code. VS Code Extensions to be installed from the marketplace:

​​​​Install NodeJS 14.20.0

​version 1.22.19

Clone the DIGIT-OSS repository locally from your organization's umbrella. This contains the frontend code under the frontend folder.

Build & Deploy

Go to the Jenkins build page. Click on SANITATION under the folder path mentioned below. frontend/sanitation-ui

Click on Build with parameter. Select the feature branch name by searching for it in the search box on the right side of the screen. Click on Build.

Once the build is successful, open the console output and find the docker image that has been built. Copy the docker image ID.

Deploy

Link: https://builds.companyname.org/job/deployments/job/deploy-to-dev/build?delay=0sec

Copy the docker image IDs from the previous step and paste in the above box. Click on ‘Build’. Once the image is deployed, you will see a message as shown below:

Run the Application

After the application is built and deployed, run and test it in the local environment.

Configure Environment File - Citizen To run the application in the local environment, add the .env file in the example folder - If the user is a citizen, configure the .env file as shown below:

SKIP_PREFLIGHT_CHECK=true

REACT_APP_USER_TYPE=CITIZEN

REACT_APP_EMPLOYEE_TOKEN=c835932f-2ad4-4d05-83d6-49e0b8c59f8a

REACT_APP_CITIZEN_TOKEN=7cd58aae-30b3-41ed-a1b3-3417107a993c

REACT_APP_PROXY_API=https://dev.companyname.org

REACT_APP_PROXY_ASSETS=https://dev.companyname.org

REACT_APP_GLOBAL=https://path/to/public/s3/bucket/globalConfigs.js

REACT_APP_CENTRAL_GLOBAL=https://path/to/public/s3/bucket/statebglobalConfigs.js

REACT_APP_QA_GLOBAL=https://path/to/public/s3/bucket/egov-dev-assets/globalConfigs.js

REACT_APP_UAT_GLOBAL=https://path/to/public/s3/bucket/egov-uat-assets/globalConfigs.js

REACT_APP_STATEB_GLOBAL=https://path/to/public/s3/bucket/statebglobalConfigs.js

staging=https://staging.companyname.org

Configure Environment File - Employee

SKIP_PREFLIGHT_CHECK=true

REACT_APP_USER_TYPE=EMPLOYEE

REACT_APP_EMPLOYEE_TOKEN=c835932f-2ad4-4d05-83d6-49e0b8c59f8a

REACT_APP_CITIZEN_TOKEN=7cd58aae-30b3-41ed-a1b3-3417107a993c

REACT_APP_PROXY_API=https://dev.companyname.org

REACT_APP_PROXY_ASSETS=https://dev.companyname.org

REACT_APP_GLOBAL=https://path/to/public/s3/bucket/globalConfigs.js

REACT_APP_CENTRAL_GLOBAL=https://path/to/public/s3/bucket/statebglobalConfigs.js

REACT_APP_QA_GLOBAL=https://path/to/public/s3/bucket/egov-dev-assets/globalConfigs.js

REACT_APP_UAT_GLOBAL=https://path/to/public/s3/bucket/egov-uat-assets/globalConfigs.js

REACT_APP_STATEB_GLOBAL=https://path/to/public/s3/bucket/statebglobalConfigs.js

staging=https://staging.companyname.org

Open Terminal in micro-UI-internals and run the following command:

yarn start

The application will start after you run the command.

Login

There are two types of login:

  • Employee:

Homepage Employee: After the login is successful for employees, users are redirected to the employee home page.

On the homepage, users can see the cards for FSM. These cards need to be added. Go through the link to create an employee card. Homepage Citizen: After the login is successful for citizens, users are redirected to the citizen homepage.

FSM Vehicle Registry

Configuration and setup details on registering vehicles in FSM module

Overview

Vehicle registry is a system that enables urban local body (ULB) employees to create and search vehicle entities, schedule vehicle trips for FSM application and track vehicle trips. This document contains the details about the new enhancements made to the vehicle service and how to set up the vehicle and describes the functionalities provided.

Pre-requisites

Before you proceed with the configuration, make sure the following prerequisites are met:

  • Java 8

  • Kafka server is up and running.

  • egov-persister service is running and has vehicle-persister config path added in it.

  • PSQL server is running and database is created to store FSM Application data.

  • Following services should be up and running:

- egov-perister

- egov-mdms-service

- egov-workflow-v2

- egov-idgen

Key Functionalities

EXISTING

  1. DSO or ULB can create multiple vehicle trips based on the number of trips entered while submitting the FSM application.

  2. FSTPO can decline the vehicle trip with appropriate reason.

  3. Owner attribute has been added to the vehicle.

  4. FSTPO Vehicle Log Inbox Enhancements to include Application No search filter so that FSTPO can view all the vehicle trips associated with the application.

  5. FSPTO vehicle log API upgraded to show trip numbers in case of multi-trip application.

  6. Introduced Vehicle Tab.

  7. Option to add/remove/update vehicle individually.

  8. Admin can enable or disable the vehicle.

  9. Functionality to add/remove vehicles to vendor.

ENHANCEMENT

  1. Part Search: The Vehicle tab now includes the ability to perform a part search by vehicle number. This means that users can enter a partial vehicle number and retrieve all relevant results that contain that specific portion. For example, if the vehicle number is "AA 77 JJ 3324", users can search for any part of the vehicle number, such as "AA", "77", or "JJ", and retrieve all relevant results that contain that specific portion.

  2. Updating Registry Information: In the Vehicle Tab, the admin has the ability to update certain vehicle information, such as Owner name, Phone Number. Added a new column for gender , Dob and Email address which are updatable.

Deployment Details

  1. Deploy the latest version of the vehicle.

  2. Add vehicle-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 ) and restart egov-persister-service.

  3. Integrate the following below changes in vehicle-persister.yml SAN-1063 and 1064 (SAN-1158 and SAN-1157) - Persister file - Vehicle… · egovernments/configs@2e53637

  4. SM-801 removing extra tab space by madan-kumar-eGov · Pull Request #2238 · egovernments/configs

  5. SM-801 vehicle not able to create in uat by madan-kumar-eGov · Pull Request #2240 · egovernments/configs

Configuration Details

Update vehicle-persister.yaml · egovernments/configs@32a7e1b

Update vehicle-persister.yaml · egovernments/configs@23237c8

added jsonb data type for additionalDetails column in save-vehicle-ap… · egovernments/configs@9b2f604

Added the audit logging for vehicle and vendor · egovernments/configs@482185f

SAN-1047 - Added the query map for update vehicle and vendor topics. · egovernments/configs@56da639

History for egov-persister/vehicle-persister.yaml - egovernments/configs

configs/vendor-persister.yaml at DEV · egovernments/configs

MDMS Configuration

Add master data in MDMS service with module name as vehicle and restart egov-mdms-service. Following are some sample master data for:

SuctionType

{
    "tenantId": "pb",
    "moduleName": "Vehicle",
    "SuctionType": [
        {
            "code": "SEWER_SUCTION_MACHINE",
            "name": "Sewer suction machine",
            "active": true
        },
        {
            "code": "SEWER_SUCTION_CUM_JETTING_MACHINE",
            "name": "Sewer suction cum jetting machine",
            "active": true
        }
    ]
}

VehicleOwner

{
    "tenantId": "pb",
    "moduleName": "Vehicle",
    "VehicleOwner": [{
            "name": "ULB",
            "code": "ULB",
            "active": true
        },
        {
            "name": "Private",
            "code": "Private",
            "active": true
        }
    ]
}

VehicleMakeModel

{
    "tenantId": "pb",
    "moduleName": "Vehicle",
    "VehicleMakeModel": [
        {
            "code": "MAHINDRA",
            "name": "Mahindra",
            "active": true
        },
        {
            "code": "MAHINDRA.BOLERO_PICKUP",
            "name": "Bolero Pickup",
            "active": true,
            "make": "MAHINDRA",
            "capacity": "5000",
            "amount": "500"
        },
        {
            "code": "TATA",
            "name": "TATA",
            "active": true
        },
        {
            "code": "TATA.LPT709/34",
            "name": "TATA LPT709/34",
            "active": true,
            "make": "TATA",
            "capacity": "2000",
            "amount": "200"
        },
        {
            "code": "TATA.407",
            "name": "TATA 407",
            "active": true,
            "make": "TATA",
            "capacity": "1000",
            "amount": "100"
        },
        {
            "code": "TAFE",
            "name": "TAFE",
            "active": true
        },
        {
            "code": "TAFE.TRACTOR_45DI",
            "name": "TAFE Tractor 45DI",
            "active": true,
            "make": "TAFE",
            "capacity": "10000",
            "amount": "1000"
        },
        {
            "code": "SONALIKA",
            "name": "Sonalika",
            "active": true
        },
        {
            "code": "SONALIKA.TRACTOR_35DI",
            "name": "Sonalika Tractor 35DI",
            "active": true,
            "make": "SONALIKA",
            "capacity": "8000",
            "amount": "1000"
        }
    ]
}

FSTPO Rejection Reason (Vehicle decline reason codes)

{
    "tenantId": "pb",
    "moduleName": "Vehicle",
    "FSTPORejectionReason": [{
            "name": "Septage Source",
            "code": "SEPTAGE_SOURCE",
            "active": true
        },
        {
            "name": "Outside operational hours",
            "code": "OUTSIDE_OPERATIONAL_HOURS",
            "active": true
        },
        {
            "name": "Under Maintenance",
            "code": "UNDER_MAINTENANCE",
            "active": true
        },
        {
            "name": "Others",
            "code": "OTHERS",
            "active": true
        }
    ]
}

SAN-1049: Added role actions for Driver APIs. · egovernments/egov-mdms-data@fb8e530

SAN-1063: Added the permissiosn for Vehicle trip creation · egovernments/egov-mdms-data@632ee94

SAN-1047: Added role action mapping for vendor and vehicle update · egovernments/egov-mdms-data@3e608a8

Business Service/Workflow Configuration

  1. Search the FSM_VEHICLE_TRIP workflow by the given search API.

/egov-workflow-v2/egov-wf/businessservice/_search? tenantId=pb.amritsar&businessServices=FSM_VEHICLE_TRIP

2. Update this below given action at “null” state at line no. 20 for FSM_VEHICLE_TRIP in below workflow and restart the workflow service.

{
  "action": "READY_FOR_DISPOSAL",
  "currentState": "61e01ccd-be34-4705-ae82-13ae93200fb3",
  "nextState": "e217e14a-7d3a-41bc-ae31-7ab2dce26f02",
  "roles": [
    "FSM_DSO",
    "FSM_EDITOR_EMP",
    "FSM_EMP_FSTPO"
  ],
  "active": true
}

"BusinessServices": [
       {
           "tenantId": "pb.amritsar",
           "uuid": "22c802e6-5354-43be-979a-8a653753459e",
           "businessService": "FSM_VEHICLE_TRIP",
           "business": "vehicle",
           "businessServiceSla": 172800000,
           "states": [
               {
                   "auditDetails": {
                       "createdBy": "11b0e02b-0145-4de2-bc42-c97b96264807",
                       "lastModifiedBy": "157fc9f6-836f-4780-ba89-9e511f65099e",
                       "createdTime": 1613116718088,
                       "lastModifiedTime": 1654241412659
                   },
                   "uuid": "61e01ccd-be34-4705-ae82-13ae93200fb3",
                   "tenantId": "pb.amritsar",
                   "businessServiceId": "22c802e6-5354-43be-979a-8a653753459e",
                   "sla": null,
                   "state": null, 
                   "applicationStatus": null,
                   "docUploadRequired": false,
                   "isStartState": true,
                   "isTerminateState": false,
                   "isStateUpdatable": true,
                   "actions": [
                       {
                           "auditDetails": {
                               "createdBy": "157fc9f6-836f-4780-ba89-9e511f65099e",
                               "lastModifiedBy": "157fc9f6-836f-4780-ba89-9e511f65099e",
                               "createdTime": 1654241412659,
                               "lastModifiedTime": 1654241412659
                           },
                           "uuid": "344d60a6-b415-4937-8a20-e1a70d767f01",
                           "tenantId": "pb.amritsar",
                           "currentState": "61e01ccd-be34-4705-ae82-13ae93200fb3",
                           "action": "CREATE_FSTPO_VEHICLE_LOG",
                           "nextState": "0fec53d3-6940-44c9-8582-2a09bd1f413a",
                           "roles": [
                               "FSM_EMP_FSTPO"
                           ],
                           "active": true
                       },
                       {
                           "auditDetails": {
                               "createdBy": "11b0e02b-0145-4de2-bc42-c97b96264807",
                               "lastModifiedBy": "157fc9f6-836f-4780-ba89-9e511f65099e",
                               "createdTime": 1613116718088,
                               "lastModifiedTime": 1654241412659
                           },
                           "uuid": "96e88b11-25d8-4cc1-b35c-6ce5edcb5904",
                           "tenantId": "pb.amritsar",
                           "currentState": "61e01ccd-be34-4705-ae82-13ae93200fb3",
                           "action": "SCHEDULE",
                           "nextState": "71f17154-40b8-4595-903a-c8d93c124abe",
                           "roles": [
                               "FSM_DSO",
                               "FSM_EDITOR_EMP",
                               "FSM_EMP_FSTPO"
                           ],
                           "active": true
                       },
                       {
                           "action": "READY_FOR_DISPOSAL",
                           "currentState": "61e01ccd-be34-4705-ae82-13ae93200fb3",
                           "nextState": "e217e14a-7d3a-41bc-ae31-7ab2dce26f02",
                           "roles": [
                               "FSM_DSO",
                               "FSM_EDITOR_EMP",
                               "FSM_EMP_FSTPO"
                           ],
                           "active": true
                       }
                   ]
               },
               {
                   "auditDetails": {
                       "createdBy": "11b0e02b-0145-4de2-bc42-c97b96264807",
                       "lastModifiedBy": "157fc9f6-836f-4780-ba89-9e511f65099e",
                       "createdTime": 1613116718088,
                       "lastModifiedTime": 1654241412659
                   },
                   "uuid": "71f17154-40b8-4595-903a-c8d93c124abe",
                   "tenantId": "pb.amritsar",
                   "businessServiceId": "22c802e6-5354-43be-979a-8a653753459e",
                   "sla": null,
                   "state": "SCHEDULED",
                   "applicationStatus": "SCHEDULED",
                   "docUploadRequired": false,
                   "isStartState": true,
                   "isTerminateState": false,
                   "isStateUpdatable": true,
                   "actions": [
                       {
                           "auditDetails": {
                               "createdBy": "11b0e02b-0145-4de2-bc42-c97b96264807",
                               "lastModifiedBy": "157fc9f6-836f-4780-ba89-9e511f65099e",
                               "createdTime": 1613116718088,
                               "lastModifiedTime": 1654241412659
                           },
                           "uuid": "b82e310e-a519-4ee8-8aaf-550cccbe26b2",
                           "tenantId": "pb.amritsar",
                           "currentState": "71f17154-40b8-4595-903a-c8d93c124abe",
                           "action": "READY_FOR_DISPOSAL",
                           "nextState": "e217e14a-7d3a-41bc-ae31-7ab2dce26f02",
                           "roles": [
                               "FSM_DSO",
                               "FSM_EDITOR_EMP",
                               "FSM_EMP_FSTPO"
                           ],
                           "active": true
                       }
                   ]
               },
               {
                   "auditDetails": {
                       "createdBy": "11b0e02b-0145-4de2-bc42-c97b96264807",
                       "lastModifiedBy": "157fc9f6-836f-4780-ba89-9e511f65099e",
                       "createdTime": 1613116718088,
                       "lastModifiedTime": 1654241412659
                   },
                   "uuid": "e217e14a-7d3a-41bc-ae31-7ab2dce26f02",
                   "tenantId": "pb.amritsar",
                   "businessServiceId": "22c802e6-5354-43be-979a-8a653753459e",
                   "sla": null,
                   "state": "WAITING_FOR_DISPOSAL",
                   "applicationStatus": "WAITING_FOR_DISPOSAL",
                   "docUploadRequired": false,
                   "isStartState": true,
                   "isTerminateState": false,
                   "isStateUpdatable": true,
                   "actions": [
                       {
                           "auditDetails": {
                               "createdBy": "11b0e02b-0145-4de2-bc42-c97b96264807",
                               "lastModifiedBy": "157fc9f6-836f-4780-ba89-9e511f65099e",
                               "createdTime": 1643360911202,
                               "lastModifiedTime": 1654241412659
                           },
                           "uuid": "9a8b4fd2-8954-48b4-b593-b5ae273ea33f",
                           "tenantId": "pb.amritsar",
                           "currentState": "e217e14a-7d3a-41bc-ae31-7ab2dce26f02",
                           "action": "DECLINEVEHICLE",
                           "nextState": "15c550df-8369-47fd-816d-c24a07861c5a",
                           "roles": [
                               "FSM_EMP_FSTPO"
                           ],
                           "active": true
                       },
                       {
                           "auditDetails": {
                               "createdBy": "11b0e02b-0145-4de2-bc42-c97b96264807",
                               "lastModifiedBy": "157fc9f6-836f-4780-ba89-9e511f65099e",
                               "createdTime": 1613116718088,
                               "lastModifiedTime": 1654241412659
                           },
                           "uuid": "c83445e8-c658-4a29-b69d-29f30a8be7ff",
                           "tenantId": "pb.amritsar",
                           "currentState": "e217e14a-7d3a-41bc-ae31-7ab2dce26f02",
                           "action": "DISPOSE",
                           "nextState": "0fec53d3-6940-44c9-8582-2a09bd1f413a",
                           "roles": [
                               "FSM_EMP_FSTPO"
                           ],
                           "active": true
                       }
                   ]
               },
               {
                   "auditDetails": {
                       "createdBy": "11b0e02b-0145-4de2-bc42-c97b96264807",
                       "lastModifiedBy": "157fc9f6-836f-4780-ba89-9e511f65099e",
                       "createdTime": 1613116718088,
                       "lastModifiedTime": 1654241412659
                   },
                   "uuid": "0fec53d3-6940-44c9-8582-2a09bd1f413a",
                   "tenantId": "pb.amritsar",
                   "businessServiceId": "22c802e6-5354-43be-979a-8a653753459e",
                   "sla": null,
                   "state": "DISPOSED",
                   "applicationStatus": "DISPOSED",
                   "docUploadRequired": false,
                   "isStartState": false,
                   "isTerminateState": true,
                   "isStateUpdatable": true,
                   "actions": null
               },
               {
                   "auditDetails": {
                       "createdBy": "11b0e02b-0145-4de2-bc42-c97b96264807",
                       "lastModifiedBy": "157fc9f6-836f-4780-ba89-9e511f65099e",
                       "createdTime": 1643360911202,
                       "lastModifiedTime": 1654241412659
                   },
                   "uuid": "15c550df-8369-47fd-816d-c24a07861c5a",
                   "tenantId": "pb.amritsar",
                   "businessServiceId": "22c802e6-5354-43be-979a-8a653753459e",
                   "sla": null,
                   "state": "VEHICLE_DECLINED",
                   "applicationStatus": "VEHICLE_DECLINED",
                   "docUploadRequired": false,
                   "isStartState": false,
                   "isTerminateState": true,
                   "isStateUpdatable": true,
                   "actions": null
               },
               {
                   "auditDetails": {
                       "createdBy": "157fc9f6-836f-4780-ba89-9e511f65099e",
                       "lastModifiedBy": "157fc9f6-836f-4780-ba89-9e511f65099e",
                       "createdTime": 1654105652933,
                       "lastModifiedTime": 1654241412659
                   },
                   "uuid": "4c97dd1b-ebcf-424b-bc68-037c17e29194",
                   "tenantId": "pb.amritsar",
                   "businessServiceId": "22c802e6-5354-43be-979a-8a653753459e",
                   "sla": null,
                   "state": null,
                   "applicationStatus": null,
                   "docUploadRequired": false,
                   "isStartState": true,
                   "isTerminateState": false,
                   "isStateUpdatable": true,
                   "actions": [
                       {
                           "auditDetails": {
                               "createdBy": "157fc9f6-836f-4780-ba89-9e511f65099e",
                               "lastModifiedBy": "157fc9f6-836f-4780-ba89-9e511f65099e",
                               "createdTime": 1654105652933,
                               "lastModifiedTime": 1654241412659
                           },
                           "uuid": "01a3ec24-a89a-4169-98ba-13b483ff417e",
                           "tenantId": "pb.amritsar",
                           "currentState": "4c97dd1b-ebcf-424b-bc68-037c17e29194",
                           "action": "CREATE_FSTPO_LOG",
                           "nextState": "0fec53d3-6940-44c9-8582-2a09bd1f413a",
                           "roles": [
                               "FSM_EMP_FSTPO"
                           ],
                           "active": true
                       }
                   ]
               }
           ],
           "auditDetails": {
               "createdBy": "11b0e02b-0145-4de2-bc42-c97b96264807",
               "lastModifiedBy": "157fc9f6-836f-4780-ba89-9e511f65099e",
               "createdTime": 1613116718088,
               "lastModifiedTime": 1654241412659
           }
       }
   ]

Actions & Role Action Mapping

Actions

{
      "id": {{PLACEHOLDER1}},
      "name": "Create Vehicle Application",
      "url": "/vehicle/v1/_create",
      "displayName": "Create Vehicle",
      "orderNumber": 0,
      "enabled": false,
      "serviceCode": "vehicle",
      "code": "null",
      "path": ""
    },
    {
      "id":  {{PLACEHOLDER2}},
      "name": "Search Vehicle Application",
      "url": "/vehicle/v1/_search",
      "displayName": "Search  Vehicle",
      "orderNumber": 1,
      "enabled": false,
      "serviceCode": "vehicle",
      "code": "null",
      "path": ""
    },
    {
      "id": {{PLACEHOLDER3}},
      "name": "Vehicle Trip Search",
       "url": "/vehicle/trip/v1/_search",
      "displayName": "Vehicle Trip Search",
      "orderNumber": 1,
      "parentModule": "",
      "enabled": false,
      "serviceCode": "",
      "code": "null",
      "path": ""
    },
    {
      "id": {{PLACEHOLDER4}},
      "name": "Vehicle Trip Update",
       "url": "/vehicle/trip/v1/_update",
      "displayName": "Vehicle Trip Update",
      "orderNumber": 1,
      "parentModule": "",
      "enabled": false,
      "serviceCode": "",
      "code": "null",
      "path": ""
    },
    {
      "id": {{PLACEHOLDER5}},
      "name": "Vehicle Trip Create",
      "url": "/vehicle/trip/v1/_create",
      "displayName": "Vehicle Trip Create",
      "orderNumber": 1,
      "parentModule": "",
      "enabled": false,
      "serviceCode": "vehicle",
      "code": "null",
      "path": ""
    },

{
  "id": {{PLACEHOLDER6}},
  "name": "Update Vehicle Application",
  "url": "/vehicle/v1/_update",
  "displayName": "Update Vehicle",
  "orderNumber": 0,
  "enabled": false,
  "serviceCode": "vehicle",
  "code": "null",
  "path": ""
}

Role Action Mapping

[
  {
    "rolecode": "FSM_ADMIN",
    "actionid": {{PLACEHOLDER1}},
    "actioncode": "",
    "tenantId": "pb"
  },
  {
    "rolecode": "FSM_ADMIN",
    "actionid": {{PLACEHOLDER2}},
    "actioncode": "",
    "tenantId": "pb"
  },
  {
    "rolecode": "FSM_DSO",
    "actionid":  {{PLACEHOLDER2}},
    "actioncode": "",
    "tenantId": "pb"
  },
  {
    "rolecode": "FSM_EDITOR_EMP",
    "actionid":  {{PLACEHOLDER2}},
    "actioncode": "",
    "tenantId": "pb"
  },
  {
    "rolecode": "FSM_VIEW_EMP",
    "actionid":  {{PLACEHOLDER2}},
    "actioncode": "",
    "tenantId": "pb"
  },
  {
    "rolecode": "FSM_EMP_FSTPO",
    "actionid":  {{PLACEHOLDER2}},
    "actioncode": "",
    "tenantId": "pb"
  },
  {
    "rolecode": "FSM_EMP_FSTPO",
    "actionid": {{PLACEHOLDER3}},
    "actioncode": "",
    "tenantId": "pb"
  },
  {
    "rolecode": "FSM_EMP_FSTPO",
    "actionid":{{PLACEHOLDER4}},
    "actioncode": "",
    "tenantId": "pb"
  },
  {
      "rolecode": "FSM_EMP_FSTPO",
      "actionid": {{PLACEHOLDER5}},
      "actioncode": "",
      "tenantId": "pb"
    },
]
{
  "rolecode": "FSM_ADMIN",
  "actionid": {{PLACEHOLDER6}},
  "actioncode": "",
  "tenantId": "pb"
},

Infra Ops Configuration

Configurations that we can manage through values.yml vehicle in infraops repo are listed below. values.yml for the vehicle can be found.

Description

name in values.yml

Current Value

id-gen host, to generate the application number

EGOV_IDGEN_HOST

egov-idgen from egov-service-host

mdms service host

EGOV_MDMS_HOST

egov-mdms-service from egov-service-host

workflow v2 service host

WORKFLOW_CONTEXT_PATH

egov-workflow-v2 from egov-service-host

user service host, to get the locale data

EGOV_USER_HOST

egov-user from egov-service-host

Kafka Consumer Group

SPRING_KAFKA_CONSUMER_GROUP_ID

egov-vehicle-services

kafka topic to which service push data to save new vehicle application

PERSISTER_SAVE_VEHICLE_TOPIC

save-vehicle-application

kafka topic to which service push data of the vehicleTrip to save

PERSISTER_SAVE_VEHICLE_TRIP_TOPIC

save-vehicle-trip

kafka topic to which service push data of the vehicleTrip to update

PERSISTER_UPDATE_VEHICLE_TRIP_TOPIC

update-vehicle-trip

kafka topic to which service push data of the vehicleTrip to update the status

PERSISTER_UPDATE_VEHICLE_TRIP_WORKFLOW_TOPIC

update-workflow-vehicle-trip

VehicleTrip Appilcatiion Number format`

egov.idgen.vehicle.trip.applicationNum.format

"[CITY.CODE]-VT-[cy:yyyy-MM-dd]-[SEQ_EGOV_VEHICLETRIP]"

Configurations sample in Values.yml

egov.idgen.vehicle.trip.applicationNum.format: "[CITY.CODE]-VT-[cy:yyyy-MM-dd]-[SEQ_EGOV_VEHICLETRIP]"

# Additional Container Envs
env: |
  - name: EGOV_IDGEN_HOST
    valueFrom:
      configMapKeyRef:
        name: egov-service-host
        key: egov-idgen
  - name: EGOV_HRMS_HOST
    valueFrom:
      configMapKeyRef:
        name: egov-service-host
        key: egov-hrms
  - name: EGOV_MDMS_HOST
    valueFrom:
      configMapKeyRef:
        name: egov-service-host
        key: egov-mdms-service
  - name: EGOV_USER_HOST
    valueFrom:
      configMapKeyRef:
        name: egov-service-host
        key: egov-user
  - name: WORKFLOW_CONTEXT_PATH
    valueFrom:
      configMapKeyRef:
        name: egov-service-host
        key: egov-workflow-v2
  - name: WORKFLOW_TRANSITION_PATH
    value: "egov-workflow-v2/egov-wf/process/_transition"
  - name: EGOV_IDEN_VEHICLE_TRIP_APPLICATIONNUM_FORMAT
    value: "[CITY.CODE]-VT-[cy:yyyy-MM-dd]-[SEQ_EGOV_VEHICLETRIP]"
  - name: SPRING_KAFKA_CONSUMER_GROUP_ID
    value: egov-vehicle-services
  - name: PERSISTER_SAVE_VEHICLE_TOPIC
    value: save-vehicle-application
  - name: PERSISTER_UPDATE_VEHICLE_TOPIC
    value: update-vehicle-application
  - name: PERSISTER_SAVE_VEHICLE_TRIP_TOPIC
    value: save-vehicle-trip
  - name: PERSISTER_UPDATE_VEHICLE_TRIP_TOPIC
    value: update-vehicle-trip
  - name: PERSISTER_UPDATE_VEHICLE_TRIP_WORKFLOW_TOPIC
    value: update-workflow-vehicle-trip 
  - name: SPRING_KAFKA_PRODUCER_KEY_SERIALIZER
    value: org.apache.kafka.common.serialization.StringSerializer
  - name: SPRING_KAFKA_PRODUCER_VALUE_SERIALIZER
    value: org.springframework.kafka.support.serializer.JsonSerializer
  - name: JAVA_OPTS
    value: {{ index .Values "heap" | quote }}
  - name: JAVA_ARGS
    value: {{ index .Values "java-args" | quote }}
  - name: SERVER_PORT
    value: "8080"
  - name: SECURITY_BASIC_ENABLED
    value: "false"  
  - name: MANAGEMENT_SECURITY_ENABLED
    value: "false"
  {{- if index .Values "tracing-enabled" }}
  - name: TRACER_OPENTRACING_ENABLED
    value: "true" 
  {{- end }}

DIGIT-DevOps/values.yaml at master · egovernments/DIGIT-DevOps

Data Setup

Create Vehicle

Create a vehicle with one of the vehicle types available in the VehicleMakeModel MDMS.

Sample Curl

curl 'https://dev.digit.org/vehicle/v1/_create?tenantId=pb.amritsar' \
  -H 'authority: dev.digit.org' \
  -H 'accept: application/json, text/plain, */*' \
  -H 'accept-language: en-GB,en-US;q=0.9,en;q=0.8' \
  -H 'content-type: application/json;charset=UTF-8' \
  -H 'cookie: _ga=GA1.2.1852108775.1653914860; intercom-id-xp1951jv=17aa7431-3dc0-4524-9956-a22bb67a637f; __cuid=858e6f9f233c4b2c804d3f81109b48ac; amp_fef1e8=7faa94f4-6926-4f98-ac07-be2414f977c6R...1gkkb64lb.1gkkb6kvh.7p.a.83' \
  -H 'origin: https://dev.digit.org' \
  -H 'referer: https://dev.digit.org/digit-ui/employee/fsm/registry/new-vehicle' \
  -H 'sec-ch-ua: "Google Chrome";v="107", "Chromium";v="107", "Not=A?Brand";v="24"' \
  -H 'sec-ch-ua-mobile: ?0' \
  -H 'sec-ch-ua-platform: "Linux"' \
  -H 'sec-fetch-dest: empty' \
  -H 'sec-fetch-mode: cors' \
  -H 'sec-fetch-site: same-origin' \
  -H 'user-agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36' \
  --data-raw '{"vehicle":{"tenantId":"pb.amritsar","registrationNumber":"AS 12 AS 1234","model":"MAHINDRA","type":"MAHINDRA.BOLERO_PICKUP","tankCapacity":"5000","suctionType":"SEWER_SUCTION_MACHINE","pollutionCertiValidTill":null,"InsuranceCertValidTill":null,"fitnessValidTill":null,"roadTaxPaidTill":null,"gpsEnabled":true,"source":"Municipal records","owner":{"tenantId":"pb","name":"raj","fatherOrHusbandName":"raj","relationship":"OTHER","gender":"OTHERS","dob":-19800000,"emailId":"[email protected]","correspondenceAddress":"","mobileNumber":"9876543210"},"additionalDetails":{"description":""}},"RequestInfo":{"apiId":"Rainmaker","authToken":"df28f073-4caf-456e-bd43-1943ce76548c","userInfo":{"id":28452,"uuid":"5674253d-9c2a-4d47-88ae-450f3fbbcad2","userName":"BPAFieldInspector","name":"lakshmi","mobileNumber":"8656565343","emailId":null,"locale":null,"type":"EMPLOYEE","roles":[{"name":"FSM Administrator","code":"FSM_ADMIN","tenantId":"pb.amritsar"},{"name":"BPA Services Approver","code":"BPA_APPROVER","tenantId":"pb.amritsar"},{"name":"Employee","code":"EMPLOYEE","tenantId":"pb.amritsar"},{"name":"FSM Employee Report Viewer","code":"FSM_REPORT_VIEWER","tenantId":"pb.amritsar"},{"name":"BPA Services verifier","code":"BPA_VERIFIER","tenantId":"pb.amritsar"},{"name":"BPA Field Inspector","code":"BPA_FIELD_INSPECTOR","tenantId":"pb.amritsar"},{"name":"BPAREG doc verifier","code":"BPAREG_DOC_VERIFIER","tenantId":"pb.amritsar"}],"active":true,"tenantId":"pb.amritsar","permanentCity":null},"msgId":"1671428547643|en_IN","plainAccessRequest":{}}}' \
  --compressed

Integration

Integration Scope

Integrated with the application through REST API to create, and search vehicles. For any module where the vehicle trip is required, one can integrate REST API trip/v1/create, update, and search.

Integration Benefits

  • Vehicle management would become easy.

  • Trip management would become easy.

Steps to Integration

  • FSM application can vehicle/v1/_search to validate the FSM vehicle assignment.

  • FSM application call vehicle/trip/v1/_create on assigning vehicle to the spplication.

  • FSTP operators can mark the vehicleTrip as DISPOSED.

Interaction Diagrams

Reference Docs

Doc Links

Workflow Technical Document

User technical document

MDMS technical document

NEEDS TO BE UPDATED

IDGen technical document

NEEDS TO BE UPDATED

Localisation technical document

NEEDS TO BE UPDATED

Persister technical document

NEEDS TO BE UPDATED

SMS notification technical document

NEEDS TO BE UPDATED

API contract

Postman scripts

API List

Title

Link

vehicle/v1/_create

vehicle/v1/_search

/vehicle/v1/_plainsearch

/vehicle/trip/v1/_create

vehicle/trip/v1/_update

vehicle/trip/v1/_search

/vehicle/trip/v1/_plainsearch

vehicle/v1/_update

Workflow Service
User Service
API Contract
Postman Collection
https://www.getpostman.com/collections/6d99bb40022396f848b2
https://www.getpostman.com/collections/6d99bb40022396f848b2
https://www.getpostman.com/collections/6d99bb40022396f848b2
https://www.getpostman.com/collections/4d425d97a5db5ced11b6
https://www.getpostman.com/collections/6d99bb40022396f848b2
https://www.getpostman.com/collections/6d99bb40022396f848b2
https://www.getpostman.com/collections/6d99bb40022396f848b2
https://api.postman.com/collections/23418568-a15793e6-edeb-4393-a6b8-38fd90deca6f?access_key=PMAT-01GMQPGY7NKF54DP47PEJH6NZG

Program Rollout Plan

Task
Status
Dependency
Responsibility / Owner
Start Date
End Date
Revised Date
Comments

PWC - Integration of SUJOG FSSM on SUJOG

Planning a roadmap

In progress

Onboarding them on SUJOG-FSSM - Preview

Completed

Sharing the product roadmap with PWC - Support in preparing the effort estimates

In progress

Effort estimate from PWC and proposal to the department for final handover

In progress

Onboarding Sushanta Kumar Mishra

Completed

Finalising the governance structure - State

Preparation of the structure to include state TSU for adoption and monitoring

Acceptance and acknowledgment from EIC to sign off

Getting the additional secretary to sign-off

PS approval

Product features, timeline and sign offs

UAT code promotion

Completed

NA

Riddhi

22-Feb-2023

1-Mar-2023

UAT testing and sign-off

Completed

NA

Riddhi

1-Mar-2023

6-Mar-2023

Code freeze

Completed

NA

Riddhi

6-Mar-2023

6-Mar-2023

Implementation handover - Beta release

Completed

NA

Riddhi

6-Mar-2023

9-Mar-2023

24-Mar-2023

Product sign-off

Completed

On Impel feedback

Arindam

6-Mar-2023

14-Mar-2023

16-Mar-2023

Documentation

Completed

NA

Riddhi

7-Mar-2023

14-Mar-2023

4-Apr-2023

Documents are shared with Mihika. Mihika would need some time to reivew the documents and add it to Gitbook.

Final implementation handover

Completed

On Prod Sign off

Riddhi

13-Mar-2023

16-Mar-2023

29-Mar-2023

Sprint/Final release showcase

To do

On Prod Sign off

Riddhi

13-Mar-2023

16-Mar-2023

6-Apr-2023

Gate 2

To do

On Prod Sign off

Tahera

15-Mar-2023

17-Mar-2023

6-Apr-2023

Date has been finalized to 30th March based on everyone's availability

Impel activities and timeline

Handover of FSM1.3

Completed

On Prod Sign off

Tahera/Riddhi/Arindam

20-Mar-2023

20-Mar-2023

29-Mar-2023

Master data validation for 37 new ULBs (Phase-2)

Completed

Program Team to provide the data after program team verifies

Riddhi/Arindam

1-Mar-2023

17-Mar-2023

24-Mar-2023

35 out of 37 sheets are uploaded in drive as on 16-03-2023. 32 ULB verified. 4 ULB has data issue

Setting up of master data and configurations on FSM test server

Completed

Riddhi/Arindam

20-Mar-2023

21-Mar-2023

24-Mar-2023

Deployment of new version (FSM 1.3) in FSM test environment

Completed

Riddhi/Arindam

20-Mar-2023

21-Mar-2023

24-Mar-2023

Listing the changes in core services related to FSM 1.3

Completed

Riddhi/Arindam

21-Mar-2023

22-Mar-2023

30-Mar-2023

Taking the core service changes (if any) with the PwC team and getting their approval

Completed

Riddhi/Arindam

22-Mar-2023

23-Mar-2023

31-Mar-2023

QA sign-off on FSM v1.3 on test server

In progress

Riddhi/Arindam

23-Mar-2023

24-Mar-2023

6-Apr-2023

URC & E2E testing - QA sign-off

To do

Riddhi/Arindam

6-Apr-2023

10-Apr-2023

10-Apr-2023

Sign-off of FSM 1.3 & Datamart reports from the programme team

To do

Riddhi/Arindam/Shrija/Abhisek

27-Mar-2023

27-Mar-2023

12-Apr-2023

Customisation suggested by the programme team

In progress

Riddhi/Arindam

28-Mar-2023

29-Mar-2023

6-Apr-2023

Core service code merge (if any) on SUJOG UAT by PwC

To do

Riddhi/Arindam

29-Mar-2023

29-Mar-2023

14-Apr-2023

Sujog UAT set-up with the latest builds and master data

To do

Riddhi/Arindam

30-Mar-2023

3-Apr-2023

18-Apr-2023

QA sign-off on Sujog UAT instance

To do

Riddhi/Arindam

4-Apr-2023

5-Apr-2023

20-Apr-2023

UAT sign-off

To do

Riddhi/Arindam/Shrija/Abhisek/Some ULB's in Phase-1

6-Apr-2023

10-Apr-2023

21-Apr-2023

Setting up of master data and configurations on production (Specific to FSM1.3)

To do

Riddhi/Arindam

11-Apr-2023

13-Apr-2023

26-Apr-2023

Deploying to production

To do

Riddhi/Arindam

11-Apr-2023

13-Apr-2023

26-Apr-2023

Sanity testing on production using testing tenant

To do

Riddhi/Arindam

14-Apr-2023

17-Apr-2023

26-Apr-2023

Setting up of new ULB's, master data, seed data, user creations for 37 ULB's

To do

Riddhi/Arindam

14-Apr-2023

19-Apr-2023

28-Apr-2023

Release communication

To do

Riddhi/Arindam

19-Apr-2023

19-Apr-2023

28-Apr-2023

Refresher training of pilot+phase I ULBs

On Impel's timeline

Refresher training of the pilot+phase I ULBs on the new features

To do

Programme team

17-Apr-2023

21-Apr-2023

24-Apr-2023

Change in impel to prod dates - Using UAT

Content preparation

To do

Programme team

3-Apr-2023

14-Apr-2023

21-Apr-2023

Can we test features in some of the ULBs before rolling out in production?

Programme setup: Approval, monitoring and progress tracking

Presentation of the progress and compliances regarding product features for securing approval for a state-wide rollout from EIC, additional secretary and PS

Completed

Programme team

17-Mar-2023

24-Mar-2023

Identification of the FSSM programme SPOC within HUDD for PMU

In progress

Programme team

20-Mar-2023

24-Mar-2023

30-Apr-2023

Creation of a training plan, governance structure, and submission to the state team for their review

Completed

Programme team

20-Mar-2023

24-Mar-2023

Securing approval for MTs engagement and onboarding for the state-wide roll out from OWSSB, OWA and HUDD, Or

In progress

On Approval from OWA and Availability of MTs

Programme team + OWA + OWSSB

20-Mar-2023

24-Mar-2023

21-Apr-2023

Leverage the ULB officials as trainers from the current batch of 35

Training of master trainers or identified ULB personnel/TRPs from phase I and pilot

Creation of the training plan will require a a) Schedule b) Content c) Venue d) Participants (Identified SPoCs/executive and TRPs) or OWA master trainers

Completed

Programme team

3-Apr-2023

14-Apr-2023

Creation of the training assets-documents , videos, FAQs, etc

To do

Programme team + Marketing team

3-Apr-2023

14-Apr-2023

21-Apr-2023

Training of the master trainers or indentified ULB sanitation SPOCs/TRPs from phase I

To do

Programme team

17-Apr-2023

21-Apr-2023

2-May-2023

Collect of the training feedback and conduct a refresher training

To do

Programme team

17-Apr-2023

21-Apr-2023

2-May-2023

Programme setup:

Communication to the other entities regarding timeline (DUDA, ULBs, State FSM TSU, PwC, EY-PMU) via a letter

In progress

Programme team

1-Mar-2023

10-Mar-2023

20-Mar-2023

Kick-off meeting with DUDA officials for data collection fo the remaining 79 ULBs

Completed

Programme team

Creating and finalising the data sheet to collect data from ULBs and getting a sign-off internally from the product and impel teams

Completed

Programme team

Creating and finalising the data sheet to collect data from ULBs and getting a sign-off externally from OWSSB

Completed

Programme team

Weekly cadence with DUDA to review the progress

Completed

Programme team

Setting up a data review prosess internally for sanity check by the programme team - L1

Completed

Programme team

Finalising the list of ULBs for phase II roll-out based on ULB readiness

Completed

Programme team

Communication from the HUDD/OWSSB to the ULBs EOs to nominate FSM executive for facilitating the roll-out activities within ULBs and report the progress to PMU

Programme team

1-Mar-2023

17-Mar-2023

Pre-requistites from the ULBs

All the ULBs to nominate a dedicated personnel as FSM executive, and ensure accessibility of all the communication channel to raise a desludging request as a single person should be made responsible for handling the FSM requests coming from ULBs own phone helpline/14420/

walk-in citizens, and logging them into the SUJOG-FSSM system and assigning the cesspool operators

In progress

OWSSB + TSU + HUDD, tracking by the programme team

1-Mar-2023

15-Apr-2023

30-Apr-2023

All the ULBs need to ensure that all the private operators are identified, empaneled at the ULB. This will bring the private operators within the ambit of the FSM transformation and provide an oversight to the ULB administration

In progress

OWSSB + TSU + HUDD, tracking by the programme team

1-Mar-2023

15-Apr-2023

30-Apr-2023

All the ULBs to have clarity on the pricing structure for the desludging requests and working hours of the FSTPs

In progress

OWSSB + TSU + HUDD, tracking by the programme team

1-Mar-2023

15-Apr-2023

30-Apr-2023

Data collection & review for batch 1 & 2

On DUDA

1-Feb-2023

14-Mar-2023

Finalising the data collection template and checklist for data correction

Completed

Programme team + OWSSB + DUDA

1-Feb-2023

14-Mar-2023

Orientation session with OWSSB and DUDA officials on what information is expected and how to fill and share the same

Completed

Programme team + OWSSB + DUDA

1-Feb-2023

14-Mar-2023

Categorising the ULBs based on geographies for batches 1 and 2 of phase-2

Completed

Programme team + OWSSB + DUDA

1-Feb-2023

14-Mar-2023

Completed by program Team.

Data gathering from the ULBs under FSTP coverage (Batch-1)

Completed

Programme team + OWSSB + DUDA

1-Feb-2023

14-Mar-2023

Review of collected data for its completeness by the program team (Batch-1)

Completed

Programme team + OWSSB + DUDA

1-Feb-2023

14-Mar-2023

Locking the data sheet for batch-1 after filling any leftover data fields

Completed

Programme team + OWSSB + DUDA

1-Feb-2023

14-Mar-2023

Data gathering from the ULBs under FSTP coverage (Batch-2)

Completed

Programme team + OWSSB + DUDA

1-Feb-2023

14-Mar-2023

Except for Bubhaneswar. To be initiated with the helpd of OWSSB and HUDD

Review of collected data for its completeness by the program team (Batch-2)

Completed

Programme team + OWSSB + DUDA

1-Feb-2023

14-Mar-2023

Locking the data sheet for batch-2 after filling any leftover data fields

Completed

Programme team + OWSSB + DUDA

1-Feb-2023

14-Mar-2023

Review of collected data for its completeness by the impel team for phase-2

In progress

Impel team

Data of 19 ULBs are verified by the Impel Team

IT Infra readiness within ULBs

On State + ULB

10-Mar-2023

15-Apr-2023

Tracking the purchase and installation of computer within ULB (for dealing assistant) to take citizens' requests as per the prescribed specifications as followed: 1. Computer with minimum I3 processor with FSM executive (nominated personnel) at ULB and FSTP 2. Wi-Fi or wired LAN connectivity for computer within ULB & FSTP 3. Laser or Inkjet printer in ULB for printing receipts and acknowledgements 4. Card swipe machines to accept payments in ULB for pre-payment use case

In progress

Programme team

10-Mar-2023

30-Apr-2023

As per DUDA, 37 ULBs has computer and internet/wi-fi both at ULB office and FSTP. -

Training of ULB personnel/FSSM executive & TRPs

HUDD + OWSSB

Training of the ULB personnel/FSM executive and TRPs for batch-1 ULB

To do

Programme team

1-May-2023

5-May-2023

8-May-2023

Change in impel timeline

Collection of Training feedback for Batch-1 ULB

To do

Programme team

1-May-2023

5-May-2023

8-May-2023

Training of the ULB personnel/FSM executive and TRPs for batch-2 ULBs

To do

Programme team

8-May-2023

12-May-2023

9-May-2023

Collection of training feedback for Batch-2 ULBs

To do

Programme team

1-May-2023

5-May-2023

9-May-2023

Communication and tracking progress

6-Mar-2023

7-Mar-2023

Setting up a WhatsApp channel for easy communication and progress review with Eos/Cos and FSM executive

In progress

OWSSB and HUDD to release the letter

Programme team

Program kick-off meeting with external stakeholders for aligning them towards the programme objectives

Completed

Programme team

17-Mar-2023

17-Mar-2023

Program kick-off meeting with internal stakeholders for aligning them towards the programme objectives

In progress

Programme team

IEC support from the State - Out-of-scope. Proposing this idea to state for better citizen engagement

Creation of a IEC Plan consisting of : a) Creative designs b) Channels for promotion pan state to increase citizen engagement- Pamphlets in Newspaper/ radio/TV in local languages c) Calendar or schedule of promotional activities d) Social media posts from the state channels

To do

State + OWSSB

3-Apr-2023

21-Apr-2023

Approving the budgets for IEC campaign from ULB budgets

To do

State + OWSSB

3-Apr-2023

21-Apr-2023

Creation of creative assets

To do

State + OWSSB

3-Apr-2023

21-Apr-2023

Translation of assets in Odia

To do

State + OWSSB

3-Apr-2023

21-Apr-2023

Printing of banners, leaflets etc as per the plan and putting them at relevant spots

To do

3-Apr-2023

21-Apr-2023

Sharing the feedback/status report back to PMU team

To do

3-Apr-2023

21-Apr-2023

IEC support from eGov marketing team

Creating a chart or flex for ULBs to have a view of FSM value chain and good practices

To do

Marketing Team

3-Apr-2023

21-Apr-2023

28-Apr-2023

Creation of short 2 minute videos to explain SUJOG workflow/training videos - These should be flow-wise or screen-wise which will be available on the Youtube playlist, and wherever possible to be accessible by the participants when required

In progress

3-Apr-2023

21-Apr-2023

21-Apr-2023

User manuals for the trainees in Odia, if possible, including easy explainer flowcharts of SUJOG-FSSM

To do

3-Apr-2023

21-Apr-2023

28-Apr-2023

FAQ doc with some basic and important questions like how to change passwords, how to reassign vehicles, how to update trips, how to process the payments, how to ensure basic sanity check, etc

To do

3-Apr-2023

21-Apr-2023

28-Apr-2023

Post go-live technical Support

L1 query resolution of ULB stakeholders

To do

Implementation team

15-May-2023

30-Jun-2023

L2 support (Fixing defects reported from the field)

To do

Implementation team

15-May-2023

30-Jun-2023

Post go-live support and handholding of the onboarded ULBs

Categorising the ULBs and creating batches for weekly calls

To do

12-May-2023

19-May-2023

Setting up a weekly call with the ULBs to review the progress and address issues

To do

12-May-2023

19-May-2023

Refresher training, if required, will be planned virtually

To do

12-May-2023

19-May-2023

https://docs.google.com/spreadsheets/d/17kxUYOHjmZgVwCQ1lNMSeCF8GTaIbSJ2EHvNyns6efY/edit?usp=sharing

FSM-DSS Technical Documentation

Overview

DSS has two sides to it: One being the process in which the data is pooled to ElasticSearch, and the other being the way it is fetched, aggregated, computed, transformed and sent across. As this revolves around a variety of data sets, there is a need for making this configurable so that, if a new scenario is introduced, then it is a configuration away from getting the newly-introduced scenario involved in this flow of process.

This document explains the steps on how to define the configurations for the analytics side of DSS for FSM.

What is analytics?

Analytics: Micro-service that is responsible for building, fetching, aggregating, and computing the data on ElasticSearch to a consumable data response, which will be later used for visualisations and graphical representations.

Analytics Configurations

Analytics contains multiple configurations. We need to add the changes related to FSM in this dashboard-analytics. Here is the location: configs/egov-dss-dashboards/dashboard-analytics at qa · egovernments/configs Below is a list of configurations that need to be changed to run FSM successfully.

  1. Chart API Configuration

  2. Master Dashboard Configuration

  3. Role Dashboard Mappings Configuration

Description

Chart API Configuration

Each visualisation has its own properties, and comes from different data sources (sometimes it is a combination of different data sources).

In order to configure each visualisation and their properties, we have a chart API configuration document. In this, the visualisation code, which happens to be the key, will have its properties configured as a part of configuration, and are easily changeable.

Here is the sample ChartApiConfiguration.json data for FSM.

  "fsmTotalrequest": {
    "chartName": "DSS_FSM_TOTAL_REQUESTS",
    "queries": [
      {
        "module": "FSM",
        "indexName": "fsm",
        "aggrQuery": "{\"aggs\":{\"AGGR\":{\"filter\":{\"bool\":{\"must_not\":[{\"term\":{\"Data.fsm.tenantId.keyword\":\"pb.testing\"}}]}},\"aggs\":{\"Total Application\":{\"value_count\":{\"field\":\"Data.fsm.@timestamp\"}}}}}}",
        "requestQueryMap": "{\"wardId\" : \"Data.ward.name.keyword\", \"tenantId\" : \"Data.tenantData.code\" ,  \"district\" : \"Data.tenantData.city.districtCode\"}",
        "dateRefField": "Data.fsm.@timestamp"
      }
    ],
    "chartType": "metric",
    "valueType": "number",
    "action": "",
    "drillChart": "none",
    "aggregationPaths": [
      "Total Application"
    ],
    "insight": {
      "chartResponseMap" : "totalApplication",
      "action" : "differenceOfNumbers",
      "upwardIndicator" : "positive",
      "downwardIndicator" : "negative",
      "textMessage" : "$indicator$value% than last $insightInterval",
      "colorCode" : "#228B22",
      "insightInterval" : "year",
      "isRoundOff": true
    },
    "_comment": " FSM Total Applications"
  },
  "totalSludgeTreated": {
    "chartName": "DSS_FSM_TOTAL_SLUDGE_TREATED",
    "queries": [
      {
        "module": "FSM",
        "indexName": "vehicletrip",
        "aggrQuery": "{\"aggs\":{\"AGGR\":{\"filter\":{\"bool\":{\"must_not\":[{\"term\":{\"Data.vehicleTrip.tenantId.keyword\":\"pb.testing\"}}]}},\"aggs\":{\"Total Sludge Collection\":{\"sum\":{\"script\":{\"source\":\"(doc['Data.vehicleTrip.volumeCarried'].value)/1000.0\"}}}}}}}",
        "requestQueryMap": "{\"wardId\" : \"Data.ward.name.keyword\", \"tenantId\" : \"Data.tenantData.code\" ,  \"district\" : \"Data.tenantData.city.districtCode\"}",
        "dateRefField": "Data.vehicleTrip.@timestamp"
      }
    ],
    "chartType": "metric",
    "valueType": "number",
    "action": "",
    "drillChart": "none",
    "aggregationPaths": [
      "Total Sludge Collection"
    ],
    "insight": {
      "chartResponseMap" : "totalSludgeTreated",
      "action" : "differenceOfNumbers",
      "upwardIndicator" : "positive",
      "downwardIndicator" : "negative",
      "textMessage" : "$indicator$value% than last $insightInterval",
      "colorCode" : "#228B22",
      "insightInterval" : "year",
      "isRoundOff": true
    },
    "_comment": " FSM Total Sludge Treated"
  },
  "avgFSMCostRequest": {
    "chartName": "DSS_FSM_AVG_FSM_COST_OR_REQ",
    "queries": [
      {
        "module": "FSM",
        "indexName": "fsm",
        "aggrQuery": "{\"aggs\":{\"AGGR\":{\"filter\":{\"bool\":{\"must_not\":[{\"term\":{\"Data.tenantId.keyword\":\"pb.testing\"}}],\"must\":[{\"term\":{\"Data.payments.paymentDetails.businessService.keyword\":\"FSM.TRIP_CHARGES\"}}]}},\"aggs\":{\"Average Collection\":{\"avg\":{\"field\":\"Data.payments.paymentDetails.bill.billDetails.amountPaid\"}}}}}}",
        "requestQueryMap": "{\"wardId\" : \"Data.ward.name.keyword\", \"tenantId\" : \"Data.tenantData.code\" ,  \"district\" : \"Data.tenantData.city.districtCode\"}",
        "dateRefField": "Data.fsm.@timestamp"
      }
    ],
    "chartType": "metric",
    "valueType": "amount",
    "action": "",
    "drillChart": "none",
    "isRoundOff": true,
    "aggregationPaths": [
      "Average Collection"
    ],
    "insight": {
      "chartResponseMap" : "averageCollection",
      "action" : "differenceOfNumbers",
      "upwardIndicator" : "positive",
      "downwardIndicator" : "negative",
      "textMessage" : "$indicator$value% than last $insightInterval",
      "colorCode" : "#228B22",
      "insightInterval" : "year",
      "isRoundOff": true
    },
    "_comment": " FSM Average Collection"
  },
  "totalCollectioninLacs": {
    "chartName": "DSS_FSM_TOTAL_COLLECTION",
    "queries": [
      {
        "module": "FSM",
        "indexName": "fsm",
        "aggrQuery": "{\"aggs\":{\"AGGR\":{\"filter\":{\"bool\":{\"must_not\":[{\"term\":{\"Data.tenantId.keyword\":\"pb.testing\"}}],\"must\":[{\"term\":{\"Data.payments.paymentDetails.businessService.keyword\":\"FSM.TRIP_CHARGES\"}}]}},\"aggs\":{\"Total Collection\":{\"sum\":{\"field\":\"Data.payments.paymentDetails.bill.billDetails.amountPaid\"}}}}}}",
        "requestQueryMap": "{\"wardId\" : \"Data.ward.name.keyword\", \"tenantId\" : \"Data.tenantData.code\" ,  \"district\" : \"Data.tenantData.city.districtCode\"}",
        "dateRefField": "Data.fsm.@timestamp"
      }
    ],
    "chartType": "metric",
    "valueType": "amount",
    "action": "",
    "drillChart": "none",
    "documentType": "_doc",
    "aggregationPaths": [
      "Total Collection"
    ],
    "insight": {
      "chartResponseMap" : "totalCollection",
      "action" : "differenceOfNumbers",
      "upwardIndicator" : "positive",
      "downwardIndicator" : "negative",
      "textMessage" : "$indicator$value% than last $insightInterval",
      "colorCode" : "#228B22",
      "insightInterval" : "year",
      "isRoundOff": true
    },
    "_comment": " FSM Total Collection"
  },
  "slaCompliance": {
    "chartName": "DSS_FSM_SLA_COMPLIANCE",
    "queries": [
      {
        "module": "FSM",
        "indexName": "fsm",
        "aggrQuery": "{\"aggs\":{\"AGGR\":{\"filter\":{\"bool\":{\"must_not\":[{\"term\":{\"Data.service.tenantId.keyword\":\"pb.testing\"}}]}},\"aggs\":{\"Closed With In Sla\":{\"filter\":{\"bool\":{\"must\":[{\"terms\":{\"Data.fsm.applicationStatus.keyword\":[\"COMPLETED\",\"CITIZEN_FEEDBACK_PENDING\"]}},{\"script\":{\"script\":{\"source\":\"doc['Data.fsm.auditDetails.lastModifiedTime'].value - doc['Data.fsm.auditDetails.createdTime'].value < params.threshold\",\"lang\":\"painless\",\"params\":{\"threshold\":172800000}}}}]}},\"aggs\":{\"count\":{\"terms\":{\"field\":\"Data.fsm.tenantId.keyword\"},\"aggs\":{\"tenant_count\":{\"value_count\":{\"field\":\"Data.fsm.tenantId.keyword\"}}}}}},\"Total Applications\":{\"terms\":{\"field\":\"Data.fsm.tenantId.keyword\"},\"aggs\":{\"tenant_count\":{\"value_count\":{\"field\":\"Data.fsm.tenantId.keyword\"}}}}}}}}",
        "requestQueryMap": "{\"wardId\" : \"Data.ward.name.keyword\", \"tenantId\" : \"Data.tenantData.code\" ,  \"district\" : \"Data.tenantData.city.districtCode\"}",
        "dateRefField": "Data.fsm.@timestamp"
      }
    ],
    "chartType": "metric",
    "valueType": "percentage",
    "drillChart": "none",
    "documentType": "_doc",
    "action": "percentage",
    "isRoundOff": true,
    "aggregationPaths": [
      "Closed With In Sla",
      "Total Applications"
    ],
    "insight": {
      "chartResponseMap" : "slaCompliance",
      "action" : "differenceOfNumbers",
      "upwardIndicator" : "positive",
      "downwardIndicator" : "negative",
      "textMessage" : "$indicator$value% than last $insightInterval",
      "colorCode" : "#228B22",
      "insightInterval" : "year",
      "isRoundOff": true
    },
    "_comment": " SLA Compliance"
  },
  "citizenAvgRating": {
    "chartName": "DSS_FSM_CITIZEN_AVG_RATING",
    "queries": [
      {
        "module": "FSM",
        "indexName": "fsm",
        "aggrQuery": "{\"aggs\":{\"AGGR\":{\"filter\":{\"bool\":{\"must_not\":[{\"term\":{\"Data.fsm.tenantId.keyword\":\"pb.testing\"}}],\"must\":[{\"terms\":{\"Data.fsm.applicationStatus.keyword\":[\"COMPLETED\"]}},{\"term\":{\"Data.history.action.keyword\":\"RATE\"}},{\"exists\":{\"field\":\"Data.history\"}},{\"range\":{\"Data.history.rating\":{\"gte\":1}}}]}},\"aggs\":{\"Citizen Average Rating\":{\"avg\":{\"script\":\"int sum = 0;int count =0;if(params['_source']['Data']['history']!=null){ for (item in params['_source']['Data']['history']) {if(item.rating!=null){ sum += item.rating;} }} return sum;\"}}}}}}",
        "requestQueryMap": "{\"wardId\" : \"Data.ward.name.keyword\", \"tenantId\" : \"Data.tenantData.code\" ,  \"district\" : \"Data.tenantData.city.districtCode\"}",
        "dateRefField": "Data.fsm.@timestamp"
      }
    ],
    "chartType": "metric",
    "valueType": "number",
    "action": "",
    "drillChart": "none",
    "documentType": "_doc",
    "aggregationPaths": [
      "Citizen Average Rating"
    ],
    "postAggregationTheory": "",
    "insight": {},
    "_comment": " Citizen Average rating"
  },
  "fsmCollectionByUsageType": {
    "chartName": "DSS_FSM_COLLECTION_BY_USAGE_TYPE",
    "queries": [
      {
        "module": "FSM",
        "dateRefField": "Data.fsm.@timestamp",
        "requestQueryMap": "{\"wardId\" : \"Data.ward.name.keyword\", \"tenantId\" : \"Data.tenantData.code\" ,  \"district\" : \"Data.tenantData.city.districtCode\"}",
        "indexName": "fsm",
        "aggrQuery": "{\"aggs\":{\"AGGR\":{\"filter\":{\"bool\":{\"must_not\":[{\"term\":{\"Data.fsm.tenantId.keyword\":\"pb.testing\"}}]}},\"aggs\":{\"Usage Type\":{\"terms\":{\"field\":\"Data.fsm.propertyUsage.keyword\"},\"aggs\":{\"Assessed Properties\":{\"sum\":{\"field\":\"Data.payments.paymentDetails.bill.billDetails.amountPaid\"}}}}}}}}"
      }
    ],
    "chartType": "pie",
    "valueType": "amount",
    "action": "",
    "documentType": "_doc",
    "drillChart": "none",
    "aggregationPaths": [
      "Usage Type"
    ],
    "insight": {
    },
    "_comment": " "
  },
  "fsmTotalCumulativeCollection": {
    "chartName": "DSS_FSM_TOTAL_CUMULATIVE_COLLECTION",
    "queries": [
      {
        "module": "FSM",
        "dateRefField": "Data.fsm.@timestamp",
        "requestQueryMap": "{\"wardId\" : \"Data.ward.name.keyword\", \"tenantId\" : \"Data.tenantData.code\" ,  \"district\" : \"Data.tenantData.city.districtCode\"}",
        "indexName": "fsm",
        "aggrQuery": "{\"aggs\":{\"AGGR\":{\"filter\":{\"bool\":{\"must_not\":[{\"term\":{\"Data.fsm.tenantId.keyword\":\"pb.testing\"}}]}},\"aggs\":{\"Total Collection\":{\"date_histogram\":{\"field\":\"Data.fsm.@timestamp\",\"interval\":\"intervalvalue\"},\"aggs\":{\"Count\":{\"sum\":{\"field\":\"Data.payments.paymentDetails.bill.billDetails.amountPaid\"}}}}}}}}"
      }
    ],
    "chartType": "line",
    "valueType": "amount",
    "action": "",
    "drillChart": "none",
    "documentType": "_doc",
    "aggregationPaths": [
      "Total Collection"
    ],
    "isCumulative": true,
    "interval": "month",
    "insight": {
    },
    "_comment": " "
  },
  "fsmTopUlbByPerformance": {
    "chartName": "DSS_FSM_TOP_ULB_BY_PERFORMANCE",
    "queries": [
      {
        "module": "FSM",
        "dateRefField": "Data.fsm.@timestamp",
        "requestQueryMap": "{\"wardId\" : \"Data.ward.name.keyword\", \"tenantId\" : \"Data.tenantData.code\" ,  \"district\" : \"Data.tenantData.city.districtCode\"}",
        "indexName": "fsm",
        "aggrQuery": "{\"aggs\":{\"AGGR\":{\"filter\":{\"bool\":{\"must_not\":[{\"term\":{\"Data.fsm.tenantId.keyword\":\"pb.testing\"}}]}},\"aggs\":{\"Closed With In Sla\":{\"filter\":{\"bool\":{\"must\":[{\"terms\":{\"Data.fsm.applicationStatus.keyword\":[\"COMPLETED\",\"CITIZEN_FEEDBACK_PENDING\"]}},{\"script\":{\"script\":{\"source\":\"doc['Data.fsm.auditDetails.lastModifiedTime'].value - doc['Data.fsm.auditDetails.createdTime'].value < params.threshold\",\"lang\":\"painless\",\"params\":{\"threshold\":172800000}}}}]}},\"aggs\":{\"count\":{\"terms\":{\"field\":\"Data.fsm.tenantId.keyword\"},\"aggs\":{\"tenant_count\":{\"value_count\":{\"field\":\"Data.fsm.tenantId.keyword\"}}}}}},\"Total Applications\":{\"terms\":{\"field\":\"Data.fsm.tenantId.keyword\"},\"aggs\":{\"tenant_count\":{\"value_count\":{\"field\":\"Data.fsm.tenantId.keyword\"}}}}}}}}"
      }
    ],
    "chartType": "perform",
    "valueType": "percentage",
    "drillChart": "none",
    "documentType": "_doc",
    "drillChart": "ulbTopDrillChart",
    "action": "percentage",
    "plotLabel": "DSS_COMPLETION_RATE",
    "isRoundOff": true,
    "order": "desc",
    "limit": 3,
    "aggregationPaths": [
      "Closed With In Sla",
      "Total Applications"
    ],
    "isCumulative": false,
    "interval": "month",
    "insight": {
    },
    "_comment": ""
  },
  "ulbTopDrillChart": {
    "chartName": "DSS_FSM_ULB_PERFORMANCE",
    "queries": [
      {
        "module": "FSM",
        "dateRefField": "Data.fsm.@timestamp",
        "requestQueryMap": "{\"wardId\" : \"Data.ward.name.keyword\", \"tenantId\" : \"Data.tenantData.code\" ,  \"district\" : \"Data.tenantData.city.districtCode\"}",
        "indexName": "fsm",
        "aggrQuery": "{\"aggs\":{\"AGGR\":{\"filter\":{\"bool\":{\"must_not\":[{\"term\":{\"data.fsm.tenantId.keyword\":\"pb.testing\"}}]}},\"aggs\":{\"ULB\":{\"terms\":{\"field\":\"Data.fsm.tenantId.keyword\",\"size\":1000,\"order\":{\"_count\":\"desc\"}},\"aggs\":{\"TotalRequests\":{\"value_count\":{\"field\":\"Data.fsm.tenantId.keyword\"}},\"ClosedWithInSLA\":{\"filter\":{\"bool\":{\"must\":[{\"terms\":{\"Data.fsm.applicationStatus.keyword\":[\"COMPLETED\",\"CITIZEN_FEEDBACK_PENDING\"]}},{\"script\":{\"script\":{\"source\":\"doc['Data.fsm.auditDetails.lastModifiedTime'].value - doc['Data.fsm.auditDetails.createdTime'].value < params.threshold\",\"lang\":\"painless\",\"params\":{\"threshold\":172800000}}}}]}},\"aggs\":{\"valueCount\":{\"value_count\":{\"field\":\"Data.fsm.tenantId.keyword\"}}}},\"ClosedOutsideSLA\":{\"filter\":{\"bool\":{\"must\":[{\"terms\":{\"Data.fsm.applicationStatus.keyword\":[\"COMPLETED\",\"CITIZEN_FEEDBACK_PENDING\"]}},{\"script\":{\"script\":{\"source\":\"doc['Data.fsm.auditDetails.lastModifiedTime'].value - doc['Data.fsm.auditDetails.createdTime'].value > params.threshold\",\"lang\":\"painless\",\"params\":{\"threshold\":172800000}}}}]}},\"aggs\":{\"valueCount\":{\"value_count\":{\"field\":\"Data.fsm.tenantId.keyword\"}}}},\"CitizenAverageRating\":{\"filter\":{\"bool\":{\"must\":[{\"terms\":{\"Data.fsm.applicationStatus.keyword\":[\"COMPLETED\"]}},{\"term\":{\"Data.history.action.keyword\":\"RATE\"}},{\"exists\":{\"field\":\"Data.history\"}},{\"range\":{\"Data.history.rating\":{\"gte\":1}}}]}},\"aggs\":{\"CitizenAvgRating\":{\"avg\":{\"script\":\"int sum = 0;int count =0;if(params['_source']['Data']['history']!=null){ for (item in params['_source']['Data']['history']) {if(item.rating!=null){ sum += item.rating;} }} return sum;\"}}}}}}}}}}"
      }
    ],
   "filterKeys": [
      {"key": "tenantId", "column": "ULB"}
    ],
    "isPostResponseHandler": true,
    "chartType": "table",
    "valueType": "number",
    "action": "",
    "documentType": "_doc",
    "drillChart": "none",
    "plotLabel":"ULB",
    "aggregationPaths": [
      "TotalRequests",
      "ClosedWithInSLA",
      "ClosedOutsideSLA",
      "CitizenAverageRating"
    ],
    "pathDataTypeMapping": [
      {
        "TotalRequests" : "number"
      },
      {
        "ClosedWithInSLA" : "number"
      },
      {
        "ClosedOutsideSLA" : "number"
      },
      {
        "CitizenAverageRating" : "number"
      }
    ],
    "isCumulative": true,
    "interval": "month",
    "insight": {
    },
    "_comment": " "
  },
  "fsmBottomUlbByPerformance": {
    "chartName": "DSS_FSM_BOTTOM_ULB_BY_PERFORMANCE",
    "queries": [
      {
        "module": "FSM",
        "dateRefField": "Data.fsm.@timestamp",
        "requestQueryMap": "{\"wardId\" : \"Data.ward.name.keyword\", \"tenantId\" : \"Data.tenantData.code\" ,  \"district\" : \"Data.tenantData.city.districtCode\"}",
        "indexName": "fsm",
        "aggrQuery": "{\"aggs\":{\"AGGR\":{\"filter\":{\"bool\":{\"must_not\":[{\"term\":{\"Data.fsm.tenantId.keyword\":\"pb.testing\"}}]}},\"aggs\":{\"Closed With In Sla\":{\"filter\":{\"bool\":{\"must\":[{\"terms\":{\"Data.fsm.applicationStatus.keyword\":[\"COMPLETED\",\"CITIZEN_FEEDBACK_PENDING\"]}},{\"script\":{\"script\":{\"source\":\"doc['Data.fsm.auditDetails.lastModifiedTime'].value - doc['Data.fsm.auditDetails.createdTime'].value < params.threshold\",\"lang\":\"painless\",\"params\":{\"threshold\":172800000}}}}]}},\"aggs\":{\"count\":{\"terms\":{\"field\":\"Data.fsm.tenantId.keyword\"},\"aggs\":{\"tenant_count\":{\"value_count\":{\"field\":\"Data.fsm.tenantId.keyword\"}}}}}},\"Total Applications\":{\"terms\":{\"field\":\"Data.fsm.tenantId.keyword\"},\"aggs\":{\"tenant_count\":{\"value_count\":{\"field\":\"Data.fsm.tenantId.keyword\"}}}}}}}}"
      }
    ],
    "chartType": "perform",
    "valueType": "percentage",
    "drillChart": "none",
    "documentType": "_doc",
    "drillChart": "ulbBottomDrillChart",
    "action": "percentage",
    "isRoundOff": true,
    "plotLabel": "DSS_COMPLETION_RATE",
    "order": "asc",
    "limit": 3,
    "aggregationPaths": [
      "Closed With In Sla",
      "Total Applications"
    ],
    "isCumulative": false,
    "interval": "month",
    "insight": {
    },
    "_comment": ""
  },
  "ulbBottomDrillChart": {
    "chartName": "DSS_FSM_ULB_PERFORMANCE",
    "queries": [
      {
        "module": "FSM",
        "dateRefField": "Data.fsm.@timestamp",
        "requestQueryMap": "{\"wardId\" : \"Data.ward.name.keyword\", \"tenantId\" : \"Data.tenantData.code\" ,  \"district\" : \"Data.tenantData.city.districtCode\"}",
        "indexName": "fsm",
        "aggrQuery": "{\"aggs\":{\"AGGR\":{\"filter\":{\"bool\":{\"must_not\":[{\"term\":{\"data.fsm.tenantId.keyword\":\"pb.testing\"}}]}},\"aggs\":{\"ULB\":{\"terms\":{\"field\":\"Data.fsm.tenantId.keyword\",\"size\":1000,\"order\":{\"_count\":\"asc\"}},\"aggs\":{\"TotalRequests\":{\"value_count\":{\"field\":\"Data.fsm.tenantId.keyword\"}},\"ClosedWithInSLA\":{\"filter\":{\"bool\":{\"must\":[{\"terms\":{\"Data.fsm.applicationStatus.keyword\":[\"COMPLETED\",\"CITIZEN_FEEDBACK_PENDING\"]}},{\"script\":{\"script\":{\"source\":\"doc['Data.fsm.auditDetails.lastModifiedTime'].value - doc['Data.fsm.auditDetails.createdTime'].value < params.threshold\",\"lang\":\"painless\",\"params\":{\"threshold\":172800000}}}}]}},\"aggs\":{\"valueCount\":{\"value_count\":{\"field\":\"Data.fsm.tenantId.keyword\"}}}},\"ClosedOutsideSLA\":{\"filter\":{\"bool\":{\"must\":[{\"terms\":{\"Data.fsm.applicationStatus.keyword\":[\"COMPLETED\",\"CITIZEN_FEEDBACK_PENDING\"]}},{\"script\":{\"script\":{\"source\":\"doc['Data.fsm.auditDetails.lastModifiedTime'].value - doc['Data.fsm.auditDetails.createdTime'].value > params.threshold\",\"lang\":\"painless\",\"params\":{\"threshold\":172800000}}}}]}},\"aggs\":{\"valueCount\":{\"value_count\":{\"field\":\"Data.fsm.tenantId.keyword\"}}}},\"CitizenAverageRating\":{\"filter\":{\"bool\":{\"must\":[{\"terms\":{\"Data.fsm.applicationStatus.keyword\":[\"COMPLETED\"]}},{\"term\":{\"Data.history.action.keyword\":\"RATE\"}},{\"exists\":{\"field\":\"Data.history\"}},{\"range\":{\"Data.history.rating\":{\"gte\":1}}}]}},\"aggs\":{\"CitizenAvgRating\":{\"avg\":{\"script\":\"int sum = 0;int count =0;if(params['_source']['Data']['history']!=null){ for (item in params['_source']['Data']['history']) {if(item.rating!=null){ sum += item.rating;} }} return sum;\"}}}}}}}}}}"
      }
    ],
   "filterKeys": [
      {"key": "tenantId", "column": "ULB"}
    ],
    "isPostResponseHandler": true,
    "chartType": "table",
    "valueType": "number",
    "action": "",
    "documentType": "_doc",
    "drillChart": "none",
    "plotLabel":"ULB",
    "aggregationPaths": [
      "TotalRequests",
      "ClosedWithInSLA",
      "ClosedOutsideSLA",
      "CitizenAverageRating"
    ],
    "pathDataTypeMapping": [
      {
        "TotalRequests" : "number"
      },
      {
        "ClosedWithInSLA" : "number"
      },
      {
        "ClosedOutsideSLA" : "number"
      },
      {
        "CitizenAverageRating" : "number"
      }
    ],
    "isCumulative": true,
    "interval": "month",
    "insight": {
    },
    "_comment": " "
  },
  "fsmCapacityUtilization": {
    "chartName": "DSS_FSTP_CAPACITY_UTILIZATION",
    "queries": [
      {
        "module": "FSM",
        "dateRefField": "Data.vehicleTrip.@timestamp",
        "requestQueryMap": "{\"wardId\" : \"Data.ward.name.keyword\", \"tenantId\" : \"Data.tenantData.code\" ,  \"district\" : \"Data.tenantData.city.districtCode\"}",
        "indexName": "vehicletrip",
        "aggrQuery": "{\"aggs\":{\"AGGR\":{\"filter\":{\"bool\":{\"must_not\":[{\"term\":{\"Data.vehicleTrip.tenantId.keyword\":\"pb.testing\"}}]}},\"aggs\":{\"Capacity Utilization\":{\"date_histogram\":{\"field\":\"Data.vehicleTrip.@timestamp\",\"interval\":\"month\"},\"aggs\":{\"Count\":{\"sum\":{\"script\":{\"source\":\"(doc['Data.vehicleTrip.volumeCarried'].value)/1000.0\"}}}}}}}}}"
      }
    ],
    "chartType": "line",
    "valueType": "amount",
    "action": "",
    "isRoundOff": true,
    "documentType": "_doc",
    "drillChart": "none",
    "aggregationPaths": [
      "Capacity Utilization"
    ],
    "isCumulative": true,
    "interval": "month",
    "insight": {
    },
    "_comment": " "
  },
  "fsmMonthlyWasteCal": {
    "chartName": "DSS_FSM_MONTHLY_WASTE_CAL",
    "queries": [
      {
        "module": "FSM",
        "dateRefField": "Data.vehicleTrip.@timestamp",
        "requestQueryMap": "{\"wardId\" : \"Data.ward.name.keyword\", \"tenantId\" : \"Data.tenantData.code\" ,  \"district\" : \"Data.tenantData.city.districtCode\"}",
        "indexName": "vehicletrip",
        "aggrQuery": "{\"aggs\":{\"AGGR\":{\"filter\":{\"bool\":{\"must_not\":[{\"term\":{\"Data.vehicleTrip.tenantId.keyword\":\"pb.testing\"}}]}},\"aggs\":{\"Septage Dumped At Plant\":{\"date_histogram\":{\"field\":\"Data.vehicleTrip.@timestamp\",\"interval\":\"month\"},\"aggs\":{\"Count\":{\"sum\":{\"script\":{\"source\":\"(doc['Data.vehicleTrip.volumeCarried'].value)/1000.0\"}}}}},\"Septage Collected\":{\"date_histogram\":{\"field\":\"Data.vehicleTrip.@timestamp\",\"interval\":\"month\"},\"aggs\":{\"Count\":{\"sum\":{\"script\":{\"source\":\"(doc['Data.vehicleTrip.tripDetails.volume'].value)/1000.0\"}}}}}}}}}"
      }
    ],
    "chartType": "line",
    "valueType": "number",
    "action": "",
    "isRoundOff": true,
    "documentType": "_doc",
    "drillChart": "none",
    "aggregationPaths": [
      "Septage Collected",
      "Septage Dumped At Plant"
    ],
    "isCumulative": false,
    "interval": "month",
    "insight": {
    },
    "_comment": " "
  },
  "fsmTopDsoByPerformance": {
    "chartName": "DSS_FSM_TOP_DSO_BY_PERFORMANCE",
    "queries": [
      {
        "module": "FSM",
        "dateRefField": "Data.fsm.@timestamp",
        "requestQueryMap": "{\"wardId\" : \"Data.ward.name.keyword\", \"tenantId\" : \"Data.tenantData.code\" ,  \"district\" : \"Data.tenantData.city.districtCode\"}",
        "indexName": "fsm",
        "aggrQuery": "{\"aggs\":{\"AGGR\":{\"filter\":{\"bool\":{\"must_not\":[{\"term\":{\"Data.fsm.tenantId.keyword\":\"pb.testing\"}}]}},\"aggs\":{\"Raised\":{\"terms\":{\"field\":\"Data.vendor.name.keyword\",\"size\":3,\"order\":{\"_count\":\"desc\"}},\"aggs\":{\"Count\":{\"value_count\":{\"field\":\"Data.vendor.name.keyword\"}}}},\"Closed Within SLA\":{\"terms\":{\"field\":\"Data.vendor.name.keyword\",\"size\":3,\"order\":{\"_count\":\"desc\"}},\"aggs\":{\"Count\":{\"filter\":{\"bool\":{\"must\":[{\"terms\":{\"Data.fsm.applicationStatus.keyword\":[\"COMPLETED\",\"CITIZEN_FEEDBACK_PENDING\"]}},{\"script\":{\"script\":{\"source\":\"doc['Data.fsm.auditDetails.lastModifiedTime'].value - doc['Data.fsm.auditDetails.createdTime'].value < params.threshold\",\"lang\":\"painless\",\"params\":{\"threshold\":172800000}}}}]}},\"aggs\":{\"valueCount\":{\"value_count\":{\"field\":\"Data.vendor.name.keyword\"}}}}}},\"Closed Outside SLA\":{\"terms\":{\"field\":\"Data.vendor.name.keyword\",\"size\":3,\"order\":{\"_count\":\"desc\"}},\"aggs\":{\"Count\":{\"filter\":{\"bool\":{\"must\":[{\"terms\":{\"Data.fsm.applicationStatus.keyword\":[\"COMPLETED\",\"CITIZEN_FEEDBACK_PENDING\"]}},{\"script\":{\"script\":{\"source\":\"doc['Data.fsm.auditDetails.lastModifiedTime'].value - doc['Data.fsm.auditDetails.createdTime'].value > params.threshold\",\"lang\":\"painless\",\"params\":{\"threshold\":172800000}}}}]}},\"aggs\":{\"valueCount\":{\"value_count\":{\"field\":\"Data.vendor.name.keyword\"}}}}}}}}}}"
      }
    ],
    "chartType": "line",
    "valueType": "number",
    "action": "",
    "drillChart": "dsoTopDrillChart",
    "documentType": "_doc",
    "aggregationPaths": [
      "Raised",
      "Closed Within SLA",
      "Closed Outside SLA"
    ],
    "isCumulative": false,
    "interval": "month",
    "insight": {
    },
    "_comment": ""
  },
  "dsoTopDrillChart": {
    "chartName": "DSS_FSM_DSO_PERFORMANCE",
    "queries": [
      {
        "module": "FSM",
        "dateRefField": "Data.fsm.@timestamp",
        "requestQueryMap": "{\"wardId\" : \"Data.ward.name.keyword\", \"tenantId\" : \"Data.tenantData.code\" ,  \"district\" : \"Data.tenantData.city.districtCode\"}",
        "indexName": "fsm",
        "aggrQuery": "{\"aggs\":{\"AGGR\":{\"filter\":{\"bool\":{\"must_not\":[{\"term\":{\"data.fsm.tenantId.keyword\":\"pb.testing\"}}]}},\"aggs\":{\"DSOName\":{\"terms\":{\"field\":\"Data.vendor.name.keyword\",\"size\":1000,\"order\":{\"_count\":\"desc\"}},\"aggs\":{\"TotalRequest\":{\"value_count\":{\"field\":\"Data.vendor.name.keyword\"}},\"ClosedWithinSLA\":{\"filter\":{\"bool\":{\"must\":[{\"terms\":{\"Data.fsm.applicationStatus.keyword\":[\"COMPLETED\",\"CITIZEN_FEEDBACK_PENDING\"]}},{\"script\":{\"script\":{\"source\":\"doc['Data.fsm.auditDetails.lastModifiedTime'].value - doc['Data.fsm.auditDetails.createdTime'].value < params.threshold\",\"lang\":\"painless\",\"params\":{\"threshold\":172800000}}}}]}},\"aggs\":{\"valueCount\":{\"value_count\":{\"field\":\"Data.vendor.name.keyword\"}}}},\"ClosedOutsideSLA\":{\"filter\":{\"bool\":{\"must\":[{\"terms\":{\"Data.fsm.applicationStatus.keyword\":[\"COMPLETED\",\"CITIZEN_FEEDBACK_PENDING\"]}},{\"script\":{\"script\":{\"source\":\"doc['Data.fsm.auditDetails.lastModifiedTime'].value - doc['Data.fsm.auditDetails.createdTime'].value > params.threshold\",\"lang\":\"painless\",\"params\":{\"threshold\":172800000}}}}]}},\"aggs\":{\"valueCount\":{\"value_count\":{\"field\":\"Data.vendor.name.keyword\"}}}},\"CitizenAverageRating\":{\"filter\":{\"bool\":{\"must\":[{\"terms\":{\"Data.fsm.applicationStatus.keyword\":[\"COMPLETED\"]}},{\"term\":{\"Data.history.action.keyword\":\"RATE\"}},{\"exists\":{\"field\":\"Data.history\"}},{\"range\":{\"Data.history.rating\":{\"gte\":1}}}]}},\"aggs\":{\"CitizenAvgRating\":{\"avg\":{\"script\":\"int sum = 0;int count =0;if(params['_source']['Data']['history']!=null){ for (item in params['_source']['Data']['history']) {if(item.rating!=null){ sum += item.rating;} }} return sum;\"}}}}}}}}}}"
      }
    ],
    "filterKeys": [
      {"key": "dsoName", "column": "DSOName"}
    ],
    "isPostResponseHandler": true,
    "chartType": "table",
    "valueType": "number",
    "action": "",
    "documentType": "_doc",
    "drillChart": "none",
    "plotLabel":"DSOName",
    "aggregationPaths": [
      "TotalRequest",
      "ClosedWithinSLA",
      "ClosedOutsideSLA",
      "CitizenAverageRating"
    ],
    "pathDataTypeMapping": [
      {
        "TotalRequest" : "number"
      },
      {
        "ClosedWithinSLA" : "number"
      },
        {
        "ClosedOutsideSLA" : "number"
      },
      {
        "CitizenAverageRating" : "number"
      }
    ],
    "isCumulative": true,
    "interval": "month",
    "insight": {
    },
    "_comment": " "
  },
  "fsmBottomDsoByPerformance": {
    "chartName": "DSS_FSM_BOTTOM_DSO_BY_PERFORMANCE",
    "queries": [
      {
        "module": "FSM",
        "dateRefField": "Data.fsm.@timestamp",
        "requestQueryMap": "{\"wardId\" : \"Data.ward.name.keyword\", \"tenantId\" : \"Data.tenantData.code\" ,  \"district\" : \"Data.tenantData.city.districtCode\"}",
        "indexName": "fsm",
        "aggrQuery": "{\"aggs\":{\"AGGR\":{\"filter\":{\"bool\":{\"must_not\":[{\"term\":{\"Data.fsm.tenantId.keyword\":\"pb.testing\"}}]}},\"aggs\":{\"Raised\":{\"terms\":{\"field\":\"Data.vendor.name.keyword\",\"size\":3,\"order\":{\"_count\":\"asc\"}},\"aggs\":{\"Count\":{\"value_count\":{\"field\":\"Data.vendor.name.keyword\"}}}},\"Closed Within SLA\":{\"terms\":{\"field\":\"Data.vendor.name.keyword\",\"size\":3,\"order\":{\"_count\":\"asc\"}},\"aggs\":{\"Count\":{\"filter\":{\"bool\":{\"must\":[{\"terms\":{\"Data.fsm.applicationStatus.keyword\":[\"COMPLETED\",\"CITIZEN_FEEDBACK_PENDING\"]}},{\"script\":{\"script\":{\"source\":\"doc['Data.fsm.auditDetails.lastModifiedTime'].value - doc['Data.fsm.auditDetails.createdTime'].value < params.threshold\",\"lang\":\"painless\",\"params\":{\"threshold\":172800000}}}}]}},\"aggs\":{\"valueCount\":{\"value_count\":{\"field\":\"Data.vendor.name.keyword\"}}}}}},\"Closed Outside SLA\":{\"terms\":{\"field\":\"Data.vendor.name.keyword\",\"size\":3,\"order\":{\"_count\":\"asc\"}},\"aggs\":{\"Count\":{\"filter\":{\"bool\":{\"must\":[{\"terms\":{\"Data.fsm.applicationStatus.keyword\":[\"COMPLETED\",\"CITIZEN_FEEDBACK_PENDING\"]}},{\"script\":{\"script\":{\"source\":\"doc['Data.fsm.auditDetails.lastModifiedTime'].value - doc['Data.fsm.auditDetails.createdTime'].value > params.threshold\",\"lang\":\"painless\",\"params\":{\"threshold\":172800000}}}}]}},\"aggs\":{\"valueCount\":{\"value_count\":{\"field\":\"Data.vendor.name.keyword\"}}}}}}}}}}"
      }
    ],
    "chartType": "line",
    "valueType": "number",
    "action": "",
    "drillChart": "dsoBottomDrillChart",
    "documentType": "_doc",
    "aggregationPaths": [
      "Raised",
      "Closed Within SLA",
      "Closed Outside SLA"
    ],
    "isCumulative": false,
    "interval": "month",
    "insight": {
    },
    "_comment": ""
  },
  "dsoBottomDrillChart": {
    "chartName": "DSS_FSM_DSO_PERFORMANCE",
    "queries": [
      {
        "module": "FSM",
        "dateRefField": "Data.fsm.@timestamp",
        "requestQueryMap": "{\"wardId\" : \"Data.ward.name.keyword\", \"tenantId\" : \"Data.tenantData.code\" ,  \"district\" : \"Data.tenantData.city.districtCode\"}",
        "indexName": "fsm",
        "aggrQuery": "{\"aggs\":{\"AGGR\":{\"filter\":{\"bool\":{\"must_not\":[{\"term\":{\"data.fsm.tenantId.keyword\":\"pb.testing\"}}]}},\"aggs\":{\"DSOName\":{\"terms\":{\"field\":\"Data.vendor.name.keyword\",\"size\":1000,\"order\":{\"_count\":\"asc\"}},\"aggs\":{\"TotalRequest\":{\"value_count\":{\"field\":\"Data.vendor.name.keyword\"}},\"ClosedWithinSLA\":{\"filter\":{\"bool\":{\"must\":[{\"terms\":{\"Data.fsm.applicationStatus.keyword\":[\"COMPLETED\",\"CITIZEN_FEEDBACK_PENDING\"]}},{\"script\":{\"script\":{\"source\":\"doc['Data.fsm.auditDetails.lastModifiedTime'].value - doc['Data.fsm.auditDetails.createdTime'].value < params.threshold\",\"lang\":\"painless\",\"params\":{\"threshold\":172800000}}}}]}},\"aggs\":{\"valueCount\":{\"value_count\":{\"field\":\"Data.vendor.name.keyword\"}}}},\"ClosedOutsideSLA\":{\"filter\":{\"bool\":{\"must\":[{\"terms\":{\"Data.fsm.applicationStatus.keyword\":[\"COMPLETED\",\"CITIZEN_FEEDBACK_PENDING\"]}},{\"script\":{\"script\":{\"source\":\"doc['Data.fsm.auditDetails.lastModifiedTime'].value - doc['Data.fsm.auditDetails.createdTime'].value > params.threshold\",\"lang\":\"painless\",\"params\":{\"threshold\":172800000}}}}]}},\"aggs\":{\"valueCount\":{\"value_count\":{\"field\":\"Data.vendor.name.keyword\"}}}},\"CitizenAverageRating\":{\"filter\":{\"bool\":{\"must\":[{\"terms\":{\"Data.fsm.applicationStatus.keyword\":[\"COMPLETED\"]}},{\"term\":{\"Data.history.action.keyword\":\"RATE\"}},{\"exists\":{\"field\":\"Data.history\"}},{\"range\":{\"Data.history.rating\":{\"gte\":1}}}]}},\"aggs\":{\"CitizenAvgRating\":{\"avg\":{\"script\":\"int sum = 0;int count =0;if(params['_source']['Data']['history']!=null){ for (item in params['_source']['Data']['history']) {if(item.rating!=null){ sum += item.rating;} }} return sum;\"}}}}}}}}}}"
      }
    ],
    "filterKeys": [
      {"key": "dsoName", "column": "DSOName"}
    ],
    "isPostResponseHandler": true,
    "chartType": "table",
    "valueType": "number",
    "action": "",
    "documentType": "_doc",
    "drillChart": "none",
    "plotLabel":"DSOName",
    "aggregationPaths": [
      "TotalRequest",
      "ClosedWithinSLA",
      "ClosedOutsideSLA",
      "CitizenAverageRating"
    ],
    "pathDataTypeMapping": [
      {
        "TotalRequest" : "number"
      },
      {
        "ClosedWithinSLA" : "number"
      },
      {
        "ClosedOutsideSLA" : "number"
      },
      {
        "CitizenAverageRating" : "number"
      }
    ],
    "isCumulative": true,
    "interval": "month",
    "insight": {
    },
    "_comment": " "
  },
  "fsmTotalReqByDistrict": {
    "chartName": "DSS_FSM_TOTAL_REQ_BY_DISTRICT",
    "queries": [
      {
        "module": "FSM",
        "dateRefField": "Data.fsm.@timestamp",
        "requestQueryMap": "{\"wardId\" : \"Data.ward.name.keyword\", \"tenantId\" : \"Data.tenantData.code\" ,  \"district\" : \"Data.tenantData.city.districtName\"}",
        "indexName": "fsm",
        "aggrQuery": "{\"aggs\":{\"AGGR\":{\"filter\":{\"bool\":{\"must_not\":[{\"term\":{\"Data.fsm.tenantId.keyword\":\"pb.testing\"}}]}},\"aggs\":{\"Open_Req\":{\"filter\":{\"bool\":{\"must_not\":[{\"terms\":{\"Data.fsm.applicationStatus.keyword\":[\"COMPLETED\",\"CITIZEN_FEEDBACK_PENDING\"]}}]}},\"aggs\":{\"OpenReq\":{\"value_count\":{\"field\":\"Data.fsm.tenantId.keyword\"}}}},\"Closed_Req\":{\"filter\":{\"bool\":{\"must\":[{\"terms\":{\"Data.fsm.applicationStatus.keyword\":[\"COMPLETED\",\"CITIZEN_FEEDBACK_PENDING\"]}}]}},\"aggs\":{\"ClosedReq\":{\"value_count\":{\"field\":\"Data.fsm.tenantId.keyword\"}}}},\"TotalReq\":{\"value_count\":{\"field\":\"Data.fsm.tenantId.keyword\"}},\"Closed_With_In_Sla\":{\"filter\":{\"bool\":{\"must\":[{\"terms\":{\"Data.fsm.applicationStatus.keyword\":[\"COMPLETED\",\"CITIZEN_FEEDBACK_PENDING\"]}},{\"script\":{\"script\":{\"source\":\"doc['Data.fsm.auditDetails.lastModifiedTime'].value - doc['Data.fsm.auditDetails.createdTime'].value < params.threshold\",\"lang\":\"painless\",\"params\":{\"threshold\":172800000}}}}]}},\"aggs\":{\"ClosedWithInSla\":{\"value_count\":{\"field\":\"Data.fsm.tenantId.keyword\"}}}},\"TotalCollection\":{\"sum\":{\"field\":\"Data.payments.paymentDetails.bill.billDetails.amountPaid\"}}}}}}"
      }
    ],
    "isMdmsEnabled": true,
    "filterKeys": [
      {"key": "tenantId", "column": "District"}
    ],
    "chartType": "xtable",
    "valueType": "number",
    "isRoundOff": true,
    "drillChart": "fsmTotalReqByTenant",
    "plotLabel": "District",
    "excludedColumns": ["ClosedWithInSla"],
    "computedFields": [
      {
        "postAggregationTheory" : "",
        "actionName": "PercentageComputedField",
        "fields" : ["ClosedReq", "TotalReq"],
        "newField" : "CompletionRateIn%",
        "_comments": "fields are field names picked from its aggregation query to use post aggregation newField value with given new field name  "
      },
      {
        "postAggregationTheory" : "",
        "actionName": "PercentageComputedField",
        "fields" : ["ClosedWithInSla","TotalReq"],
        "newField" : "SLAAchievedIn%",
        "_comments": "fields are field names picked from its aggregation query to use post aggregation newField value with given new field name  "
      }
    ],
     "chartSpecificProperty": {
     "XtableColumnOrder":[
     "S.N.",
     "District",
     "OpenReq",
     "ClosedReq",
     "TotalReq",
     "CompletionRateIn%",
     "SLAAchievedIn%",
     "TotalCollection"
     ]
     },
    "insight": {
    },
    "_comment": " "
  },
  "fsmTotalReqByTenant": {
    "chartName": "DSS_FSM_TOTAL_REQ_BY_ULB",
    "queries": [
      {
        "module": "FSM",
        "dateRefField": "Data.fsm.@timestamp",
        "requestQueryMap": "{\"wardId\" : \"Data.ward.name.keyword\", \"tenantId\" : \"Data.tenantData.code\" ,  \"district\" : \"Data.tenantData.city.districtName\"}",
        "indexName": "fsm",
        "aggrQuery": "{\"aggs\":{\"AGGR\":{\"filter\":{\"bool\":{\"must_not\":[{\"term\":{\"Data.fsm.tenantId.keyword\":\"pb.testing\"}}]}},\"aggs\":{\"ULBs\":{\"terms\":{\"field\":\"Data.fsm.tenantId.keyword\",\"size\":1000},\"aggs\":{\"Open_Req\":{\"filter\":{\"bool\":{\"must_not\":[{\"terms\":{\"Data.fsm.applicationStatus.keyword\":[\"COMPLETED\",\"CITIZEN_FEEDBACK_PENDING\"]}}]}},\"aggs\":{\"OpenReq\":{\"value_count\":{\"field\":\"Data.fsm.tenantId.keyword\"}}}},\"Closed_Req\":{\"filter\":{\"bool\":{\"must\":[{\"terms\":{\"Data.fsm.applicationStatus.keyword\":[\"COMPLETED\",\"CITIZEN_FEEDBACK_PENDING\"]}}]}},\"aggs\":{\"ClosedReq\":{\"value_count\":{\"field\":\"Data.fsm.tenantId.keyword\"}}}},\"TotalReq\":{\"value_count\":{\"field\":\"Data.fsm.tenantId.keyword\"}},\"Closed_With_In_Sla\":{\"filter\":{\"bool\":{\"must\":[{\"terms\":{\"Data.fsm.applicationStatus.keyword\":[\"COMPLETED\",\"CITIZEN_FEEDBACK_PENDING\"]}},{\"script\":{\"script\":{\"source\":\"doc['Data.fsm.auditDetails.lastModifiedTime'].value - doc['Data.fsm.auditDetails.createdTime'].value < params.threshold\",\"lang\":\"painless\",\"params\":{\"threshold\":172800000}}}}]}},\"aggs\":{\"ClosedWithInSla\":{\"value_count\":{\"field\":\"Data.fsm.tenantId.keyword\"}}}},\"TotalCollection\":{\"sum\":{\"field\":\"Data.payments.paymentDetails.bill.billDetails.amountPaid\"}}}}}}}}"
      }
    ],
    "filterKeys": [
      {"key": "tenantId", "column": "ULB"}
    ],
    "chartType": "xtable",
    "valueType": "number",
    "isRoundOff": true,
    "drillChart": "fsmTotalReqByWard",
    "plotLabel": "ULB",
    "excludedColumns": ["ClosedWithInSla"],
    "computedFields": [
      {
        "postAggregationTheory" : "",
        "actionName": "PercentageComputedField",
        "fields" : ["ClosedReq", "TotalReq"],
        "newField" : "CompletionRateIn%",
        "_comments": "fields are field names picked from its aggregation query to use post aggregation newField value with given new field name  "
      },
      {
        "postAggregationTheory" : "",
        "actionName": "PercentageComputedField",
        "fields" : ["ClosedWithInSla","TotalReq"],
        "newField" : "SLAAchievedIn%",
        "_comments": "fields are field names picked from its aggregation query to use post aggregation newField value with given new field name  "
      }
    ],
    "chartSpecificProperty": {
     "XtableColumnOrder":[
     "S.N.",
     "ULB",
     "OpenReq",
     "ClosedReq",
     "TotalReq",
     "CompletionRateIn%",
     "SLAAchievedIn%",
     "TotalCollection"
     ]
     },
    "insight": {
    },
    "_comment": " "
  },
  "fsmTotalReqByWard": {
    "chartName": "DSS_FSM_TOTAL_REQ_BY_WARD",
    "queries": [
      {
        "module": "FSM",
        "dateRefField": "Data.fsm.@timestamp",
        "requestQueryMap": "{\"wardId\" : \"Data.ward.name.keyword\", \"tenantId\" : \"Data.tenantData.code\" ,  \"district\" : \"Data.tenantData.city.districtCode\"}",
        "indexName": "fsm",
        "aggrQuery": "{\"aggs\":{\"AGGR\":{\"filter\":{\"bool\":{\"must_not\":[{\"term\":{\"Data.fsm.tenantId.keyword\":\"pb.testing\"}}]}},\"aggs\":{\"Ward\":{\"terms\":{\"field\":\"Data.ward.name.keyword\",\"size\":1000},\"aggs\":{\"Open_Req\":{\"filter\":{\"bool\":{\"must_not\":[{\"terms\":{\"Data.fsm.applicationStatus.keyword\":[\"COMPLETED\",\"CITIZEN_FEEDBACK_PENDING\"]}}]}},\"aggs\":{\"OpenReq\":{\"value_count\":{\"field\":\"Data.fsm.tenantId.keyword\"}}}},\"Closed_Req\":{\"filter\":{\"bool\":{\"must\":[{\"terms\":{\"Data.fsm.applicationStatus.keyword\":[\"COMPLETED\",\"CITIZEN_FEEDBACK_PENDING\"]}}]}},\"aggs\":{\"ClosedReq\":{\"value_count\":{\"field\":\"Data.fsm.tenantId.keyword\"}}}},\"TotalReq\":{\"value_count\":{\"field\":\"Data.fsm.tenantId.keyword\"}},\"Closed_With_In_Sla\":{\"filter\":{\"bool\":{\"must\":[{\"terms\":{\"Data.fsm.applicationStatus.keyword\":[\"COMPLETED\",\"CITIZEN_FEEDBACK_PENDING\"]}},{\"script\":{\"script\":{\"source\":\"doc['Data.fsm.auditDetails.lastModifiedTime'].value - doc['Data.fsm.auditDetails.createdTime'].value < params.threshold\",\"lang\":\"painless\",\"params\":{\"threshold\":172800000}}}}]}},\"aggs\":{\"ClosedWithInSla\":{\"value_count\":{\"field\":\"Data.fsm.tenantId.keyword\"}}}},\"TotalCollection\":{\"sum\":{\"field\":\"Data.payments.paymentDetails.bill.billDetails.amountPaid\"}}}}}}}}"
      }
    ],
    "filterKeys": [
      {"key": "wardId", "column": "Ward"},
      {"key": "ulbId", "column": "ULB"}
    ],
    "chartType": "xtable",
    "valueType": "number",
    "isRoundOff": true,
    "drillChart": "none",
    "action": "",
    "documentType": "_doc",
    "plotLabel": "Ward",
    "excludedColumns": ["ClosedWithInSla"],
    "computedFields": [
      {
        "postAggregationTheory" : "",
        "actionName": "PercentageComputedField",
        "fields" : ["ClosedReq", "TotalReq"],
        "newField" : "CompletionRateIn%",
        "_comments": "fields are field names picked from its aggregation query to use post aggregation newField value with given new field name  "
      },
      {
        "postAggregationTheory" : "",
        "actionName": "PercentageComputedField",
        "fields" : ["ClosedWithInSla","TotalReq"],
        "newField" : "SLAAchievedIn%",
        "_comments": "fields are field names picked from its aggregation query to use post aggregation newField value with given new field name  "
      }
    ],
     "chartSpecificProperty": {
     "XtableColumnOrder":[
     "S.N.",
     "Ward",
     "OpenReq",
     "ClosedReq",
     "TotalReq",
     "CompletionRateIn%",
     "SLAAchievedIn%",
     "TotalCollection"
     ]
     },
    "insight": {
    },
    "_comment": " "
  },
  "fsmVehicleLogReportByDDR": {
    "chartName": "DSS_FSM_VECHILE_LOG_REPORT",
    "queries": [
      {
        "module": "FSM",
        "dateRefField": "Data.vehicleTrip.@timestamp",
        "requestQueryMap": "{\"wardId\" : \"Data.ward.name.keyword\", \"tenantId\" : \"Data.tenantData.code\" ,  \"district\" : \"Data.tenantData.city.districtName\"}",
        "indexName": "vehicletrip",
        "aggrQuery": "{\"aggs\":{\"AGGR\":{\"filter\":{\"bool\":{\"must_not\":[{\"term\":{\"data.vehicleTrip.tenantId.keyword\":\"pb.testing\"}}]}},\"aggs\":{\"NoOfTrips\":{\"value_count\":{\"field\":\"Data.vehicleTrip.@timestamp\"}},\"TotalSeptageCollected\":{\"sum\":{\"script\":{\"source\":\"(doc['Data.vehicleTrip.tripDetails.volume'].value)/1000.0\"}}},\"TotalSeptageDumped\":{\"sum\":{\"script\":{\"source\":\"(doc['Data.vehicleTrip.volumeCarried'].value)/1000.0\"}}},\"CapacityUtilization\":{\"sum\":{\"script\":{\"source\":\"(doc['Data.vehicleTrip.volumeCarried'].value)/1000.0\"}}}}}}}"
      }
    ],
    "isMdmsEnabled": true,
    "filterKeys": [
      {"key": "tenantId", "column": "District"}
    ],
    "isPostResponseHandler": true,
    "chartType": "xtable",
    "valueType": "number",
    "action": "",
    "isRoundOff": true,
    "documentType": "_doc",
    "drillChart": "fsmVehicleLogReportByTenant",
    "plotLabel":"District",
    "aggregationPaths": [
      "NoOfTrips",
      "TotalSeptageCollected",
      "TotalSeptageDumped",
      "CapacityUtilization"
    ],
    "pathDataTypeMapping": [
      {
        "NoOfTrips" : "number"
      },
      {
        "TotalSeptageCollected" : "number"
      },
      {
        "TotalSeptageDumped" : "number"
      },
      {
        "CapacityUtilization" : "number"
      }
    ],
    "isCumulative": true,
    "interval": "month",
    "insight": {
    },
    "_comment": " "
  },
  "fsmVehicleLogReportByTenant": {
    "chartName": "DSS_FSM_VECHILE_LOG_REPORT",
    "queries": [
      {
        "module": "FSM",
        "dateRefField": "Data.vehicleTrip.@timestamp",
        "requestQueryMap": "{\"wardId\" : \"Data.ward.name.keyword\", \"tenantId\" : \"Data.tenantData.code\" ,  \"district\" : \"Data.tenantData.city.districtName\"}",
        "indexName": "vehicletrip",
        "aggrQuery": "{\"aggs\":{\"AGGR\":{\"filter\":{\"bool\":{\"must_not\":[{\"term\":{\"data.vehicleTrip.tenantId.keyword\":\"pb.testing\"}}]}},\"aggs\":{\"ULBs \":{\"terms\":{\"field\":\"Data.vehicleTrip.tenantId.keyword\",\"size\":1000},\"aggs\":{\"NoOfTrips\":{\"value_count\":{\"field\":\"Data.vehicleTrip.@timestamp\"}},\"TotalSeptageCollected\":{\"sum\":{\"script\":{\"source\":\"(doc['Data.vehicleTrip.tripDetails.volume'].value)/1000.0\"}}},\"TotalSeptageDumped\":{\"sum\":{\"script\":{\"source\":\"(doc['Data.vehicleTrip.volumeCarried'].value)/1000.0\"}}},\"CapacityUtilization\":{\"sum\":{\"script\":{\"source\":\"(doc['Data.vehicleTrip.volumeCarried'].value)/1000.0\"}}}}}}}}}"
      }
    ],
    "filterKeys": [
      {"key": "tenantId", "column": "Boundary"}
    ],
    "isPostResponseHandler": true,
    "chartType": "xtable",
    "valueType": "number",
    "action": "",
    "isRoundOff": true,
    "documentType": "_doc",
    "drillChart": "fsmVehicleLogReportByVehicleNo",
    "plotLabel":"Boundary",
    "aggregationPaths": [
      "NoOfTrips",
      "TotalSeptageCollected",
      "TotalSeptageDumped",
      "CapacityUtilization"
    ],
    "pathDataTypeMapping": [
      {
        "NoOfTrips" : "number"
      },
      {
        "TotalSeptageCollected" : "number"
      },
      {
        "TotalSeptageDumped" : "number"
      },
      {
        "CapacityUtilization" : "number"
      }
    ],
    "isCumulative": true,
    "interval": "month",
    "insight": {
    },
    "_comment": " "
  },
  "fsmVehicleLogReportByVehicleNo": {
    "chartName": "DSS_FSM_VECHILE_LOG_REPORT",
    "queries": [
      {
        "module": "FSM",
        "dateRefField": "Data.vehicleTrip.@timestamp",
        "requestQueryMap": "{\"wardId\" : \"Data.ward.name.keyword\", \"tenantId\" : \"Data.tenantData.code\" ,  \"district\" : \"Data.tenantData.city.districtCode\"}",
        "indexName": "vehicletrip",
        "aggrQuery": "{\"aggs\":{\"AGGR\":{\"filter\":{\"bool\":{\"must_not\":[{\"term\":{\"data.vehicleTrip.tenantId.keyword\":\"pb.testing\"}}]}},\"aggs\":{\"Vehicle Reg No\":{\"terms\":{\"field\":\"Data.vehicleTrip.vehicle.registrationNumber.keyword\",\"size\":1000},\"aggs\":{\"NoOfTrips\":{\"value_count\":{\"field\":\"Data.vehicleTrip.@timestamp\"}},\"TotalSeptageCollected\":{\"sum\":{\"script\":{\"source\":\"(doc['Data.vehicleTrip.tripDetails.volume'].value)/1000.0\"}}},\"TotalSeptageDumped\":{\"sum\":{\"script\":{\"source\":\"(doc['Data.vehicleTrip.volumeCarried'].value)/1000.0\"}}},\"CapacityUtilization\":{\"sum\":{\"script\":{\"source\":\"(doc['Data.vehicleTrip.volumeCarried'].value)/1000.0\"}}},\"TankCapacity\":{\"sum\":{\"script\":{\"source\":\"(doc['Data.vehicleTrip.vehicle.tankCapacity'].value)/1000.0\"}}}}}}}}}"
      }
    ],
    "filterKeys": [
      {"key": "registrationNumber", "column": "Vehicle_No"},
      {"key": "wardId", "column": "Ward"},
      {"key": "ulbId", "column": "ULB"}
    ],
    "isPostResponseHandler": true,
    "chartType": "xtable",
    "valueType": "number",
    "action": "",
    "isRoundOff": true,
    "documentType": "_doc",
    "drillChart": "none",
    "plotLabel":"Vehicle_No",
    "aggregationPaths": [
      "NoOfTrips",
      "TotalSeptageCollected",
      "TotalSeptageDumped",
      "CapacityUtilization",
      "TankCapacity"
    ],
    "pathDataTypeMapping": [
      {
        "NoOfTrips" : "number"
      },
      {
        "TotalSeptageCollected" : "number"
      },
      {
        "TotalSeptageDumped" : "number"
      },
      {
        "CapacityUtilization" : "number"
      },
      {
        "TankCapacity" : "number"
      }
    ],
    "isCumulative": true,
    "interval": "month",
    "insight": {
    },
    "_comment": " "
  }

Click here to check the complete configuration

Master Dashboard Configuration

Master Dashboard Configuration is the main configuration which defines as which are the Dashboards which are to be painted on screen.

It includes all the Visualizations, their groups, the charts which comes within them and even their dimensions as what should be their height and width.

{
      "name": "DSS_FSM_DASHBOARD",
      "id": "fsm",
      "isActive": "",
      "style": "linear",
      "visualizations": [
        {
          "row": 1,
          "name": "DSS_REVENUE",
          "vizArray": [
            {
              "id": 311,
              "name": "DSS_OVERVIEW",
              "dimensions": {
                "height": 450,
                "width": 4
              },
              "vizType": "metric-collection",
              "label": "DSS_OVERVIEW",
              "noUnit": true,
              "isCollapsible": false,
              "charts": [
                {
                  "id": "fsmTotalrequest",
                  "name": "DSS_FSM_TOTAL_REQUESTS",
                  "code": "",
                  "chartType": "metric",
                  "filter": "",
                  "headers": []
                },
                {
                  "id": "totalSludgeTreated",
                  "name": "DSS_FSM_TOTAL_SLUDGE_TREATED",
                  "code": "",
                  "chartType": "metric",
                  "filter": "",
                  "headers": []
                },
                {
                  "id": "avgFSMCostRequest",
                  "name": "DSS_FSM_AVG_FSM_COST_OR_REQ",
                  "code": "",
                  "chartType": "metric",
                  "filter": "",
                  "headers": []
                },
                {
                  "id": "totalCollectioninLacs",
                  "name": "DSS_FSM_TOTAL_COLLECTION",
                  "code": "",
                  "chartType": "metric",
                  "filter": "",
                  "headers": []
                },
                {
                  "id": "slaCompliance",
                  "name": "DSS_FSM_SLA_COMPLIANCE",
                  "code": "",
                  "chartType": "metric",
                  "filter": "",
                  "headers": []
                },
                {
                  "id": "citizenAvgRating",
                  "name": "DSS_FSM_CITIZEN_AVG_RATING",
                  "code": "",
                  "chartType": "metric",
                  "filter": "",
                  "headers": []
                }
              ]
            },
            {
              "id": 322,
              "name": "DSS_FSM_TOTAL_CUMULATIVE_COLLECTION",
              "dimensions": {
                "height": 450,
                "width": 6
              },
              "vizType": "chart",
              "label": "",
              "noUnit": true,
              "isCollapsible": false,
              "charts": [
                {
                  "id": "fsmTotalCumulativeCollection",
                  "name": "Monthly",
                  "code": "",
                  "chartType": "line",
                  "filter": "",
                  "headers": []
                }
              ]
            }
          ]
        },
        {
          "row": 2,
          "name": "DSS_REVENUE",
          "vizArray": [
            {
              "id": 321,
              "name": "DSS_FSM_TOP_ULB_BY_PERFORMANCE",
              "dimensions": {
                "height": 250,
                "width": 3
              },
              "vizType": "performing-metric",
              "label": "",
              "noUnit": false,
              "isCollapsible": false,
              "charts": [
                {
                  "id": "fsmTopUlbByPerformance",
                  "name": "Monthly",
                  "code": "",
                  "chartType": "bar",
                  "filter": "",
                  "headers": []
                }
              ]
            },
            {
              "id": 322,
              "name": "DSS_FSM_BOTTOM_ULB_BY_PERFORMANCE",
              "dimensions": {
                "height": 250,
                "width": 3
              },
              "vizType": "performing-metric",
              "label": "",
              "noUnit": false,
              "isCollapsible": false,
              "charts": [
                {
                  "id": "fsmBottomUlbByPerformance",
                  "name": "Monthly",
                  "code": "",
                  "chartType": "bar",
                  "filter": "",
                  "headers": []
                }
              ]
            },
            {
              "id": 323,
              "name": "DSS_FSM_COLLECTION_BY_USAGE_TYPE",
              "dimensions": {
                "height": 250,
                "width": 4
              },
              "vizType": "chart",
              "label": "",
              "noUnit": false,
              "isCollapsible": false,
              "charts": [
                {
                  "id": "fsmCollectionByUsageType",
                  "name": "DSS_FSM_COLLECTION_BY_USAGE_TYPE",
                  "code": "",
                  "chartType": "donut",
                  "filter": "",
                  "headers": []
                }
              ]
            }
          ]
        },
        {
          "row": 3,
          "name": "DSS_REVENUE",
          "vizArray": [
            {
              "id": 325,
              "name": "DSS_FSTP_CAPACITY_UTILIZATION",
              "dimensions": {
                "height": 450,
                "width": 5
              },
              "vizType": "chart",
              "label": "",
              "noUnit": true,
              "isCollapsible": false,
              "charts": [
                {
                  "id": "fsmCapacityUtilization",
                  "name": "Monthly",
                  "code": "",
                  "chartType": "line",
                  "filter": "",
                  "headers": []
                }
              ]
            },
            {
              "id": 326,
              "name": "DSS_FSM_MONTHLY_WASTE_CAL",
              "dimensions": {
                "height": 450,
                "width": 5
              },
              "vizType": "chart",
              "label": "",
              "noUnit": true,
              "isCollapsible": false,
              "charts": [
                {
                  "id": "fsmMonthlyWasteCal",
                  "name": "Monthly",
                  "code": "",
                  "chartType": "bar",
                  "filter": "",
                  "headers": []
                }
              ]
            }
          ]
        },
        {
          "row": 4,
          "name": "DSS_REVENUE",
          "vizArray": [
            {
              "id": 327,
              "name": "DSS_FSM_TOP_DSO_BY_PERFORMANCE",
              "dimensions": {
                "height": 450,
                "width": 5
              },
              "vizType": "chart",
              "label": "",
              "noUnit": true,
              "isCollapsible": false,
              "charts": [
                {
                  "id": "fsmTopDsoByPerformance",
                  "name": "Monthly",
                  "code": "",
                  "chartType": "horizontalBar",
                  "filter": "",
                  "headers": []
                }
              ]
            },
            {
              "id": 329,
              "name": "DSS_FSM_BOTTOM_DSO_BY_PERFORMANCE",
              "dimensions": {
                "height": 450,
                "width": 5
              },
              "vizType": "chart",
              "label": "",
              "noUnit": true,
              "isCollapsible": false,
              "charts": [
                {
                  "id": "fsmBottomDsoByPerformance",
                  "name": "Monthly",
                  "code": "",
                  "chartType": "horizontalBar",
                  "filter": "",
                  "headers": []
                }
              ]
            }
          ]
        },
        {
          "row": 5,
          "name": "DSS_REVENUE",
          "vizArray": [
            {
              "id": 339,
              "name": "DSS_FSM_TOTAL_REQ_BY_DISTRICT",
              "dimensions": {
                "height": 350,
                "width": 10
              },
              "vizType": "chart",
              "label": "",
              "noUnit": false,
              "isCollapsible": true,
              "charts": [
                {
                  "id": "fsmTotalReqByDistrict",
                  "name": "DSS_FSM_TOTAL_REQ_BY_DISTRICT",
                  "code": "",
                  "chartType": "table",
                  "filter": "",
                  "headers": [],
                  "tabName": "Boundary"
                }
              ]
            }
          ]
        },
        {
          "row": 6,
          "name": "DSS_REVENUE",
          "vizArray": [
            {
              "id": 331,
              "name": "DSS_FSM_VECHILE_LOG_REPORT",
              "dimensions": {
                "height": 350,
                "width": 10
              },
              "vizType": "chart",
              "label": "",
              "noUnit": false,
              "isCollapsible": true,
              "charts": [
                {
                  "id": "fsmVehicleLogReportByDDR",
                  "name": "DSS_FSM_VECHILE_LOG_REPORT",
                  "code": "",
                  "chartType": "table",
                  "filter": "",
                  "headers": [],
                  "tabName": "Boundary"
                }
              ]
            }
          ]
        }
      ]
    },

Click here for the complete configuration.

Role Dashboard Mappings Configuration

The master dashboard configuration, which was explained earlier, holds the list of dashboards that are available.

Given the instance where role action mapping is not maintained in the application service, this configuration will act as Role - Dashboard Mapping Configuration. In this, each role is mapped against the dashboard which they are authorised to see. This was used earlier when the role action mapping of eGov was not integrated. Later, when the role action mapping started controlling the dashboards to be seen on the client side, this configuration was only used to enable the dashboards for viewing.

{
  "_comment": "Holds mapping for each role with and its associated dashboards",
  "roles" : [
    {
      "_comment":"This role is super role which can access all the available dashboards: [other/new roles are suppose to be added]",
      "roleId": 6,
      "roleName" : "Admin",
      "isSuper" : "",
      "orgId": "",
      "dashboards": [
        {
          "name": "Facial Sludge Management",
          "id": "fsm"
        }
      ]
    },
    {
      "_comment":"This role is super role which can access all the available dashboards: [other/new roles are suppose to be added]",
      "roleId": 7,
      "roleName" : "Commissioner",
      "isSuper" : "",
      "orgId": "",
      "dashboards": [
        {
          "id": "ulb-fsm"
        }
      ]
    }

  ]
}

Click here to check the configuration

MDMS Configuration to be added

common-masters/uiCommonConstants.json

"fsm":{
                 "routePath":"/dashboard/fsm",
                 "isOrigin":true
              },
              "ulb-fsm":{
                 "routePath":"/dashboard/ulb-fsm",
                 "isOrigin":true
              }

Click here to check the complete configuration.

roleaction.json

 {
      "rolecode": "STADMIN",
      "actionid": {{PlaceHolder1}},
      "actioncode": "",
      "tenantId": "pb"
    }
    
    
    {
      "rolecode": "STADMIN",
      "actionid": {{PlaceHolder2}},
      "actioncode": "",
      "tenantId": "pb"
    },
     {
      "rolecode": "EMPLOYEE",
      "actionid": {{PlaceHolder2}},
      "actioncode": "",
      "tenantId": "pb"
    },  
     {
      "rolecode": "UC_EMP",
      "actionid": {{PlaceHolder2}},
      "actioncode": "",
      "tenantId": "pb"
    },

Click here to check the complete configuration.

Action test.json:

{
      "id": {{PlaceHolder1}},
      "name": "DSS Dashboard Config Facial Sludge Management",
      "url": "/dashboard-analytics/dashboard/getDashboardConfig/fsm",
      "parentModule": "",
      "displayName": "DSS",
      "orderNumber": 0,
      "enabled": false,
      "serviceCode": "DSS",
      "code": "null",
      "path": ""
    },
  {
      "id": {{PlaceHolder2}},
      "name": "DSS Dashboard Charts",
      "url": "/dashboard-analytics/dashboard/getChartV2",
      "parentModule": "",
      "displayName": "DSS",
      "orderNumber": 0,
      "enabled": false,
      "serviceCode": "DSS",
      "code": "null",
      "path": ""
    },
    

Click here to check the complete configuration.

FSM-DSS Consists of multiple graphs which represent the data of FSM. Each graph has its own configuration which will describe the chart and its type.

DSS Consists of following charts in FSM:

  • Overview

  • Total Cumulative Collection

  • Top ULB By Performance

  • Bottom ULB by Performance

  • FSM Collection by Usage Type

  • FSTP - Capacity Utilization

  • Monthly Septage Collected

  • Top DSO By Performance

  • Bottom DSO By Performance

  • Desludging Request Report

  • Vehicle Log Report

Overview

Overview graph contains multiple data information as below in the selected time period.

  • Total requests: Which represents the number of FSM applications.

  • Total sludge treated: This represents the total sludge dumped at the yard in KL.

  • Average FSM cost: This represents the average collection amount for the FSM applications.

  • Total collection: This represents the total collection amount for the FSM applications.

  • SLA compliance: This represents the total SLA achieved in percentage.

  • Average citizen rating: This represents the citizen average rating value.

Total Cumulative Collection

This graph contains the collection amount information in the monthly base as a cumulative line graph. This will change as per the denomination amount filter selection.

Line - This graph/chart is data representation on date histograms or date groupings.

Top ULB By Performance

This graph represents the ULBs based on the SLA achieved in bar chart representation with the percentage of SLA achieved in ascending order. This chart also contains the drill-down to give the complete information regarding each ULB.

Drill chart: If there is a drill-down on the visualisation, then the code of the drill-down visualisation is added here. This will be used by client service to manage drill-downs.

This chart consists of a drill-down, so, we gave the drill-down chart key as a reference in this chart (as shown in the picture above).

Here is the drill down chart config params.

Table chart sample: This chart comes with 2 kinds: Table and xtable.

The table type allows aggregated fields added as available in the query keys. Hence, to extract the values based on the key, aggegationPaths needs to add along with their data type as in pathDataTypeMapping.

Bottom ULB by Performance

This graph represents the ULB’s based on the SLA achieved in bar chart representation with the percentage of SLA achieved in descending order. This chart also contains the drill-down to give the complete information regarding each ULB.

When you click on "Show More," you will navigate to a tabular chart of the bottom ULB by performance.

FSM Collection by Usage Type

This graph shows the collection amount based on the usage/property type, and this amount will change as per the denomination filter change. This also shows the percentage of the top four properties; the remaining properties will go under the 'Others' category.

FSTP - Capacity Utilisation

This graph is in the line chart representation, and shows the data in cumulative format. It contains the information about the waste collecting plant capacity utilisation in percentage as well as the total waste dumped at plant in KL at the top of the graph.

Monthly Septage Collected

This graph shows the data in horizontal bar representation, and the bars contain data monthly wide as well as non-cumulative data. This graph contains the monthly information of septage collected and dumped at the plant in KL.

Top DSO By Performance

This graph represents the DSOs based on the number of DSO requests and on SLA achievement in bar chart representation in ascending order. This chart also contains the drill-down to give the complete information regarding each DSO.

When you click on "Show More", you can see the details of the available DSOs under the selected ULB.

Bottom DSO By Performance

This graph represents the DSOs based on the number of DSO requests and on SLA achievement in bar chart representation in descending order. This chart also contains the drill-down to give the complete information regarding each DSO.

This is the bottom DSO drill-down chart which represents the table chart type.

When you click on "Show More", you can see the details of the available DSOs under the selected ULB.

Desludging Request Report

This tabular chart representation graph shows multiple FSM information, such as the number of open application requests, closed requests, total requests, completion rate in percentage, SLA achieved in percentage, and total collection amount. This table shows the data at the district-level and also has the drill-down chart from each district to ULB, as well from ULB to the ward-level data for the same.

The xtable type allows you to add multiple computed fields with the aggregated fields dynamically added.

To add multiple computed columns, computedFields [] where actionName (IComputedField<T> interface), fields [] names as in exist in query key, newField as name to appear for computation must be defined.

chartSpecificProperty: This is specific to FSM-DSS, and it is used to achieve the xtable column order along with the computed fields. This property is not used in any other module till now.

When you click on any district name, you will see the drill-down charts, which will represent that specific district data.

When you click on the ULB, you will navigate towards under that specific ULB and each ward will show the data specific to that ward.

Vehicle Log Report

This table shows the data of vehicle trips, and it includes the number of trips, total septage collected, total septage dumped, and capacity utilisation in percentage. This graph also contains the drills-downs from district to ULB and from ULB to the vehicle level, which shows the vehicle number.

When you click on any district name, you will see the drill-down charts, which will represent the data specific to that district.

When you click on any boundary/ULB, you will navigate to the specific vehicle details which will be as shown below.

Newly-Introduced Property

isRoundOff: This property is introduced to round-off the decimal values. For example, if the value is 25.43 by using isRoundOff property in configuration, you will get it 25. If value is 22.56, the round-off value will be 23. This can be used for insights configuration as well as overview graph.

Common Properties Available

Key (Example: fsmTotalrequest): This is the visualisation code. This key will be referred to in further visualisation configurations. This is the key which will be used by the client application to indicate which visualisation is needed for display.

chartName: The name of the chart which has to be used as a label on the dashboard. The name of the chart will be a detailed name. In this configuration, the name of the chart will be the code of localisation which will be used by the client side.

queries: Some visualisations are derived from a specific data source, while some others are derived from different data sources and are combined together to get a meaningful representation. The queries of aggregation, which are to be used to fetch out the right data in the right aggregated format, are configured here.

queries.module: The module/domain level on which the query should be applied on. Faecal Sludge Management is FSM.

queries.indexName: The name of the index on which the query has to be executed is configured here.

queries.aggrQuery: The aggregation query in itself is added here. Based on the module and the index name specified, this query is attached to the filter part of the complete search request and then executed against that index.

queries.requestQueryMap: Client request will carry certain fields which are to be filtered. The parameters specified in the client request are different from the parameters in each of these indexed documents. To map the parameters of the request to the parameters of the ElasticSearch Document, this mapping is maintained.

queries.dateRefField : Each of these modules have separate indexes, and all of them have their own date fields. When a date filter is applied against these visualisations, each of them has to apply it against their own date reference fields. To maintain what is the date field in which index, we have this configured in this configuration parameter.

chartType : As there are different types of visualisations, this field defines what is the type of chart/visualisation that this data should be used to represent.

Chart types available are:

Metric - This represents the aggregated amount/value for records filter by the aggregate as query

Pie - This represents the aggregated data on grouping. This can be used to represent any line graph, bar graph, pie chart, or donuts.

Line - This graph/chart is data representation on date histograms or date groupings.

Perform - This chart represents groping data performance wise.

Table - Represents a form of plots and value with headers as grouped on and list of its key, values pairs.

xtable - Represents an advanced feature of table; it has addition capabilities for dynamic adding header values.

valueType: In any case of data, the values which are sent to plot, might be a percentage, an amount, or a count. To represent them and differentiate the numbers from amount and percentage, this field is used to indicate the type of value that this visualisation will send.

Action: Some visualisations are not just aggregation on data source. There might be cases where we have to do a post-aggregation computation. For example, in the case of top 3 performing ULBs, the target and total collection is obtained, and then the percentage is calculated. In such cases, the action that has to be performed on that data is defined in this parameter.

documentType: The type of document on which the query has to be executed is defined here.

drillChart: If there is a drill-down on the visualisation, then the code of the drill-down visualization is added here. This will be used by client service to manage drill-downs.

aggregationPaths: All the queries will have aggregation names in it. To fetch the value out of each aggregation response, the name of the aggregation in the query will be needed. These aggregation paths will have the names of aggregation in it.

insights: It is to show the data with the comparison of last year with arrow symbols. It will show the data as percentage is increased or decreased.

_comment: To display information on the “i” symbol of each visualisation, the visualisation information is maintained in this field.

Postman collection for fsm-dss: https://www.getpostman.com/collections/119ee90dd54c04617c3a

FSM Functional Specification

Desludging Operator Registration

Desludging operators (DSO) can be registered via a user interface (UI) available to the urban local body (ULB) admin. Once created, multiple vehicles and drivers can be mapped to a DSO. DSOs can also be enabled/disabled in the system.

Desludging operators will have the following details:

Driver Registration

Drivers can be registered via a UI available to the ULB admin. Once created, a driver can be mapped to a DSO. Drivers can also be enabled/disabled in the system.

Driver operators will have the following details:

Vehicle Registration

Vehicles can be registered via a UI available to the ULB admin. Once created, a vehicle can be mapped to a DSO. Vehicles can also be enabled/disabled in the system.

Vehicles operators will have the following details:

Apply for Desludging Services

The citizen or the ULB official can apply for a desludging request.

Application Channel

  • Citizens can apply online using the web application.

  • Citizens can walk into a ULB and submit a request to the counter operator, who then creates an application on behalf of the citizen online.

  • Citizens can call the ULB and request for a desludging operation, which can then be transformed into an online application by the ULB official.

Application Submission

  • Desludging applications can be created by a citizen.

  • Desludging application requests can be created by a ULB official on behalf of a citizen.

- If the application is created by a ULB official, then capture the channel in which the request was received. It will be an additional field in the UI to capture the channel.

Service Request Fee

  • Service request fee is calculated as a multiplier of the amount per trip defined in the billing slab table (based on property type, sub-type, whether it is a slum, vehicle capacity) and the number of trips.

  • For certain combinations with the above parameters, the pricing can be set at zero. In such cases, demand will not be generated.

  • ULBs can configure a minimum advance payment to be collected before starting a request. This can either be a fixed value (starting from 0) or a percentage (ranging from 0-100). Citizens will be able to make a payment above the minimum advance amount, and below the total trip amount as an advance payment.

Payment: Online/Cash Counter

  • Citizens can make both the advance and balance payments online.

  • Citizens can make both the advance and balance payments at the ULB counter.

  • Payment receipts will be generated and sent across via SMS. They can be downloaded at the citizen and ULB interfaces.

Update Application Request by ULB Official

  • When a service request is received by a ULB official, he/she can do the following:

- Search and assign a DSO to the application request.

- Cancel the application with remarks.

- Update the application request with the number of trips required to empty the septic tank or Pit and the vehicle details.

- Change the DSO from an application request if the assigned DSO is not available.

- Update the status of the request as completed, post desludging.

- View past records of requests and service delivery.

Cancellation of application

  • A citizen or a ULB official can cancel the application online.

  • Citizens can cancel it only if the DSO is not assigned to the service request.

  • Application cannot be cancelled if the payment is made already.

  • ULB officials can cancel it only if the service is not completed by the DSO.

SMS and Email Updates

  • SMS and email updates are sent on every necessary process of the entire process flow.

Application view by DSO

  • A DSO should get notified about the request that is assigned to him/her. On receiving the request, the following actions can be taken:

- View the request.

- Assign requests to a vehicle.

- Update the number of trips.

- Flag a request ready for disposal.

- Close the request post desludging.

  • One DSO cannot see the details of the other DSO or the request assigned to the other DSOs.

Feedback by Citizen

Citizens can provide feedback on the desludging request:

  • There will be an option to rate the service provided with comments.

  • There will be an option for citizens to update whether safety equipment is used by the sanitary workers during the operation.

Vehicle entry by FSTP/STP plant Operator

Plant operators can do the following:

  • View the list of desludging operations for a day. Since an application may have multiple trips, the plant operator will view multiple line items against an application in the inbox.

  • Update the Vehicle entry log against an application request with the details like:

- Date and time of entry.

- Volume of sludge dumped at the plant.

  • If a vehicle without a corresponding request arrives at the FSTP, the FSTP can record the vehicle entry.

  • The DSO can also decline an incoming vehicle.

Feedback by Citizens

Citizens can provide feedback on the desludging request:

  • Rate the service provided (1-5 stars).

  • Multi-select to update whether safety equipment is used by the sanitary workers during the operation.

List of PDFs

  • Acknowledgement Recepit: Confirming receipt of desludging receipts.

  • Payment receipts: Multiple payment receipts based on the payments made.

Reports

Daily desludging request report

Search criteria

Search result

Area-wise daily collection report

Search criteria

Search result

FSTP/STP plant report with vehicle logs

Search criteria

Search result

Dashboard

Filter criteria

Selection criteria

Other functionalities:

  1. Share via:

a. Image: Downloads image

b. Whatsapp: Image shared via Whatsapp

  1. Download:

a. Image format

Workflow Desludging Application

Advance Balance Workflow

Pay Later Workflow

Zero Price Workflow

Field Name

Type

Mandatory

Editable (Y/N)

Unique within a ULB (Y/N)

Vendor name

Free text

Y

N

N

Gender

Array

Y

N

N

DOB

Date

N

Y

N

Email address

Free text (Email format)

N

Y

N

Mobile number

Number

Y

N

Y

Door number

Free text

N

Y

N

Plot number

Free text

N

Y

N

Building name

Free text

N

Y

N

Street

Free text

N

Y

N

Pincode

Free text

N

Y

N

City

Array

Y

N

N

Locality/mohalla

Array

Y

N

N

Landmark

Free text

N

Y

N

Additional Details

Free text

N

Y

N

Status

Binary

Y

Y

N

Field name

Type

Mandatory

Editable (Y/N)

Unique within a ULB (Y/N)

Driver name

Free text

Y

N

N

Driver license number

Free text (Validation on the license format)

Y

Y

N

Gender

Array

N

Y

N

DOB

Date

N

Y

N

Email address

Free text (Email format)

N

Y

N

Driver phone number

Number

Y

N

N

Field name

Type

Mandatory

Editable (Y/N)

Unique within a ULB (Y/N)

Registration number

Free Text

Y

N

Y

Vehicle model

Array

Y

Y

N

Vehicle type

Array

Y

Y

N

Tank capacity

Array

Y

Y

N

Pollution certificate valid till

Date

N

Y

N

Insurance valid till

Date

N

Y

N

Road tax paid till

Date

N

Y

N

Fitness certificate valid till

Date

N

Y

N

Vehicle owner name

Free text

Y

N

N

Vehicle owner phone number

Number

Y

N

N

Field name

Type

Mandatory

Editable

Comments

Applicant name

Text

Y

N

Mobile number

Numeric

Y

N

Gender

Dropdown

Y

N

City

Dropdown

Y

N

As per the boundary data defined.

Locality

Dropdown

Y

N

As per the boundary data defined.

Whether property is in a slum

Binary

Y

N

Slum name

Dropdown

Y

N

Only if the above selection is yes. List of slums per ULB to be uploaded in the system.

Street name

Text

N

N

Door house number

Text

N

N

Landmark

Text

N

N

Geo location

Lat-Long

N

N

As per DIGIT standards.

Onsite sanitation type

Dropdown

N

Y

Select one from the list.

PIT size

L*B*D in feet (This UOM might change from state to state)

N

Y

Numeric

Property type

Dropdown

Y

N

Use the same ontology as defined in DIGIT Property Tax.

Property sub-type

Dropdown

Y

N

Use the same ontology as defined in DIGIT Property Tax.

Number of trips required

Numeric

Y

Y

Editable by ULB and DSO.

Vehicle capacity

Dropdown

Y

N

Populated as per the vehicle capacities available in the particular ULB.

Application channel

Dropdown

Y

Required only if the creator is a ULB official.

Total amount

Numeric, display only

Y

N

Calculated based on the billing slabs.

Minimum amount payable

Numeric, display only

Y

N

Displayed as per the configuration in the backend.

Advance amount

Numeric

Y

Y

Field name

Type

Required

Comments

Volume of waste collected

Numeric

Y

Field name

Type

Required

Comments

Vehicle in-time

Time

Y

Vehicle out-time

Time

Y

Volume of sludge dumped

Numeric

Y

Additional details

Text

N

Attachments

Document/Image

N

Field name

Type

Required

Comments

Vehicle number

Alphanumeric

Y

Only unregistered vehicles in the system.

DSO name

Text

Y

Locality

Text

Y

Vehicle in-time

Time

Y

Vehicle out-time

Time

Y

Volume of sludge dumped

Numeric

Y

Additional details

Text

N

Attachments

Document/Image

N

Attribute

Type

Required?

Comments

Vehicle

UUID

Y

Trip Number

Numeric

Y

Volume

Numeric

Y

Desludging request

UUID

Y

Reason for declining

String

Y

[ “Septage Source”, “Outside operational hours”, “Under Maintenance”]

Field name

Type

Required

ULB name

Default

Internally pass the ULB name (Y)

From date

Date

Y

To date

Date

Y

DSO name

Search

N - Auto-populate on typing a few letters.

Application number

Application date

Current Status

DSO Name

Amount (Rs)

Date of completion

Field name

Type

Required

ULB name

Dropdown

Internally pass this info.

Mohalla

Dropdown

N

DSO

Search

N - Auto-populate on typing few characters.

From date

Date

Y

To date

Date

Y

Application number/Date

Mohalla

DSO Name

Status

SLA compliance

Volume of waste collected

Field name

Type

Comments

ULB name

Dropdown

  • If the logged-in user is a ULB employee, then pass this information internally.

  • If the logged-in user is an STP/FSTP operator, then ask the user to select the ULB name as one STP can be attached to multiple ULBs.

STP/FSTP name

Dropdown

Internally pass this information: We have mapping between ULB and STP/FSTP.

DSO name

Search

N - Auto-populate on typing a few letters.

Vehicle number

Dropdown

Populate only if the DSO name is selected.

From date

Date

Y

To date

Date

Y

Application number

DSO name /Vehicle number

Vehicle entry date

Vehicle in time

Vehicle out time

Volume of sludge dumped (L)

Field name

Type

Comments

DDR (District name)

Dropdown

  • If the logged-in user is a ULB employee, then pass this information internally.

  • If the logged-in user is an admin, show for all the districts.

ULB name

Dropdown

  • If the logged-in user is a ULB employee, then pass this information internally.

  • If the logged-in user is an admin, show for all the ULBs.

Date range (From and to dates)

Date

Mandatory, auto-select for entire time period.

Field Name

Type

Comments

Denomination

Array

Choose the denominate between Cr, Lac and Unit.

Chart name

Chart type

X Axis

Y Axis

Logic

Comments

Tooltip (if any)

Drilldown available (Y/N)

Overview: Total requests

KPI

NA

NA

Sum of total the requests cumulated over a period of time.

Absolute number and percentage increase or decrease from previous year for the same time period.

NA

N

Overview: Total sludge treated (in KL)

KPI

NA

NA

Sum of the total sludge deposited from registered and unregistered vehicles at the FSTP.

Absolute number and percentage increase or decrease from the previous year for the same time period.

NA

N

Overview: Total collection

KPI

NA

NA

Sum of the total revenue collected against service delivery.

Absolute number and percentage increase or decrease from the previous year for the same time period.

NA

N

Overview: SLA compliance

KPI

NA

NA

Average SLA compliance (percentage of requests completed within SLA).

Percentage number and percentage increase or decrease from the previous year for the same time period.

NA

N

Overview: Citizen average rating

KPI

NA

NA

Average citizen rating (Total citizen rating/total number of applications with feedback).

Absolute number and percentage increase or decrease from the previous year for the same time period.

NA

N

Total cumulative collection

Area chart

Month

Total collection

Cumulative collection over a period of time.

- Month name - Value

N

Revenue by property type

Pie chart

NA

NA

Distribution of requests by property type.

The percentage of requests by each property type to be displayed on the chart.

Display percentage and absolute value.

N

Top 3 performing ULBs (SLA achievement)

Percentage completion on line chart

NA

NA

Average SLA per ULB.

Top 3 to be displayed. View more options available to view the entire list of ULBs.

N

Bottom 3 performing ULBs (SLA achievement)

Percentage completion on line chart

NA

NA

Average SLA per ULB

Bottom 3 to be displayed. View more options available to view the entire list of ULBs.

M

FSTP - Capacity utilisation

Line chart

Percentage capacity utilisation

Time (Month)

Total waste disposed of or total capacity.

Total waste treated to be displayed below the chart heading.

- Month - Capacity utilisation (%). - Capacity utilisation (%) as compared to last year for the same month.

Monthly waste collected versus monthly waste disposed off

Column chart

Waste collected and waste dumped

Time (Month)

- Sum of waste collected.

- Sum of waste disposed of.

- Month

- Waste collected (absolute number and % increase decrease as compared to last year for the same month).

- Waste disposed (absolute number and % increase or decrease as compared to last year for the same month).

Total request by region

Table

NA

NA

Fields:

- Serial number.

- District

- # of open requests.

- # of closed requests.

- # of total requests.

- Completion rate (Percentage completion).

- SLA achieved: Percentage.

- Total collection.

- Selection to display the number of rows in a table.

- Option to move to the next and the previous pages, and display the current page number.

- Search by district name.

- Show filters applied, if any.

Drilldown on district name to ULBs mapped in the district.

Vehicle log report

Table

NA

NA

Fields:

- Serial number.

- ULB.

- Volume of waste collected.

- Volume of waste dumped.

- Capacity utilisation (percentage). - Show comparison to last year.

- Selection to display the number of rows in a table.

- Option to move to the next and the previous pages, and display the current page number.

- Search by district name.

- Show filters applied, if any.

Application type

Status

Roles

Action

Next state

Desludging

Citizen

FSM_CREATOR_EMP

Create application

Application created

Desludging

Application created

Citizen

FSM_CREATOR_EMP

Submit application

Pending for payment

Desludging

Pending for DSO assignment

FSM_EDITOR_EMP

Reject application

Application created

Desludging

Pending for payment

Citizen

Pay for the number of trips (may be 0 to full)

Pending for DSO assignment

Desludging

Pending for DSO assignment

FSM_EDITOR_EMP

Assign DSO

Pending for DSO approval

Desludging

Pending for DSO assignment

FSM_EDITOR_EMP

Return application

Application created

Desludging

Pending for DSO assignment

FSM_EDITOR_EMP

Reassign DSO

Pending for DSO approval

Desludging

Pending for DSO approval

DSO

FSM_EDITOR_EMP

Assign Vehicle

DSO in progress

Desludging

Pending for DSO approval

DSO

FSM_EDITOR_EMP

Reject

Pending for DSO assignment

Desludging

DSO in progress

FSM_EDITOR_EMP DSO

Update the number of trips or schedule trips

DSO in progress

Desludging

DSO in progress

Citizen

Pay (full amount)

DSO in progress

Desludging

DSO in progress

FSM_EDITOR_EMP DSO

Dispose

DSO in progress

Desludging

DSO in progress

DSO

FSM_EDITOR_EMP

Complete request (after collecting the total amount)

Pending citizen feedback

Desludging

Pending citizen feedback

Citizen

Citizen provides feedback

Request completed

Application Type

Status

Action

Roles

Next State

VehicleTrip

Schedules trip

FSM_DSO

SCHEDULED

VehicleTrip

SCHEDULED

Ready for disposal

FSM_DSO"

"FSM_EDITOR_EMP

Waiting for disposal

VehicleTrip

Waiting for disposal

Dispose

FSM_EMP_FSTPO

DISPOSED

Application type

Status

Roles

Action

Next state

Desludging

Citizen

FSM_CREATOR_EMP

Create application

Application created

Desludging

Application created

Citizen

FSM_CREATOR_EMP

Submit application

Pending for DSO assignment

Desludging

Pending for DSO assignment

FSM_EDITOR_EMP

Reject application

Application created

Desludging

Pending for DSO assignment

FSM_EDITOR_EMP

Assign DSO

Pending for DSO approval

Desludging

Pending for DSO assignment

FSM_EDITOR_EMP

Return application

Application created

Desludging

Pending for DSO assignment

FSM_EDITOR_EMP

Reassign DSO

Pending for DSO approval

Desludging

Pending for DSO approval

DSO

FSM_EDITOR_EMP

Assign Vehicle

DSO in progress

Desludging

Pending for DSO approval

DSO

FSM_EDITOR_EMP

Reject

Pending for DSO assignment

Desludging

DSO in progress

FSM_EDITOR_EMP DSO

Update the number of trips or schedule trips

DSO in progress

Desludging

DSO in progress

Citizen

Pay (Full Amount)

DSO in progress

Desludging

DSO in progress

FSM_EDITOR_EMP DSO

Dispose

DSO in progress

Desludging

DSO in progress

DSO

FSM_EDITOR_EMP

Complete Request (after collecting the total amount)

Pending citizen Feedback

Desludging

Pending citizen feedback

Citizen

Citizen provides feedback

Request completed

Application Type

Status

Action

Roles

Next state

VehicleTrip

Schedules trip

FSM_DSO

SCHEDULED

VehicleTrip

SCHEDULED

Ready for disposal

FSM_DSO"

"FSM_EDITOR_EMP

Waiting for disposal

VehicleTrip

Waiting for disposal

Dispose

FSM_EMP_FSTPO

DISPOSED

Application type

Status

Roles

Action

Next State

Desludging

-

Citizen

FSM_CREATOR_EMP

Create application

Application created

Desludging

Application created

Citizen

FSM_CREATOR_EMP

Submit application

Pending for payment

Desludging

Pending for DSO assignment

FSM_EDITOR_EMP

Reject application

Application created

Desludging

Pending for DSO assignment

FSM_EDITOR_EMP

Assign DSO

Pending for DSO approval

Desludging

Pending for DSO assignment

FSM_EDITOR_EMP

Return application

Application created

Desludging

Pending for DSO assignment

FSM_EDITOR_EMP

Reassign DSO

Pending for DSO approval

Desludging

Pending for DSO approval

DSO

FSM_EDITOR_EMP

Assign vehicle

DSO in progress

Desludging

Pending for DSO approval

DSO

FSM_EDITOR_EMP

Reject

Pending for DSO Assignment

Desludging

DSO in progress

FSM_EDITOR_EMP DSO

update No of trips / schedule trip

DSO in Progress

Desludging

DSO in progress

FSM_EDITOR_EMP

Reassign DSO

Pending for DSO approval

Desludging

DSO in progress

FSM_EDITOR_EMP DSO

Dispose

DSO in progress

Desludging

DSO in progress

DSO

FSM_EDITOR_EMP

Complete request (after collecting the total amount)

Pending citizen feedback

Desludging

Pending citizen feedback

Citizen

Citizen provides Feedback

Request completed

Application type

Status

Action

Roles

Next state

VehicleTrip

Schedules trip

FSM_DSO

SCHEDULED

VehicleTrip

SCHEDULED

Ready for disposal

FSM_DSO"

"FSM_EDITOR_EMP

Waiting for disposal

VehicleTrip

Waiting for disposal

Dispose

FSM_EMP_FSTPO

DISPOSED

General FSM Implementation Activities

Task
Status
Dependency
Responsibility / Owner
Start Date
End Date
Revised Date
New End Date
Comments

PWC - Integration of SUJOG FSSM on SUJOG

Planning a Roadmap

In Progress

Onboarding them on SUJOG-FSSM - Preview

Completed

Sharing the product roadmap with PWC - Support in preparing the effort estimates

In Progress

Effort Estimate from PWC and proposal to the department for Final Handover

In Progress

Onboarding Sushanta Kumar Mishra

Completed

Finalising Governance Structure - State

Preparation of the structure to include state TSU for adoption and monitoring

Acceptance and acknowledgment from EIC to sign off

Getting Additional Secretary to sign off

PS approval

Product Features, timeline and sign offs

UAT Code Promotion

Completed

NA

Riddhi

22-Feb-2023

1-Mar-2023

UAT Testing and Sign Off

Completed

NA

Riddhi

1-Mar-2023

6-Mar-2023

Code Freeze

Completed

NA

Riddhi

6-Mar-2023

6-Mar-2023

Implementation Handover - Beta Release

Completed

NA

Riddhi

6-Mar-2023

9-Mar-2023

24-Mar-2023

Product Sign Off

Completed

On Impel feedback

Arindam

6-Mar-2023

14-Mar-2023

16-Mar-2023

Documentation

Completed

NA

Riddhi

7-Mar-2023

14-Mar-2023

4-Apr-2023

Documents are shared with Mihika. Mihika would need some time to reivew the documents and add it to Gitbook.

Final Implementation handover

Completed

On Prod Sign off

Riddhi

13-Mar-2023

16-Mar-2023

29-Mar-2023

Sprint/ Final release showcase

Completed

On Prod Sign off

Tahera

13-Mar-2023

16-Mar-2023

6-Apr-2023

Gate 2

Completed

On Prod Sign off

Riddhi

15-Mar-2023

17-Mar-2023

6-Apr-2023

Date has been finalized to 6th April based on everyone's availability

Impel Activities and Timeline

Handover of FSM1.3

Completed

On Prod Sign off

Tahera/Riddhi/Arindam

20-Mar-2023

20-Mar-2023

29-Mar-2023

Master data validation for 37 new ULBs (Phase-2)

Completed

Program Team to provide the data after program team verifies

Riddhi/Arindam

1-Mar-2023

17-Mar-2023

24-Mar-2023

35 out of 37 sheets are uploaded in drive as on 16-03-2023. 32 ULB verified. 4 ULB has data issue

Setting up of master data and configurations on FSM test server

Completed

Riddhi/Arindam

20-Mar-2023

21-Mar-2023

24-Mar-2023

Deployment of new version(FSM1.3) in FSM test environment

Completed

Riddhi/Arindam

20-Mar-2023

21-Mar-2023

24-Mar-2023

Listing the changes in core services related to FSM1.3

Completed

Riddhi/Arindam

21-Mar-2023

22-Mar-2023

30-Mar-2023

Taking the core service changes(if any) with PwC team and getting their approval

Completed

Riddhi/Arindam

22-Mar-2023

23-Mar-2023

31-Mar-2023

QA sign off on FSM v1.3 on test server

Completed

Riddhi/Arindam

23-Mar-2023

24-Mar-2023

17-Apr-2023

18-Apr-2023

URC & E2E Testing - QA Sign Off

Completed

Riddhi/Arindam

6-Apr-2023

10-Apr-2023

17-Apr-2023

19-Apr-2023

Sign Off of FSM1.3 & Datamart reports from the Program Team

In Progress

Riddhi/Arindam/Shrija/Abhisek

27-Mar-2023

27-Mar-2023

17-Apr-2023

Customization suggested by Program team

Completed

Riddhi/Arindam

28-Mar-2023

29-Mar-2023

17-Apr-2023

Core service code merge(if any) on SUJOG UAT by PwC

Completed

Riddhi/Arindam

29-Mar-2023

29-Mar-2023

17-Apr-2023

Sujog UAT set up with lastest builds and master data

Completed

Riddhi/Arindam

30-Mar-2023

3-Apr-2023

18-Apr-2023

20-Apr-2023

QA sign off on Sujog UAT instance

Completed

Riddhi/Arindam

4-Apr-2023

5-Apr-2023

20-Apr-2023

3-May-2023

PR merge from the PwC team is delayed by a 2 days due to the production release issue

UAT sign off

In Progress

Riddhi/Arindam/Shrija/Abhisek/Some ULB's in Phase-1

6-Apr-2023

10-Apr-2023

21-Apr-2023

23-May-2023

Setting up of master data and configurations on production(Specific to FSM1.3)

Completed

Riddhi/Arindam

11-Apr-2023

13-Apr-2023

26-Apr-2023

23-May-2023

Deploying to production

Completed

Riddhi/Arindam

11-Apr-2023

13-Apr-2023

26-Apr-2023

26-May-2023

Sanity testing on production using testing tenant

Completed

Riddhi/Arindam

14-Apr-2023

17-Apr-2023

26-Apr-2023

26-May-2023

Setting up of new ULB's, Master data, Seed data, User creations for 37 ULB's

In Progress

Riddhi/Arindam

14-Apr-2023

19-Apr-2023

28-Apr-2023

7-Jun-2023

Release communication

To Do

Riddhi/Arindam

19-Apr-2023

19-Apr-2023

28-Apr-2023

7-Jun-2023

Refresher Training of Pilot+PhaseI ULBs

On Impel's timeline

Refresher training of the Pilot + Phase I ULBs on the new features

To Do

Program team

17-Apr-2023

21-Apr-2023

24-Apr-2023

4-May-2023

Change in impel to prod dates - Using UAT

Content Preparation

To Do

Program team

3-Apr-2023

14-Apr-2023

21-Apr-2023

2-May-2023

Can we test features in some of the ULBs before rolling out in production?

Program Setup : Approval, Monitoring and Progress Tracking

Presentation of the progress and compliances regarding product features for securing approval for State wide roll out from EIC, Addl Secretary and PS

Completed

Program Team

17-Mar-2023

24-Mar-2023

Identification of the FSSM program SPOC within HUDD for PMU

In Progress

Program Team

20-Mar-2023

24-Mar-2023

30-Apr-2023

Creation of a Training Plan, Governance structure and submission to the State team for their review

Completed

Program Team

20-Mar-2023

24-Mar-2023

Securing approval for MTs engagement and onboarding for the state wide roll out from OWSSB, OWA and HUDD, Or

In Progress

On Approval from OWA and Availability of MTs

Program team + OWA + OWSSB

20-Mar-2023

24-Mar-2023

21-Apr-2023

5-May-2023

Leverage the ULB officials as trainers from the current batch of 35

Completed

Training of Master Trainers or identified ULB personnel/ TRPs from Phase I and Pilot

Creation of the Training Plan will require a a) Schedule b) Content c) Venue d) Participants(Identified SPoCs/Executive and TRPs) or OWA Master Trainers

Completed

Program Team

3-Apr-2023

14-Apr-2023

Creation of the training assets-documents , videos, FAQs etc

In Progress

Program Team + Marketing Team

3-Apr-2023

14-Apr-2023

21-Apr-2023

5-May-2023

Waiting for the SUJOG UAT setup to start with the Demo Videos.

Training of the master Trainers or indentified ULB sanitation SPOCs/TRPs from Phase I

Completed

Program Team

17-Apr-2023

21-Apr-2023

2-May-2023

8-May-2023

Collection of Training feedback & conduct a refresher training

To Do

Program Team

17-Apr-2023

21-Apr-2023

2-May-2023

8-May-2023

Program Setup :

Communication to the other entities regarding timeline (DUDA, ULBs, State FSM TSU, PwC, EY-PMU) via letter

Completed

Program Team

1-Mar-2023

10-Mar-2023

20-Mar-2023

Kick off meeting with DUDA officials for Data collection of 37 new ULBs

Completed

Program Team

Creating and finalising the Datasheet to collect Data from ULBs and getting a sign off internally from the product and impel team

Completed

Program Team

Creating and finalising the Datasheet to collect Data from ULBs and getting a sign off externally from OWSSB

Completed

Program Team

Weekly cadence with DUDA to review the progress

Completed

Program Team

Setting up a data review prosess internally for sanity check by the program team - L1

Completed

Program Team

Finalising the list of ULBs for Phase II roll out based on ULB readiness

Completed

Program Team

Communication from the HUDD/OWSSB to the ULBs EO's to nominate FSM Executive for facilitating the rollout activities within ULBs and report the progress to PMU

Program Team

1-Mar-2023

17-Mar-2023

Pre-requistites from the ULBs

All the ULBs to nominate a dedicated personnel as FSM executive and ensure accessibility of all the communication channel to raise a desludging requests as a single person should be made responsible for handling the FSM requests coming from ULBs own phone helpline/14420/Walk-in citizens, and logging them into the SUJOG-FSSM system and assigning the Cesspool Operators.

Completed

OWSSB + TSU + HUDD, Tracking by the Program Team

1-Mar-2023

15-Apr-2023

30-Apr-2023

All the ULBs need to ensure that all the private operators are identified, empaneled at the ULB. This will bring the private operators within the ambit of the FSM transformation and provide an oversight to the ULB administration.

Completed

OWSSB + TSU + HUDD, Tracking by the Program Team

1-Mar-2023

15-Apr-2023

30-Apr-2023

All the ULBS to have clarity on the pricing structure for the de-sludging requests and working hours of the FSTPs

Completed

OWSSB + TSU + HUDD, Tracking by the Program Team

1-Mar-2023

15-Apr-2023

30-Apr-2023

Data Collection & Review for batch 1 & 2

On DUDA

1-Feb-2023

14-Mar-2023

Finalising the Data collelction template and checklist for data correction

Completed

Program Team + OWSSB + DUDA

1-Feb-2023

14-Mar-2023

Orientation Session with OWSSB and DUDA officials on what information is expected and how to fill and share the same

Completed

Program Team + OWSSB + DUDA

1-Feb-2023

14-Mar-2023

Categorising the ULBs based on geographies for Batch 1 and 2 of Phase-2

Completed

Program Team + OWSSB + DUDA

1-Feb-2023

14-Mar-2023

Completed by program Team.

Data gathering from the ULBs under FSTP coverage (Batch-1)

Completed

Program Team + OWSSB + DUDA

1-Feb-2023

14-Mar-2023

Review of collected data for its completeness by the program team (Batch-1)

Completed

Program Team + OWSSB + DUDA

1-Feb-2023

14-Mar-2023

Locking the data sheet for batch-1 after filling any leftover data fields

Completed

Program Team + OWSSB + DUDA

1-Feb-2023

14-Mar-2023

Data gathering from the ULBs under FSTP coverage (Batch-2)

Completed

Program Team + OWSSB + DUDA

1-Feb-2023

14-Mar-2023

Except for Bubhaneswar. To be initiated with the helpd of OWSSB and HUDD

Review of collected data for its completeness by the program team (Batch-2)

Completed

Program Team + OWSSB + DUDA

1-Feb-2023

14-Mar-2023

Locking the data sheet for batch-2 after filling any leftover data fields

Completed

Program Team + OWSSB + DUDA

1-Feb-2023

14-Mar-2023

Review of collected data for its completeness by the impel team for Phase-2

Completed

Impel Team

Done

IT Infra readiness within ULBs

On State + ULB

10-Mar-2023

15-Apr-2023

Tracking the purchase and installation of computer within ULB( for Dealing assistant) for taking citizens requests as per the prescribed specifications as followed: 1. Computer with minimum I3 processor with FSM Executive(nominated personnel) at ULB and FSTP 2. Wifi or wired LAN connectivity for computer within ULB & FSTP 3. Laser or Inkjet printer in ULB for printing receipts and acknowledegments 4. Card swipe machines to accept payments in ULB for pre-payment use case

In Progress

Program Team

10-Mar-2023

30-Apr-2023

As per DUDA, 37 ULBs has computer and internet/wi-fi both at ULB office and FSTP. - https://docs.google.com/spreadsheets/d/17kxUYOHjmZgVwCQ1lNMSeCF8GTaIbSJ2EHvNyns6efY/edit?usp=sharing

Training of ULB personnel/ FSSM Executive & TRPs

HUDD + OWSSB

Training of the ULB personnel/FSM Executive and TRPs for batch -1 ULBs

To Do

Program Team

1-May-2023

5-May-2023

8-May-2023

22-May-2023

Change in impel timeline

Collection of Training feedback for Batch-1 ULBs

To Do

Program Team

1-May-2023

5-May-2023

8-May-2023

22-May-2023

Training of the ULB personnel/FSM Executive and TRPs for batch-2 ULBs

To Do

Program Team

8-May-2023

12-May-2023

9-May-2023

23-May-2023

Collection of Training feedback for Batch-2 ULBs

To Do

Program Team

1-May-2023

5-May-2023

9-May-2023

24-May-2023

Communication and Tracking Progress

6-Mar-2023

7-Mar-2023

Setting up a WhatsApp channel for easy communication and progress review with Eos/Cos and FSM executive

In Progress

DUDA to send the signed off letters from EO/CIO

Program Team

2-May-2023

3-May-2023

5-May-2023

Program Kick off meeting with External stakeholders for aligning them towards Program objectives

Completed

Program Team

17-Mar-2023

17-Mar-2023

Program Kick off meeting with Internal stakeholders for aligning them towards Program objectives

Completed

Program Team

IEC support from the State - Out of Scope. Proposing this idea to state for better citizen engagement

Creation of a IEC Plan consisting of : a) Creative designs b) Channels for promotion pan state to increase citizen engagement- Pamphlets in Newspaper/ Radio/TV in local languages c) Calendar/schedule of promotional activities d) Social media posts from the state channels

To Do

State + OWSSB

3-Apr-2023

21-Apr-2023

Approving the budgets for IEC campaign from ULB budgets

To Do

State + OWSSB

3-Apr-2023

21-Apr-2023

Creation of creative assets

To Do

State + OWSSB

3-Apr-2023

21-Apr-2023

Translation of assets in Odiya

To Do

State + OWSSB

3-Apr-2023

21-Apr-2023

Printing of banners, leaflets etc as per the plan and putting them at relevant spots

To Do

3-Apr-2023

21-Apr-2023

Sharing the feedback/status report back to PMU team

To Do

3-Apr-2023

21-Apr-2023

IEC support from eGov Marketing team

Creating a chart or flex for ULBs to have a view of FSM value chain and good practices

To Do

Marketing Team

3-Apr-2023

21-Apr-2023

28-Apr-2023

5-May-2023

Creation of short 2 mins videos to explain SUJOG workflow / Training Videos - These should be flow wise or screen wise which will be available on Youtube playlist and wherever possible to be accessible by the participants whenever required

In Progress

3-Apr-2023

21-Apr-2023

21-Apr-2023

5-May-2023

User Manuals for the trainees in Odia if possible including Easy Explainer flowcharts of SUJOG-FSSM

To Do

3-Apr-2023

21-Apr-2023

28-Apr-2023

5-May-2023

FAQ Doc with some basic and important questions like how to change passwords, how to reassign vehicles, how to update trips, how to process the payments, how to ensure the basic sanity check etc

To Do

3-Apr-2023

21-Apr-2023

28-Apr-2023

5-May-2023

Post Go-live technical Support

L1 query resolution of ULB stakeholders

To Do

Implementation Team

15-May-2023

30-Jun-2023

L2 support( fixing defects reported from the field)

To Do

Implementation Team

15-May-2023

30-Jun-2023

Post Go Live Support and handholding of the onboarded ULBs

Categorising the ULBs and creating batches for weekly calls

To Do

12-May-2023

19-May-2023

Setting up a weekly call with the ULBs to review the progress and address issues

To Do

12-May-2023

19-May-2023

Refresher Training if required will be planned virtually

To Do

12-May-2023

19-May-2023

FSM Core Service Configuration

Learn how to setup and configure FSM service

Overview

Faecal sludge management (FSM) is a system that enables citizens to raise a request for septic tank cleaning with their urban local bodies (ULBs) directly or reaching out to the ULB counter. Citizens can track the application, make a payment for the charges and rate the service. This document contains details on how to set up FSM, and describes the functionalities it provides. It contains the details about the feature enhancements being released as part of FSM v1.3.

Pre-requisites

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 fsm-persister config path added in it

  • PSQL server is running and a database is created to store FSM Application data

  • (Optional) Indexer config for FSM is added in egov-indexer yaml paths to index the generated data. An index is required for data visualisation in kibana or in DSS.

  • Following services should be up and running:

    • egov-user

    • egov-workflow-v2

    • egov-perister

    • egov-localisation

    • egov-notification-sms

    • egov-mdms

    • egov-idgen

    • egov-url-shortening

    • vehicle

    • vendor

    • fsm-calculator

    • billing-service

    • collection-services

Key Functionalities

  • Citizens can file, track and rate the application for cleaning septic tank.

  • A ULB employee can file application for cleaning septic tank on behalf of a citizen.

  • A ULB employee can assign a DSO to the given application with a possible service date.

  • A DSO can accept or reject the application.

  • A DSO or a ULB employee can complete the FSM application after cleaning the septic tank.

  • The FSM admin in a ULB can cancel the application at any stage before completing the application.

  • A ULB employee or an admin can view the audit log of the given application.

  • Capture citizen gender information if not present or pre-populate the gender information when a citizen is creating the FSM application.

  • Add citizen's choice for payment.

  • Introducing pre-pay and post-pay service.

  • Post-pay service: Workflow changes (Desludging application and vehicle trip).

  • Post-pay service: Employee flow enhancements.

  • Add payment selection for DSO.

  • Post-pay service: Number of trips is editable, and price calculation will be now based on the number of trips entered by the DSO.

  • Capture DSO and FSTPO gender.

  • Show citizen gender on FSM DSS.

  • Select vehicle capacity instead of vehicle make.

  • Citizen Notifications | Payment Options | Timeline Enhancements.

  • FSTPO vehicle log inbox enhancements.

  • FSTPO can decline the vehicle trip.

  • Add owner attribute for vehicles.

  • Add ULB contact details in the FSM application flow.

  • DSO can edit pit and property usage details.

  • Show vehicle trip status in employee inbox along with the desludging application.

  • Unrestricted assignment of service requests to a single vehicle.

  • Vehicle logging at FSTP decoupled from the FSM module.

  • Photo and attachment view in the application of the ULB employee UI.

  • Dashboard enhancement.

  • Advance pay service: Employee flow enhancements.

  • Introduced two new workflows in the system:

- FSM_ADVANCE_PAY_SERVICE and FSM_ZERO_PAY_SERVICE .

  • Advance pay service: The number of trips is made editable (increase or decrease based on the requirement), and price calculation will be now based on number of trips entered by the DSO or ULB.

  • Allowed to pay part payment while creating the application.

  • ULB and DSO are allowed to decrease the number of trips if not required and if full payment is not done.

  • ULB and DSO are allowed to increase or decrease the number of trips n number of times.

  • With the updated number of trips, an updated bill will be generated.

  • Delink the payment from DSO in progress state.

  • Zero pay service: Employee flow enhancements.

  • Zero pay service: System now skips the collection, and will not generate the demand for zero price application.

  • Demand generation process: Generating demand every time the trip is updated.

  • Demand generation process: Added validation not to complete the application from ULB side before completing all payment.

  • Enhancement of FSM receipt.

Deployment Details

  1. Deploy the latest version of FSM.

  2. Add fsm-persister.yml file in the 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), and restart the egov-persister service.

  3. If index are to be created, add the indexer config path in the indexer service (the file path is to be added in environment yaml file in param called egov-indexer-yaml-repo-path), and restart egov-indexer service.

Configuration Details

Make changes in config accordingly and restart the pdf-services.

1 . pdf-service/format-config/fsm-receipt.json

#SM-1265 FSM V1.2: ULB collecting advance Receipt Page · egovernments/configs@57259f7

#SM-1265 pdf Receipt table alignment · egovernments/configs@1e0625e

https://github.com/egovernments/configs/commit/1b3c14bfcf74ec23e30aed1910dfe0d016439543

https://github.com/egovernments/configs/commit/f6f7f513799dfcae80817fe1f1866d0084291006

2 . pdf-service/data-config/fsm-receipt.json

#SM-1265 FSM V1.2: ULB collecting advance Receipt Page · egovernments/configs@ed9220a

https://github.com/egovernments/configs/commit/2a221ad39756c2ca4476c0669c2f4f79c3ce958e

https://github.com/egovernments/configs/commit/a07318256f21240df71f87af21acd3dc56fb1118

https://github.com/egovernments/configs/commit/e307007a6e9f69f32134caac7d3b571411dfa840

egov-persister/fsm-persister.yaml

#807 updating advance amount column · egovernments/configs@413c9d1

https://github.com/egovernments/configs/commit/89ab16cc3c58d161183a58e85d4d9fdbe32a67f5

https://github.com/egovernments/configs/commit/4c3acfe57d9ef6770a814d9e3d8bd88493e5c4bb

MDMS Configuration

Add master data in MDMS service with module name as FSM and restart the egov-mdms-service. Following is a sample master data for Application Channel (Source).

{
    "tenantId": "pb",
    "moduleName": "FSM",
    "ApplicationChannel": [
        {
            "name": "Telephone",
            "code": "TELEPHONE",
            "active": true,
            "citizenOnly":false
        },
        {
            "name": "Counter",
            "code": "COUNTER",
            "active": true,
            "citizenOnly":false
        },
        {
            "name": "Online",
            "code": "ONLINE",
            "active": true,
            "citizenOnly":true
        }
    ]
}

Checklist (To be answered by a citizen while rating)

{
	"tenantId": "pb",
	"moduleName": "FSM",
	"CheckList": [{
			"code": "SPILAGE",
			"active": true,
			"required": true,
			"type": "SINGLE_SELECT",
			"options": [
				"YES",
				"NO",
				"NA"
			]
		},
		{
			"code": "SAFETY_GEARS_USED",
			"active": true,
			"type": "MULTI_SELECT",
			"required": true,
			"options": [
				"EYE_GEAR",
				"HAND_GLOVES",
				"NOSE_MASK"
			]
		},
		{
			"code": "NUMBER_OF_TRIPS",
			"active": true,
			"type": "DROP_DOWN",
			"required": false,
			"options": [
				"1",
				"2",
				"3",
				"4",
				"5",
				"6",
				"7",
				"8",
				"9",
				"10"
			]
		}
	]
}

Configuration (At the application level)

{
    "tenantId": "pb",
    "moduleName": "FSM",
    "Config": [
        {
            "code":"noOfTrips",
            "override":true,
            "default":1,
            "active":true,
            "description":"override:true indicates, noOfTrips poperty is allowed to override in FSM."
        },
        {
            "code":"additionalDetails.tripAmount",
            "override":false,
            "active":true,
            "description":"override:true indicates, tripAmount poperty is allowed to override in FSM."
        },
        {
            "code":"slumName",
            "override":true,
            "active":true,
            "description":"override:true indicates, tripAmount poperty is allowed to override in FSM."
        },
        {
            "code":"ALLOW_MODIFY",
            "WFState":"CREATED",
            "override":[
                "propertyUsage",
                "vehicleType",
                "sanitationtype",
                "address.pincode",
                "address.city",
                "address.locality",
                "address.street",
                "address.doorNo",
                "address.landmark",
                "pitDetail"
            ],
            "active":true,
            "description":"properties in override allowed to modify when FSM application moving from CREATED Status to next status."
        }
        
    ]
}

FSTP Plant Information (For each city)

{
    "tenantId": "pb",
    "moduleName": "FSM",
    "FSTPPlantInfo": [
        {
            "PlantCode": "AMR001",
            "PlantName": "Amritsar FSTP",
            "active": true,
            "PlantType":"FSTP",
            "PlantLocation":"Amritsar",
            "PlusCode":"JQ2R+7G Khapar Kheri, Punjab",
            "PlantOperationalTimings":"10.00am-08.00pm",
            "PlantOperationalCapacityKLD":"50",
            "ULBS":"pb.jalandhar,pb.amritsar,pb.nayagaon"
        },
        {
            "PlantCode": "MOH002",
            "PlantName": "Mohali SeTPP",
            "active": true,
            "PlantType":"SeTP",
            "PlantLocation":"Mohali",
            "PlusCode":"MPFQ+V2 Sahibzada Ajit Singh Nagar, Punjab",
            "PlantOperationalTimings":"10.00am-06.00pm",
            "PlantOperationalCapacityKLD":"100",
            "ULBS":"pb.mohali,pb.phagwara,pb.nawanshahr,pb.derabassi"
        }
    ]
}

Pit Type (Type of pit)

{
    "tenantId": "pb",
    "moduleName": "FSM",
    "PitType": [
        {
            "name": "Conventional septic tank",
            "code": "CONVENTIONAL_SPECTIC_TANK",
            "active": true,
            "dimension":"lbd"
        },
        {
            "name": "Septic tank with soak pit",
            "code": "SEPTIC_TANK_WITH_SOAK_PIT",
            "active": true,
            "dimension":"dd"
        }
    ]
}

Property Type

{
  "tenantId": "pb",
  "moduleName": "FSM",
  "PropertyType": [
    {
      "name": "Residential",
      "code": "RESIDENTIAL",
      "active": true,
      "minAmount":"100",
      "maxAmount":"500"
    },
     {
      "name": "Independent House",
      "code": "RESIDENTIAL.INDEPENDENT_HOUSE",
      "active": true,
      "propertyType": "RESIDENTIAL",
      "minAmount":"100",
      "maxAmount":"300"
    },
    {
      "name": "Apartment",
      "code": "RESIDENTIAL.APARTMENT",
      "active": true,
      "propertyType": "RESIDENTIAL",
      "minAmount":"400",
      "maxAmount":"600"
    },
    {
      "name": "Row Houses",
      "code": "RESIDENTIAL.ROW_HOUSES",
      "active": true,
      "propertyType": "RESIDENTIAL",
      "minAmount":"700",
      "maxAmount":"900"
    },
    {
      "name": "Commercial",
      "code": "COMMERCIAL",
      "active": true,
      "minAmount":"2000",
      "maxAmount":"5000"
    },
    {
      "name": "Community Toilets",
      "code": "COMMERCIAL.COMMUNITY_TOILETS",
      "active": true,
      "propertyType": "COMMERCIAL",
      "minAmount":"1000",
      "maxAmount":"1200"
    },
    {
      "name": "Hotel",
      "code": "COMMERCIAL.HOTEL",
      "active": true,
      "propertyType": "COMMERCIAL",
      "minAmount":"1300",
      "maxAmount":"1500"
    },
    {
      "name": "Restaurant",
      "code": "COMMERCIAL.RESTAURANT",
      "active": true,
      "propertyType": "COMMERCIAL",
      "minAmount":"1600",
      "maxAmount":"1800"
    },
    {
      "name": "Shopping Mall",
      "code": "COMMERCIAL.SHOPPING_MALL",
      "active": true,
      "propertyType": "COMMERCIAL",
      "minAmount":"1900",
      "maxAmount":"2100"
    },
    {
      "name": "Community hall",
      "code": "COMMERCIAL.COMMUNITY_HALL",
      "active": true,
      "propertyType": "COMMERCIAL",
      "minAmount":"2200",
      "maxAmount":"2500"
    },
    {
      "name": "Bank",
      "code": "COMMERCIAL.BANK",
      "active": true,
      "propertyType": "COMMERCIAL",
      "minAmount":"2600",
      "maxAmount":"2800"
    },
    {
      "name": "Private office",
      "code": "COMMERCIAL.PRIVATE_OFFICE",
      "active": true,
      "propertyType": "COMMERCIAL",
      "minAmount":"2900",
      "maxAmount":"3200"
    },
    {
      "name": "Market",
      "code": "COMMERCIAL.MARKET",
      "active": true,
      "propertyType": "COMMERCIAL",
      "minAmount":"3300",
      "maxAmount":"3500"
    },
    {
      "name": "Hostel",
      "code": "COMMERCIAL.HOSTEL",
      "active": true,
      "propertyType": "COMMERCIAL",
      "minAmount":"3600",
      "maxAmount":"3900"
    },
    {
      "name": "Warehouse",
      "code": "COMMERCIAL.WAREHOUSE",
      "active": true,
      "propertyType": "COMMERCIAL",
      "minAmount":"400",
      "maxAmount":"4200"
    },
    {
      "name": "Petrol pumps",
      "code": "COMMERCIAL.PETROL_PUMPS",
      "active": true,
      "propertyType": "COMMERCIAL",
      "minAmount":"4300",
      "maxAmount":"4500"
    },
    {
      "name": "Resort",
      "code": "COMMERCIAL.RESORT",
      "active": true,
      "propertyType": "COMMERCIAL",
      "minAmount":"4600",
      "maxAmount":"4800"
    },
    {
      "name": "Theme park",
      "code": "COMMERCIAL.THEME_PARK",
      "active": true,
      "propertyType": "COMMERCIAL",
      "minAmount":"4900",
      "maxAmount":"5100"
    },
    {
      "name": "Sports center",
      "code": "COMMERCIAL.SPORTS_CENTER",
      "active": true,
      "propertyType": "COMMERCIAL",
      "minAmount":"5200",
      "maxAmount":"5500"
    },
     {
      "name": "Institutional",
      "code": "INSTITUTIONAL",
      "active": true,
      "minAmount":"1000",
      "maxAmount":"3000"
    },
     {
      "name": "Temple",
      "code": "INSTITUTIONAL.TEMPLE",
      "active": true,
      "propertyType": "INSTITUTIONAL",
      "minAmount":"5600",
      "maxAmount":"5900"
    },
     {
      "name": "Mosque",
      "code": "INSTITUTIONAL.MOSQUE",
      "active": true,
      "propertyType": "INSTITUTIONAL",
      "minAmount":"6000",
      "maxAmount":"6200"
    },
     {
      "name": "Church",
      "code": "INSTITUTIONAL.CHURCH",
      "active": true,
      "propertyType": "INSTITUTIONAL",
      "minAmount":"6300",
      "maxAmount":"6500"
    },
     {
      "name": "Gurudwara",
      "code": "INSTITUTIONAL.GURUDWARA",
      "active": true,
      "propertyType": "INSTITUTIONAL",
      "minAmount":"6600",
      "maxAmount":"6800"
    },
     {
      "name": "Monastery",
      "code": "INSTITUTIONAL.MONASTERY",
      "active": true,
      "propertyType": "INSTITUTIONAL",
      "minAmount":"6900",
      "maxAmount":"7200"
    },
     {
      "name": "School",
      "code": "INSTITUTIONAL.SCHOOL",
      "active": true,
      "propertyType": "INSTITUTIONAL",
      "minAmount":"7300",
      "maxAmount":"7500"
    },
     {
      "name": "College",
      "code": "INSTITUTIONAL.COLLEGE",
      "active": true,
      "propertyType": "INSTITUTIONAL",
      "minAmount":"7600",
      "maxAmount":"7900"
    },
     {
      "name": "University",
      "code": "INSTITUTIONAL.UNIVERSITY",
      "active": true,
      "propertyType": "INSTITUTIONAL",
      "minAmount":"8000",
      "maxAmount":"8200"
    },
     {
      "name": "Anganwadi",
      "code": "INSTITUTIONAL.ANGANWADI",
      "active": true,
      "propertyType": "INSTITUTIONAL",
      "minAmount":"8300",
      "maxAmount":"8500"
    },
     {
      "name": "Training Institutes",
      "code": "INSTITUTIONAL.TRAINING_INSTITUTES",
      "active": true,
      "propertyType": "INSTITUTIONAL",
      "minAmount":"8600",
      "maxAmount":"8800"
    },
     {
      "name": "Hospital",
      "code": "INSTITUTIONAL.HOSPITAL",
      "active": true,
      "propertyType": "INSTITUTIONAL",
      "minAmount":"8900",
      "maxAmount":"9200"
    },
     {
      "name": "Nursing home",
      "code": "INSTITUTIONAL.NURSING_HOME",
      "active": true,
      "propertyType": "INSTITUTIONAL",
      "minAmount":"9300",
      "maxAmount":"9500"
    },
     {
      "name": "Community health center",
      "code": "INSTITUTIONAL.COMMUNITY_HEALTH_CENTER",
      "active": true,
      "propertyType": "INSTITUTIONAL",
      "minAmount":"9400",
      "maxAmount":"9600"
    },
     {
      "name": "Jail",
      "code": "INSTITUTIONAL.JAIL",
      "active": true,
      "propertyType": "INSTITUTIONAL",
      "minAmount":"9700",
      "maxAmount":"1000"
    },
     {
      "name": "Police station",
      "code": "INSTITUTIONAL.POLICE_STATION",
      "active": true,
      "propertyType": "INSTITUTIONAL",
      "minAmount":"10100",
      "maxAmount":"10500"
    }
  
  ]
}

Slums (Mapped to the locality of the city)

{
	"tenantId": "pb",
	"moduleName": "FSM",
	"Slum": [{
			"code": "SL0001",
			"active": true,
			"name": "Kathagada juanga sahi",
			"locality": "SUN20"
		},
		{
			"code": "SL0002",
			"active": true,
			"name": "Kathagada Parbatia Sahi",
			"locality": "SUN20"
		},
		{
			"code": "SL0003",
			"active": true,
			"name": "Gangadhar Sahi",
			"locality": "SUN35"
		},
		{
			"code": "SL0004",
			"active": true,
			"name": "Pandab Nagar",
			"locality": "SUN35"
		},
		{
			"code": "SL0005",
			"active": true,
			"name": "Haridakhandi Harijana sahi",
			"locality": "SUN35"
		},
		{
			"code": "SL0006",
			"active": true,
			"name": "Haridakhandi Kadalibada Sahi",
			"locality": "SUN55"
		},
		{
			"code": "SL0007",
			"active": true,
			"name": "Haridakhandi Bada sahi",
			"locality": "SUN55"
		},
		{
			"code": "SL0008",
			"active": true,
			"name": "Haridakhandi Redika Sahi",
			"locality": "SUN55"
		},
		{
			"code": "SL0009",
			"active": true,
			"name": "Golapali Sahi",
			"locality": "SUN18"
		},
		{
			"code": "SL0010",
			"active": true,
			"name": "Surya Nagar",
			"locality": "SUN18"
		},
		{
			"code": "SL0011",
			"active": true,
			"name": "Damba Sahi",
			"locality": "SUN18"
		},
		{
			"code": "SL0012",
			"active": true,
			"name": "Raju Dhoba Sahi",
			"locality": "SUN08"
		}
	]
}

PaymentType (Payment preference type)

{
    "tenantId": "pb",
    "moduleName": "FSM",
    "PaymentType": [
        {
            "name": "Pay Now",
            "code": "PRE_PAY",
            "active": true
        },
        {
            "name": "Pay on Service",
            "code": "POST_PAY",
            "active": true
        }
    ]
}

data/pg/FSM/ReceivedPaymentType.json

https://github.com/egovernments/egov-mdms-data/commit/4c028a70ccb715df9574d86dc99d11d93057d30e

https://github.com/egovernments/egov-mdms-data/commit/5a190371c2305131eac40b87b41c7b3f0eef092c

data/pg/FSM/CommonFieldsConfig.json

https://github.com/egovernments/egov-mdms-data/commit/4fac292e055665e5fbe4bfeaa7991c574a2289dc

FSM Persister YML

Integrate following below changes in fsm-persister.yml https://github.com/egovernments/configs/commit/634a4fdd842ec69bdf735e8c985e36499661512f

data/pb/BillingService/BusinessService.json

Update BusinessService.json · egovernments/egov-mdms-data@96cd829

data/pb/DIGIT-UI/RoleStatusMapping.json

#SM-528 updating the status role for fsm collector · egovernments/egov-mdms-data@0d4b0c7

data/pb/BillingService/BusinessService.json

#SM-1435 added minAmountpayable in fsm · egovernments/egov-mdms-data@13e867b

data/pb/amritsar/FSM/ZeroPricing.json

https://github.com/egovernments/egov-mdms-data/commit/bccf684bd1343b3d280c1b87b1f03dcf62c96159

https://github.com/egovernments/egov-mdms-data/commit/7f3e6a02fc62bfdd9ee38dce2da9572ca9885866

data/pb/ACCESSCONTROL-ACTIONS-TEST/actions-test.json

https://github.com/egovernments/egov-mdms-data/commit/06a1bcaca5693a6037cce52eecd53083dd6bd26fDashboard Analytics Configuration

Following are the changes that need to be integrated in dashboard-analytics, and restart the “dashboard-analytics” service

egov-dss-dashboards/dashboard-analytics/ChartApiConfig.json

https://github.com/egovernments/configs/commit/2ae2feecd343d17b908820b86664cee38293a719

https://github.com/egovernments/configs/commit/18e547df409b625b0934e4dc7251590c5f834f83

https://github.com/egovernments/configs/commit/f05d41d983a9ec5381183d3f26497dc2295ad169

https://github.com/egovernments/configs/commit/47c3592252b4236b9a785adf6dd7d0b4dd66e482

https://github.com/egovernments/configs/commit/5b716c195766a573fb542e41d3ca94b54b6aa248

egov-dss-dashboards/dashboard-analytics/MasterDashboardConfig.json

https://github.com/egovernments/configs/commit/c1c4b2ed5e5eb1b153c2648c3307f006566a5a6b

egov-indexer/egov-vehicle.yaml

https://github.com/egovernments/configs/commit/3d9faae0f42550a4e15dcad69630846ba0482de8

Business Service/Workflow Configuration

Create businessService (workflow configuration) using the /businessservice/_create. Following is the product configuration for FSM:

{
  "RequestInfo": {
    "apiId": "Rainmaker",
    "action": "",
    "did": 1,
    "key": "",
    "msgId": "20170310130900|en_IN",
    "requesterId": "",
    "ts": 1513579888683,
    "ver": ".01",
    "authToken": "{{devAuth}}",
    "userInfo": {
      "id": 73,
      "userName": null,
      "name": null,
      "type": "EMPLOYEE",
      "mobileNumber": null,
      "emailId": null,
      "roles": [
        {
          "id": 2,
          "name": "Customer Support Representative",
          "code": null,
          "tenantId": null
        }
      ],
      "tenantId": null,
      "uuid": "uuid"
    }
  },
  "BusinessServices": [
        {
            "tenantId": "pb",
            "businessService": "FSM",
            "business": "fsm",
            "businessServiceSla": 172800000,
            "states": [
                {
                    "tenantId": "pb",
                    "sla": null,
                    "state": null,
                    "applicationStatus": null,
                    "docUploadRequired": false,
                    "isStartState": true,
                    "isTerminateState": false,
                    "isStateUpdatable": true,
                    "actions": [
                        {
                            "tenantId": "pb",
                            "action": "APPLY",
                            "nextState": "PENDING_APPL_FEE_PAYMENT",
                            "roles": [
                                "FSM_CREATOR_EMP"
                            ]
                        },
                        {
                            "tenantId": "pb",
                            "action": "CREATE",
                            "nextState": "CREATED",
                            "roles": [
                                "CITIZEN"
                            ]
                        }
                    ]
                },
                {
                    "tenantId": "pb",
                    "sla": null,
                    "state": "CREATED",
                    "applicationStatus": "CREATED",
                    "docUploadRequired": false,
                    "isStartState": false,
                    "isTerminateState": false,
                    "isStateUpdatable": true,
                    "actions": [
                        {
                            "tenantId": "pb",
                            "action": "REJECT",
                            "nextState": "REJECTED",
                            "roles": [
                                "FSM_ADMIN"
                            ]
                        },
                        {
                            "tenantId": "pb",
                            "action": "SUBMIT",
                            "nextState": "PENDING_APPL_FEE_PAYMENT",
                            "roles": [
                                "FSM_EDITOR_EMP"
                            ]
                        }
                    ]
                },
                {
                    "tenantId": "pb",
                    "sla": null,
                    "state": "PENDING_APPL_FEE_PAYMENT",
                    "applicationStatus": "PENDING_APPL_FEE_PAYMENT",
                    "docUploadRequired": false,
                    "isStartState": false,
                    "isTerminateState": false,
                    "isStateUpdatable": true,
                    "actions": [
                        {
                            "tenantId": "pb",
                            "action": "REJECT",
                            "nextState": "REJECTED",
                            "roles": [
                                "FSM_ADMIN"
                            ]
                        },
                        {
                            "tenantId": "pb",
                            "action": "SENDBACK",
                            "nextState": "CREATED",
                            "roles": [
                                "FSM_ADMIN"
                            ]
                        },
                        {
                            "tenantId": "pb",
                            "action": "PAY",
                            "nextState": "ASSING_DSO",
                            "roles": [
                                "CITIZEN",
                                "FSM_COLLECTOR"
                            ]
                        }
                    ]
                },
                {
                    "tenantId": "pb",
                    "sla": null,
                    "state": "ASSING_DSO",
                    "applicationStatus": "ASSING_DSO",
                    "docUploadRequired": false,
                    "isStartState": false,
                    "isTerminateState": false,
                    "isStateUpdatable": true,
                    "actions": [
                        {
                            "tenantId": "pb",
                            "action": "CANCEL",
                            "nextState": "CANCELED",
                            "roles": [
                                "FSM_ADMIN"
                            ]
                        },
                        {
                            "tenantId": "pb",
                            "action": "ASSIGN",
                            "nextState": "PENDING_DSO_APPROVAL",
                            "roles": [
                                "FSM_EDITOR_EMP"
                            ]
                        }
                    ]
                },
                {
                    "tenantId": "pb",
                    "sla": null,
                    "state": "DSO_REJECTED",
                    "applicationStatus": "DSO_REJECTED",
                    "docUploadRequired": false,
                    "isStartState": false,
                    "isTerminateState": false,
                    "isStateUpdatable": true,
                    "actions": [
                        {
                            "tenantId": "pb",
                            "currentState": "DSO_REJECTED",
                            "action": "CANCEL",
                            "nextState": "CANCELED",
                            "roles": [
                                "FSM_ADMIN"
                            ]
                        },
                        {
                            "tenantId": "pb",
                            "currentState": "DSO_REJECTED",
                            "action": "REASSING",
                            "nextState": "PENDING_DSO_APPROVAL",
                            "roles": [
                                "FSM_EDITOR_EMP"
                            ]
                        },
                        {
                            "tenantId": "pb",
                            "currentState": "DSO_REJECTED",
                            "action": "SENDBACK",
                            "nextState": "PENDING_DSO_APPROVAL",
                            "roles": [
                                "FSM_ADMIN"
                            ]
                        }
                    ]
                },
                {
                    "tenantId": "pb",
                    "sla": null,
                    "state": "DSO_INPROGRESS",
                    "applicationStatus": "DSO_INPROGRESS",
                    "docUploadRequired": false,
                    "isStartState": false,
                    "isTerminateState": false,
                    "isStateUpdatable": true,
                    "actions": [
                        {
                            "tenantId": "pb",
                            "currentState": "DSO_INPROGRESS",
                            "action": "SENDBACK",
                            "nextState": "PENDING_DSO_APPROVAL",
                            "roles": [
                                "FSM_ADMIN"
                            ]
                        },
                        {
                            "tenantId": "pb",
                            "currentState": "DSO_INPROGRESS",
                            "action": "DECLINE",
                            "nextState": "ASSING_DSO",
                            "roles": [
                                "FSM_DSO",
                                "FSM_EDITOR_EMP"
                            ]
                        },
                        {
                            "tenantId": "pb",
                            "currentState": "DSO_INPROGRESS",
                            "action": "COMPLETED",
                            "nextState": "CITIZEN_FEEDBACK_PENDING",
                            "roles": [
                                "FSM_DSO",
                                "FSM_EDITOR_EMP"
                            ]
                        },
                        {
                            "tenantId": "pb",
                            "currentState": "DSO_INPROGRESS",
                            "action": "CANCEL",
                            "nextState": "CANCELED",
                            "roles": [
                                "FSM_ADMIN"
                            ]
                        },
                        {
                            "tenantId": "pb",
                            "currentState": "DSO_INPROGRESS",
                            "action": "REASSING",
                            "nextState": "PENDING_DSO_APPROVAL",
                            "roles": [
                                "FSM_EDITOR_EMP"
                            ]
                        }
                    ]
                },
                {
                    "tenantId": "pb",
                    "sla": null,
                    "state": "PENDING_DSO_APPROVAL",
                    "applicationStatus": "PENDING_DSO_APPROVAL",
                    "docUploadRequired": false,
                    "isStartState": false,
                    "isTerminateState": false,
                    "isStateUpdatable": true,
                    "actions": [
                        {
                            "tenantId": "pb",
                            "currentState": "PENDING_DSO_APPROVAL",
                            "action": "DSO_REJECT",
                            "nextState": "DSO_REJECTED",
                            "roles": [
                                "FSM_DSO"
                            ]
                        },
                        {
                            "tenantId": "pb",
                            "currentState": "PENDING_DSO_APPROVAL",
                            "action": "DSO_ACCEPT",
                            "nextState": "DSO_INPROGRESS",
                            "roles": [
                                "FSM_DSO"
                            ]
                        },
                        {
                            "tenantId": "pb",
                            "currentState": "PENDING_DSO_APPROVAL",
                            "action": "CANCEL",
                            "nextState": "CANCELED",
                            "roles": [
                                "FSM_ADMIN"
                            ]
                        },
                        {
                            "tenantId": "pb",
                            "currentState": "PENDING_DSO_APPROVAL",
                            "action": "REASSING",
                            "nextState": "PENDING_DSO_APPROVAL",
                            "roles": [
                                "FSM_EDITOR_EMP"
                            ]
                        }
                    ]
                },
                {
                    "tenantId": "pb",
                    "sla": null,
                    "state": "COMPLETED",
                    "applicationStatus": "COMPLETED",
                    "docUploadRequired": false,
                    "isStartState": false,
                    "isTerminateState": true,
                    "isStateUpdatable": false
                },
                {
                    "sla": null,
                    "state": "REJECTED",
                    "applicationStatus": "REJECTED",
                    "docUploadRequired": false,
                    "isStartState": false,
                    "isTerminateState": true,
                    "isStateUpdatable": false,
                    "actions": null
                },
                {
                    "tenantId": "pb",
                    "sla": null,
                    "state": "CANCELED",
                    "applicationStatus": "CANCELED",
                    "docUploadRequired": false,
                    "isStartState": false,
                    "isTerminateState": true,
                    "isStateUpdatable": false,
                    "actions": null
                },
                {
                    "tenantId": "pb",
                    "sla": null,
                    "state": "CITIZEN_FEEDBACK_PENDING",
                    "applicationStatus": "CITIZEN_FEEDBACK_PENDING",
                    "docUploadRequired": false,
                    "isStartState": false,
                    "isTerminateState": false,
                    "isStateUpdatable": false,
                    "actions": [
                        {
                            "tenantId": "pb",
                            "currentState": "CITIZEN_FEEDBACK_PENDING",
                            "action": "RATE",
                            "nextState": "COMPLETED",
                            "roles": [
                                "CITIZEN"
                            ]
                        }
                    ]
                }
            ]
        }
    ]
}

For post-pay new business service, FSM_POST_PAY_SERVICE has been created. Create businessService (workflow configuration) using the /businessservice/_create. Following is the product configuration for FSM_POST_PAY_SERVICE:

{
  "BusinessServices": [
        {
            "tenantId": "pb",
            "businessService": "FSM_POST_PAY_SERVICE",
            "business": "fsm",
            "businessServiceSla": 172800000,
            "states": [
                {
                    "tenantId": "pb",
                    "sla": null,
                    "state": null,
                    "applicationStatus": null,
                    "docUploadRequired": false,
                    "isStartState": true,
                    "isTerminateState": false,
                    "isStateUpdatable": true,
                    "actions": [
                        {
                            "tenantId": "pb",
							"currentState": null,
                            "action": "APPLY",
                            "nextState": "ASSIGN_DSO",
                            "roles": [
                                "FSM_CREATOR_EMP"
                            ]
                        },
                        {
                            "tenantId": "pb",
							"currentState": null,
                            "action": "CREATE",
                            "nextState": "CREATED",
                            "roles": [
                                "CITIZEN"
                            ]
                        }
                    ]
                },
                {
                    "tenantId": "pb",
                    "sla": null,
                    "state": "CREATED",
                    "applicationStatus": "CREATED",
                    "docUploadRequired": false,
                    "isStartState": false,
                    "isTerminateState": false,
                    "isStateUpdatable": true,
                    "actions": [
                        {
                            "tenantId": "pb",
							"currentState": "CREATED",
                            "action": "REJECT",
                            "nextState": "REJECTED",
                            "roles": [
                                "FSM_ADMIN"
                            ]
                        },
                        {
                            "tenantId": "pb",
							"currentState": "CREATED",
                            "action": "SUBMIT",
                            "nextState": "ASSIGN_DSO",
                            "roles": [
                                "FSM_EDITOR_EMP"
                            ]
                        }
                    ]
                },
                
                {
                    "tenantId": "pb",
                    "sla": null,
                    "state": "ASSIGN_DSO",
                    "applicationStatus": "ASSIGN_DSO",
                    "docUploadRequired": false,
                    "isStartState": false,
                    "isTerminateState": false,
                    "isStateUpdatable": true,
                    "actions": [
                        {
                            "tenantId": "pb",
							"currentState": "ASSIGN_DSO",
                            "action": "CANCEL",
                            "nextState": "CANCELED",
                            "roles": [
                                "FSM_ADMIN"
                            ]
                        },
                        {
                            "tenantId": "pb",
							"currentState": "ASSIGN_DSO",
                            "action": "ASSIGN",
                            "nextState": "PENDING_DSO_APPROVAL",
                            "roles": [
                                "FSM_EDITOR_EMP"
                            ]
                        }
                    ]
                },
                {
                    "tenantId": "pb",
                    "sla": null,
                    "state": "PENDING_DSO_APPROVAL",
                    "applicationStatus": "PENDING_DSO_APPROVAL",
                    "docUploadRequired": false,
                    "isStartState": false,
                    "isTerminateState": false,
                    "isStateUpdatable": true,
                    "actions": [
                       	{
                            "tenantId": "pb",
                            "currentState": "PENDING_DSO_APPROVAL",
                            "action": "DSO_ACCEPT",
                            "nextState": "DSO_INPROGRESS",
                            "roles": [
                                 "FSM_DSO",
                                 "FSM_EDITOR_EMP"
                            ]
                        },
						{
                            "tenantId": "pb",
                            "currentState": "PENDING_DSO_APPROVAL",
                            "action": "CANCEL",
                            "nextState": "CANCELED",
                            "roles": [
                                "FSM_ADMIN"
                            ]
                        },
						{
                            "tenantId": "pb",
                            "currentState": "PENDING_DSO_APPROVAL",
                            "action": "REASSING",
                            "nextState": "PENDING_DSO_APPROVAL",
                            "roles": [
                                "FSM_EDITOR_EMP"
                            ]
                        },
						{
                            "tenantId": "pb",
                            "currentState": "PENDING_DSO_APPROVAL",
                            "action": "DSO_REJECT",
                            "nextState": "DSO_REJECTED",
                            "roles": [
                                 "FSM_DSO",
                                 "FSM_EDITOR_EMP"
                            ]
                        }
                    ]
                },
				 {
                    "tenantId": "pb",
                    "sla": null,
                    "state": "DSO_REJECTED",
                    "applicationStatus": "DSO_REJECTED",
                    "docUploadRequired": false,
                    "isStartState": false,
                    "isTerminateState": false,
                    "isStateUpdatable": true,
                    "actions": [
                        {
                            "tenantId": "pb",
                            "currentState": "DSO_REJECTED",
                            "action": "CANCEL",
                            "nextState": "CANCELED",
                            "roles": [
                                "FSM_ADMIN"
                            ],
							"active": true
                        },
                        {
                            "tenantId": "pb",
                            "currentState": "DSO_REJECTED",
                            "action": "REASSING",
                            "nextState": "PENDING_DSO_APPROVAL",
                            "roles": [
                                "FSM_EDITOR_EMP"
                            ],
							 "active": true
                        },
                        {
                            "tenantId": "pb",
                            "currentState": "DSO_REJECTED",
                            "action": "SENDBACK",
                            "nextState": "PENDING_DSO_APPROVAL",
                            "roles": [
                                "FSM_ADMIN"
                            ],
							"active": true
                        }
                    ]
                },
                {
                    "tenantId": "pb",
                    "sla": null,
                    "state": "DSO_INPROGRESS",
                    "applicationStatus": "DSO_INPROGRESS",
                    "docUploadRequired": false,
                    "isStartState": false,
                    "isTerminateState": false,
                    "isStateUpdatable": true,
                    "actions": [
                        {
                            "tenantId": "pb",
                            "currentState": "DSO_INPROGRESS",
                            "action": "SENDBACK",
                            "nextState": "PENDING_DSO_APPROVAL",
                            "roles": [
                                "FSM_ADMIN"
                            ]
                        },
                        {
                            "tenantId": "pb",
                            "currentState": "DSO_INPROGRESS",
                            "action": "DECLINE",
                            "nextState": "ASSIGN_DSO",
                            "roles": [
                                "FSM_DSO",
                                "FSM_EDITOR_EMP"
                            ]
                        },
                       
                        {
                            "tenantId": "pb",
                            "currentState": "DSO_INPROGRESS",
                            "action": "CANCEL",
                            "nextState": "CANCELED",
                            "roles": [
                                "FSM_ADMIN"
                            ]
                        },
                        {
                            "tenantId": "pb",
                            "currentState": "DSO_INPROGRESS",
                            "action": "REASSING",
                            "nextState": "PENDING_DSO_APPROVAL",
                            "roles": [
                                "FSM_EDITOR_EMP"
                            ]
                        },
						{
                            "tenantId": "pb",
                            "currentState": "DSO_INPROGRESS",
                            "action": "SCHEDULE",
                            "nextState": "PENDING_APPL_FEE_PAYMENT",
                            "roles": [
                                "FSM_EDITOR_EMP",
								"FSM_DSO"
							]
                        }
                    ]
                },
				{
                    "tenantId": "pb",
                    "sla": null,
                    "state": "PENDING_APPL_FEE_PAYMENT",
                    "applicationStatus": "PENDING_APPL_FEE_PAYMENT",
                    "docUploadRequired": false,
                    "isStartState": false,
                    "isTerminateState": false,
                    "isStateUpdatable": true,
                    "actions": [
                        {
                            "tenantId": "pb",
                            "currentState": "PENDING_APPL_FEE_PAYMENT",
                            "action": "CANCEL",
                            "nextState": "CANCELED",
                            "roles": [
                                "FSM_ADMIN"
                            ],
                            "active": true
                        },
                        {
                            "tenantId": "pb",
                            "currentState": "PENDING_APPL_FEE_PAYMENT",
                            "action": "SENDBACK",
                            "nextState": "DSO_INPROGRESS",
                            "roles": [
                                "FSM_ADMIN"
                            ],
                            "active": true
                        },
                        {
                            "tenantId": "pb",
                            "currentState": "PENDING_APPL_FEE_PAYMENT",
                            "action": "PAY",
                            "nextState": "DISPOSAL_IN_PROGRESS",
                            "roles": [
                                "CITIZEN",
                                "FSM_COLLECTOR"
                            ],
                            "active": true
                        }
                    ]
                },
				{
                    "tenantId": "pb",
                    "sla": null,
                    "state": "DISPOSAL_IN_PROGRESS",
                    "applicationStatus": "DISPOSAL_IN_PROGRESS",
                    "docUploadRequired": false,
                    "isStartState": false,
                    "isTerminateState": false,
                    "isStateUpdatable": true,
                    "actions": [
                        {
                            "tenantId": "pb",
                            "currentState": "DISPOSAL_IN_PROGRESS",
                            "action": "CANCEL",
                            "nextState": "CANCELED",
                            "roles": [
                                "FSM_ADMIN"
                            ],
                            "active": true
                        },
                        {
                            "tenantId": "pb",
                            "currentState": "DISPOSAL_IN_PROGRESS",
                            "action": "COMPLETED",
                            "nextState": "CITIZEN_FEEDBACK_PENDING",
                            "roles": [
                                "FSM_DSO",
                                "FSM_EDITOR_EMP"
                            ],
                            "active": true
                        }
                       
                    ]
                },
				{
                    "tenantId": "pb",
                    "sla": null,
                    "state": "CITIZEN_FEEDBACK_PENDING",
                    "applicationStatus": "CITIZEN_FEEDBACK_PENDING",
                    "docUploadRequired": false,
                    "isStartState": false,
                    "isTerminateState": false,
                    "isStateUpdatable": false,
                    "actions": [
                        {
                            "tenantId": "pb",
                            "currentState": "CITIZEN_FEEDBACK_PENDING",
                            "action": "RATE",
                            "nextState": "COMPLETED",
                            "roles": [
                                "CITIZEN"
                            ],
						    "active": true
                        }
                    ]
                },
                {
                    "tenantId": "pb",
                    "sla": null,
                    "state": "COMPLETED",
                    "applicationStatus": "COMPLETED",
                    "docUploadRequired": false,
                    "isStartState": false,
                    "isTerminateState": true,
                    "isStateUpdatable": false,
					"actions": null
                },
                {
                    "tenantId": "pb",
					"sla": null,
                    "state": "REJECTED",
                    "applicationStatus": "REJECTED",
                    "docUploadRequired": false,
                    "isStartState": false,
                    "isTerminateState": true,
                    "isStateUpdatable": false,
                    "actions": null
                },
                {
                    "tenantId": "pb",
                    "sla": null,
                    "state": "CANCELED",
                    "applicationStatus": "CANCELED",
                    "docUploadRequired": false,
                    "isStartState": false,
                    "isTerminateState": true,
                    "isStateUpdatable": false,
                    "actions": null
                }
                
            ]
        }
    ],
	 "RequestInfo": {
    "apiId": "Rainmaker",
    "authToken": "e37d7087-6436-492f-ad5b-692a515cba58",
    "userInfo": {
      "id": 24226,
      "uuid": "11b0e02b-0145-4de2-bc42-c97b96264807",
      "userName": "amr001",
      "name": "leela",
      "mobileNumber": "9814424443",
      "emailId": "[email protected]",
      "locale": null,
      "type": "EMPLOYEE",
      "roles": [
        {
          "name": "NoC counter employee",
          "code": "NOC_CEMP",
          "tenantId": "pb.amritsar"
        },
        {
          "name": "Grievance Routing Officer",
          "code": "GRO",
          "tenantId": "pb.amritsar"
        },
        {
          "name": "WS Document Verifier",
          "code": "WS_DOC_VERIFIER",
          "tenantId": "pb.amritsar"
        },
        {
          "name": "autoescalation emp",
          "code": "AUTO_ESCALATE",
          "tenantId": "pb.amritsar"
        },
        {
          "name": "FSM Employee Report Viewer",
          "code": "FSM_REPORT_VIEWER",
          "tenantId": "pb.amritsar"
        },
        {
          "name": "PGR Last Mile Employee",
          "code": "PGR_LME",
          "tenantId": "pb.amritsar"
        },
        {
          "name": "TL Field Inspector",
          "code": "TL_FIELD_INSPECTOR",
          "tenantId": "pb.amritsar"
        },
        {
          "name": "BPA Field Inspector",
          "code": "BPA_FIELD_INSPECTOR",
          "tenantId": "pb.amritsar"
        },
        {
          "name": "TL Approver",
          "code": "TL_APPROVER",
          "tenantId": "pb.amritsar"
        },
        {
          "name": "BPA Services Approver",
          "code": "BPA_APPROVER",
          "tenantId": "pb.amritsar"
        },
        {
          "name": "Fire Noc Department Approver",
          "code": "FIRE_NOC_APPROVER",
          "tenantId": "pb.amritsar"
        },
        {
          "name": "Field Employee",
          "code": "FEMP",
          "tenantId": "pb.amritsar"
        },
        {
          "name": "Counter Employee",
          "code": "CEMP",
          "tenantId": "pb.amritsar"
        },
        {
          "name": "WS Counter Employee",
          "code": "WS_CEMP",
          "tenantId": "pb.amritsar"
        },
        {
          "name": "BPAREG Approver",
          "code": "BPAREG_APPROVER",
          "tenantId": "pb.amritsar"
        },
        {
          "name": "WS Field Inspector",
          "code": "WS_FIELD_INSPECTOR",
          "tenantId": "pb.amritsar"
        },
        {
          "name": "Collection Operator",
          "code": "COLL_OPERATOR",
          "tenantId": "pb.amritsar"
        },
        {
          "name": "TL doc verifier",
          "code": "TL_DOC_VERIFIER",
          "tenantId": "pb.amritsar"
        },
        {
          "name": "CSC Collection Operator",
          "code": "CSC_COLL_OPERATOR",
          "tenantId": "pb.amritsar"
        },
        {
          "name": "Employee",
          "code": "EMPLOYEE",
          "tenantId": "pb.amritsar"
        },
        {
          "name": "TL Counter Employee",
          "code": "TL_CEMP",
          "tenantId": "pb.amritsar"
        },
        {
          "name": "FSM Desluding Operator",
          "code": "FSM_DSO",
          "tenantId": "pb.amritsar"
        },
        {
          "name": "TL Creator",
          "code": "TL_CREATOR",
          "tenantId": "pb.amritsar"
        },
        {
          "name": "BPAREG doc verifier",
          "code": "BPAREG_DOC_VERIFIER",
          "tenantId": "pb.amritsar"
        },
        {
          "name": "Customer Support Representative",
          "code": "CSR",
          "tenantId": "pb.amritsar"
        },
        {
          "name": "NoC counter Approver",
          "code": "NOC_APPROVER",
          "tenantId": "pb.amritsar"
        },
        {
          "name": "HRMS Admin",
          "code": "HRMS_ADMIN",
          "tenantId": "pb.amritsar"
        },
        {
          "name": "Universal Collection Employee",
          "code": "UC_EMP",
          "tenantId": "pb.amritsar"
        },
        {
          "name": "WS Approver",
          "code": "WS_APPROVER",
          "tenantId": "pb.amritsar"
        },
        {
          "name": "BPA Services verifier",
          "code": "BPA_VERIFIER",
          "tenantId": "pb.amritsar"
        },
        {
          "name": "PT Counter Approver",
          "code": "PT_APPROVER",
          "tenantId": "pb.amritsar"
        },
        {
          "name": "NoC Field Inpector",
          "code": "NOC_FIELD_INSPECTOR",
          "tenantId": "pb.amritsar"
        },
        {
          "name": "Grievance Officer",
          "code": "GO",
          "tenantId": "pb.amritsar"
        },
        {
          "name": "Super User",
          "code": "SUPERUSER",
          "tenantId": "pb.amritsar"
        },
        {
          "name": "NOC Department Approver",
          "code": "NOC_DEPT_APPROVER",
          "tenantId": "pb.amritsar"
        },
        {
          "name": "WS Clerk",
          "code": "WS_CLERK",
          "tenantId": "pb.amritsar"
        },
        {
          "name": "NoC Doc Verifier",
          "code": "NOC_DOC_VERIFIER",
          "tenantId": "pb.amritsar"
        }
      ],
      "active": true,
      "tenantId": "pb.amritsar",
      "permanentCity": null
    },
    "msgId": "1646071179143|en_IN"
  }
}

In the system, the FSM_POST_PAY_SERVICE and FSM (that is, the above two business services) are removed and we have introduced a new Business service for advance payment application and zero price application.

For Advance new Business service, FSM_ADVANCE_PAY_SERVICE has been created.

Create businessService (workflow configuration) using the /businessservice/_create. Following is the product configuration for FSM_ADVANCE_PAY_SERVICE:

{

    "BusinessServices": [

        {

            "tenantId": "pb",

            "businessService": "FSM_ADVANCE_PAY_SERVICE",

            "business": "fsm",

            "businessServiceSla": 172800000,

            "states": [

                {

                    "tenantId": "pb",

                    "sla": null,

                    "state": null,

                    "applicationStatus": null,

                    "docUploadRequired": false,

                    "isStartState": true,

                    "isTerminateState": false,

                    "isStateUpdatable": true,

                    "actions": [

                        {

                            "tenantId": "pb",

                            "action": "APPLY",

                            "nextState": "PENDING_APPL_FEE_PAYMENT",

                            "roles": [

                                "FSM_CREATOR_EMP"

                            ]

                        },

                        {

                            "tenantId": "pb",

                            "action": "CREATE",

                            "nextState": "CREATED",

                            "roles": [

                                "CITIZEN"

                            ]

                        }

                    ]

                },

                {

                    "tenantId": "pb",

                    "sla": null,

                    "state": "CREATED",

                    "applicationStatus": "CREATED",

                    "docUploadRequired": false,

                    "isStartState": false,

                    "isTerminateState": false,

                    "isStateUpdatable": true,

                    "actions": [

                        {

                            "tenantId": "pb",

                            "action": "REJECT",

                            "nextState": "REJECTED",

                            "roles": [

                                "FSM_ADMIN"

                            ]

                        },

                        {

                            "tenantId": "pb",

                            "action": "SUBMIT",

                            "nextState": "PENDING_APPL_FEE_PAYMENT",

                            "roles": [

                                "FSM_EDITOR_EMP"

                            ]

                        }

                    ]

                },

                {

                    "tenantId": "pb",

                    "sla": null,

                    "state": "PENDING_APPL_FEE_PAYMENT",

                    "applicationStatus": "PENDING_APPL_FEE_PAYMENT",

                    "docUploadRequired": false,

                    "isStartState": false,

                    "isTerminateState": false,

                    "isStateUpdatable": true,

                    "actions": [

                        {

                            "tenantId": "pb",

                            "action": "REJECT",

                            "nextState": "REJECTED",

                            "roles": [

                                "FSM_ADMIN"

                            ]

                        },

                        {

                            "tenantId": "pb",

                            "action": "SENDBACK",

                            "nextState": "CREATED",

                            "roles": [

                                "FSM_ADMIN"

                            ]

                        },

                        {

                            "tenantId": "pb",

                            "action": "PAY",

                            "nextState": "ASSING_DSO",

                            "roles": [

                                "CITIZEN",

                                "FSM_COLLECTOR"

                            ]

                        }

                    ]

                },

                {

                    "tenantId": "pb",

                    "sla": null,

                    "state": "ASSING_DSO",

                    "applicationStatus": "ASSING_DSO",

                    "docUploadRequired": false,

                    "isStartState": false,

                    "isTerminateState": false,

                    "isStateUpdatable": true,

                    "actions": [

                        {

                            "tenantId": "pb",

                            "action": "CANCEL",

                            "nextState": "CANCELED",

                            "roles": [

                                "FSM_ADMIN"

                            ]

                        },

                        {

                            "tenantId": "pb",

                            "action": "ASSIGN",

                            "nextState": "PENDING_DSO_APPROVAL",

                            "roles": [

                                "FSM_EDITOR_EMP"

                            ]

                        }

                    ]

                },

                {

                    "tenantId": "pb",

                    "sla": null,

                    "state": "DSO_REJECTED",

                    "applicationStatus": "DSO_REJECTED",

                    "docUploadRequired": false,

                    "isStartState": false,

                    "isTerminateState": false,

                    "isStateUpdatable": true,

                    "actions": [

                        {

                            "tenantId": "pb",

                            "currentState": "DSO_REJECTED",

                            "action": "CANCEL",

                            "nextState": "CANCELED",

                            "roles": [

                                "FSM_ADMIN"

                            ]

                        },

                        {

                            "tenantId": "pb",

                            "currentState": "DSO_REJECTED",

                            "action": "REASSING",

                            "nextState": "PENDING_DSO_APPROVAL",

                            "roles": [

                                "FSM_EDITOR_EMP"

                            ]

                        },

                        {

                            "tenantId": "pb",

                            "currentState": "DSO_REJECTED",

                            "action": "SENDBACK",

                            "nextState": "PENDING_DSO_APPROVAL",

                            "roles": [

                                "FSM_ADMIN"

                            ]

                        }

                    ]

                },

                {

                    "tenantId": "pb",

                    "sla": null,

                    "state": "DSO_INPROGRESS",

                    "applicationStatus": "DSO_INPROGRESS",

                    "docUploadRequired": false,

                    "isStartState": false,

                    "isTerminateState": false,

                    "isStateUpdatable": true,

                    "actions": [

                        {

                            "tenantId": "pb",

                            "currentState": "DSO_INPROGRESS",

                            "action": "SENDBACK",

                            "nextState": "PENDING_DSO_APPROVAL",

                            "roles": [

                                "FSM_ADMIN"

                            ]

                        },

                        {

                            "tenantId": "pb",

                            "currentState": "DSO_INPROGRESS",

                            "action": "COMPLETED",

                            "nextState": "CITIZEN_FEEDBACK_PENDING",

                            "roles": [

                                "FSM_DSO",

                                "FSM_EDITOR_EMP"

                            ]

                        },

                        {

                            "tenantId": "pb",

                            "currentState": "DSO_INPROGRESS",

                            "action": "CANCEL",

                            "nextState": "CANCELED",

                            "roles": [

                                "FSM_ADMIN"

                            ]

                        },

                        {

                            "tenantId": "pb",

                            "currentState": "DSO_INPROGRESS",

                            "action": "UPDATE",

                            "nextState": "DSO_INPROGRESS",

                            "roles": [

                                "FSM_DSO",

                                "FSM_EDITOR_EMP"

                            ]

                        },

                        {

                            "tenantId": "pb",

                            "action": "PAY",

                            "nextState": "DSO_INPROGRESS",

                            "roles": [

                                "CITIZEN",

                                "FSM_COLLECTOR"

                            ]

                        },

                        {

                            "tenantId": "pb",

                            "currentState": "DSO_INPROGRESS",

                            "action": "REASSING",

                            "nextState": "PENDING_DSO_APPROVAL",

                            "roles": [

                                "FSM_EDITOR_EMP"

                            ]

                        }

                    ]

                },

                {

                    "tenantId": "pb",

                    "sla": null,

                    "state": "PENDING_DSO_APPROVAL",

                    "applicationStatus": "PENDING_DSO_APPROVAL",

                    "docUploadRequired": false,

                    "isStartState": false,

                    "isTerminateState": false,

                    "isStateUpdatable": true,

                    "actions": [

                        {

                            "tenantId": "pb",

                            "currentState": "PENDING_DSO_APPROVAL",

                            "action": "DSO_REJECT",

                            "nextState": "DSO_REJECTED",

                            "roles": [

                                "FSM_DSO",

                                "FSM_EDITOR_EMP"

                            ]

                        },

                        {

                            "tenantId": "pb",

                            "currentState": "PENDING_DSO_APPROVAL",

                            "action": "DSO_ACCEPT",

                            "nextState": "DSO_INPROGRESS",

                            "roles": [

                                "FSM_DSO",

                                "FSM_EDITOR_EMP"

                            ]

                        },

                        {

                            "tenantId": "pb",

                            "currentState": "PENDING_DSO_APPROVAL",

                            "action": "CANCEL",

                            "nextState": "CANCELED",

                            "roles": [

                                "FSM_ADMIN"

                            ]

                        },

                        {

                            "tenantId": "pb",

                            "currentState": "PENDING_DSO_APPROVAL",

                            "action": "REASSING",

                            "nextState": "PENDING_DSO_APPROVAL",

                            "roles": [

                                "FSM_EDITOR_EMP"

                            ]

                        }

                    ]

                },

                {

                    "tenantId": "pb",

                    "sla": null,

                    "state": "COMPLETED",

                    "applicationStatus": "COMPLETED",

                    "docUploadRequired": false,

                    "isStartState": false,

                    "isTerminateState": true,

                    "isStateUpdatable": false

                },

                {

                    "sla": null,

                    "state": "REJECTED",

                    "applicationStatus": "REJECTED",

                    "docUploadRequired": false,

                    "isStartState": false,

                    "isTerminateState": true,

                    "isStateUpdatable": false,

                    "actions": null

                },

                {

                    "tenantId": "pb",

                    "sla": null,

                    "state": "CANCELED",

                    "applicationStatus": "CANCELED",

                    "docUploadRequired": false,

                    "isStartState": false,

                    "isTerminateState": true,

                    "isStateUpdatable": false,

                    "actions": null

                },

                {

                    "tenantId": "pb",

                    "sla": null,

                    "state": "CITIZEN_FEEDBACK_PENDING",

                    "applicationStatus": "CITIZEN_FEEDBACK_PENDING",

                    "docUploadRequired": false,

                    "isStartState": false,

                    "isTerminateState": false,

                    "isStateUpdatable": false,

                    "actions": [

                        {

                            "tenantId": "pb",

                            "currentState": "CITIZEN_FEEDBACK_PENDING",

                            "action": "RATE",

                            "nextState": "COMPLETED",

                            "roles": [

                                "CITIZEN"

                            ]

                        }

                    ]

                }

            ]

        }

    ],

    "RequestInfo": {

        "apiId": "Rainmaker",

        "action": "",

        "did": 1,

        "key": "",

        "msgId": "20170310130900|en_IN",

        "requesterId": "",

        "ts": 1513579888683,

        "ver": ".01",

        "authToken": "c6aa4196-0e1b-4634-802b-b85fa13ae6ce",

        "userInfo": {

            "id": 30074,

            "uuid": "5130f2e3-efc1-401a-94fb-b9e60d9fa17d",

            "userName": "XYZ",

            "name": "XYZ",

            "mobileNumber": "8897970021",

            "emailId": null,

            "locale": null,

            "type": "EMPLOYEE",

            "roles": [

                {

                    "name": "FSM Employee Application Viewer",

                    "code": "FSM_VIEW_EMP",

                    "tenantId": "pb.amritsar"

                },

                {

                    "name": "Employee",

                    "code": "EMPLOYEE",

                    "tenantId": "pb.amritsar"

                },

                {

                    "name": "National Dashboard Administrator",

                    "code": "NATADMIN",

                    "tenantId": "pb.amritsar"

                },

                {

                    "name": "TL Field Inspector",

                    "code": "TL_FIELD_INSPECTOR",

                    "tenantId": "pb.amritsar"

                },

                {

                    "name": "ptcollection emp",

                    "code": "PT_COLLECTION_EMP",

                    "tenantId": "pb.amritsar"

                },

                {

                    "name": "EMPLOYEE ADMIN",

                    "code": "EMPLOYEE ADMIN",

                    "tenantId": "pb.amritsar"

                },

                {

                    "name": "HRMS Admin",

                    "code": "HRMS_ADMIN",

                    "tenantId": "pb.amritsar"

                },

                {

                    "name": "Universal Collection Employee",

                    "code": "UC_EMP",

                    "tenantId": "pb.amritsar"

                },

                {

                    "name": "State Administrator",

                    "code": "STADMIN",

                    "tenantId": "pb.amritsar"

                },

                {

                    "name": "Super User",

                    "code": "SUPERUSER",

                    "tenantId": "pb.amritsar"

                },

                {

                    "name": "FSM Employee Application Creator",

                    "code": "FSM_CREATOR_EMP",

                    "tenantId": "pb.amritsar"

                },

                {

                    "name": "FSM Employee Dashboard Viewer",

                    "code": "FSM_DASHBOARD_VIEWER",

                    "tenantId": "pb.amritsar"

                },

                {

                    "name": "Anonymous User",

                    "code": "ANONYMOUS",

                    "tenantId": "pb.amritsar"

                }

            ],

            "active": true,

            "tenantId": "pb.amritsar",

            "permanentCity": null

        }

    }

}

For Advance Zero new Business service PAY_LATER_SERVICE has been created

Create businessService (workflow configuration) using the /businessservice/_create. Following is the product configuration for PAY_LATER_SERVICE:

{
    "BusinessServices":[
        {
            "tenantId": "pb",
            "businessService": "PAY_LATER_SERVICE",
            "business": "fsm",
            "businessServiceSla": 172800000,
            "states": [
                {
                    "tenantId": "pb",
                    "sla": null,
                    "state": null,
                    "applicationStatus": null,
                    "docUploadRequired": false,
                    "isStartState": true,
                    "isTerminateState": false,
                    "isStateUpdatable": true,
                    "actions": [
                        {
                            "tenantId": "pb",
                            "currentState": null,
                            "action": "APPLY",
                            "nextState": "ASSING_DSO",
                            "roles": [
                                "FSM_CREATOR_EMP"
                            ]
                        },
                        {
                            "tenantId": "pb",
                            "currentState": null,
                            "action": "CREATE",
                            "nextState": "CREATED",
                            "roles": [
                                "CITIZEN"
                            ]
                        }
                    ]
                },
                {
                    "tenantId": "pb",
                    "sla": null,
                    "state": "CREATED",
                    "applicationStatus": "CREATED",
                    "docUploadRequired": false,
                    "isStartState": false,
                    "isTerminateState": false,
                    "isStateUpdatable": true,
                    "actions": [
                        {
                            "tenantId": "pb",
                            "currentState": "CREATED",
                            "action": "REJECT",
                            "nextState": "REJECTED",
                            "roles": [
                                "FSM_ADMIN"
                            ]
                        },
                        {
                            "tenantId": "pb",
                            "currentState": "CREATED",
                            "action": "SUBMIT",
                            "nextState": "ASSING_DSO",
                            "roles": [
                                "FSM_EDITOR_EMP"
                            ]
                        }
                    ]
                },
                
                {
                    "tenantId": "pb",
                    "sla": null,
                    "state": "ASSING_DSO",
                    "applicationStatus": "ASSING_DSO",
                    "docUploadRequired": false,
                    "isStartState": false,
                    "isTerminateState": false,
                    "isStateUpdatable": true,
                    "actions": [
                        {
                            "tenantId": "pb",
                            "currentState": "ASSING_DSO",
                            "action": "CANCEL",
                            "nextState": "CANCELED",
                            "roles": [
                                "FSM_ADMIN"
                            ]
                        },
                        {
                            "tenantId": "pb",
                            "currentState": "ASSING_DSO",
                            "action": "ASSIGN",
                            "nextState": "PENDING_DSO_APPROVAL",
                            "roles": [
                                "FSM_EDITOR_EMP"
                            ]
                        }
                    ]
                },
                {
                    "tenantId": "pb",
                    "sla": null,
                    "state": "PENDING_DSO_APPROVAL",
                    "applicationStatus": "PENDING_DSO_APPROVAL",
                    "docUploadRequired": false,
                    "isStartState": false,
                    "isTerminateState": false,
                    "isStateUpdatable": true,
                    "actions": [
                        {
                            "tenantId": "pb",
                            "currentState": "PENDING_DSO_APPROVAL",
                            "action": "DSO_ACCEPT",
                            "nextState": "DSO_INPROGRESS",
                            "roles": [
                                 "FSM_DSO",
                                 "FSM_EDITOR_EMP"
                            ]
                        },
                        {
                            "tenantId": "pb",
                            "currentState": "PENDING_DSO_APPROVAL",
                            "action": "CANCEL",
                            "nextState": "CANCELED",
                            "roles": [
                                "FSM_ADMIN"
                            ]
                        },
                        {
                            "tenantId": "pb",
                            "currentState": "PENDING_DSO_APPROVAL",
                            "action": "REASSING",
                            "nextState": "PENDING_DSO_APPROVAL",
                            "roles": [
                                "FSM_EDITOR_EMP"
                            ]
                        },
                        {
                            "tenantId": "pb",
                            "currentState": "PENDING_DSO_APPROVAL",
                            "action": "DSO_REJECT",
                            "nextState": "DSO_REJECTED",
                            "roles": [
                                 "FSM_DSO",
                                 "FSM_EDITOR_EMP"
                            ]
                        }
                    ]
                },
                 {
                    "tenantId": "pb",
                    "sla": null,
                    "state": "DSO_REJECTED",
                    "applicationStatus": "DSO_REJECTED",
                    "docUploadRequired": false,
                    "isStartState": false,
                    "isTerminateState": false,
                    "isStateUpdatable": true,
                    "actions": [
                        {
                            "tenantId": "pb",
                            "currentState": "DSO_REJECTED",
                            "action": "CANCEL",
                            "nextState": "CANCELED",
                            "roles": [
                                "FSM_ADMIN"
                            ],
                            "active": true
                        },
                        {
                            "tenantId": "pb",
                            "currentState": "DSO_REJECTED",
                            "action": "REASSING",
                            "nextState": "PENDING_DSO_APPROVAL",
                            "roles": [
                                "FSM_EDITOR_EMP"
                            ],
                             "active": true
                        },
                        {
                            "tenantId": "pb",
                            "currentState": "DSO_REJECTED",
                            "action": "SENDBACK",
                            "nextState": "PENDING_DSO_APPROVAL",
                            "roles": [
                                "FSM_ADMIN"
                            ],
                            "active": true
                        }
                    ]
                },
                {
                    "tenantId": "pb",
                    "sla": null,
                    "state": "DSO_INPROGRESS",
                    "applicationStatus": "DSO_INPROGRESS",
                    "docUploadRequired": false,
                    "isStartState": false,
                    "isTerminateState": false,
                    "isStateUpdatable": true,
                    "actions": [
                        {
                            "tenantId": "pb",
                            "currentState": "DSO_INPROGRESS",
                            "action": "SENDBACK",
                            "nextState": "PENDING_DSO_APPROVAL",
                            "roles": [
                                "FSM_ADMIN"
                            ]
                        },
                        {
                            "tenantId": "pb",
                            "currentState": "DSO_INPROGRESS",
                            "action": "COMPLETED",
                            "nextState": "CITIZEN_FEEDBACK_PENDING",
                            "roles": [
                                "FSM_DSO",
                                "FSM_EDITOR_EMP"
                            ]
                        },
                       
                        {
                            "tenantId": "pb",
                            "currentState": "DSO_INPROGRESS",
                            "action": "CANCEL",
                            "nextState": "CANCELED",
                            "roles": [
                                "FSM_ADMIN"
                            ]
                        },
                        {
                            "tenantId": "pb",
                            "currentState": "DSO_INPROGRESS",
                            "action": "REASSING",
                            "nextState": "PENDING_DSO_APPROVAL",
                            "roles": [
                                "FSM_EDITOR_EMP"
                            ]
                        },
                        {
                            "tenantId": "pb",
                            "currentState": "DSO_INPROGRESS",
                            "action": "UPDATE",
                            "nextState": "DSO_INPROGRESS",
                            "roles": [
                                "FSM_DSO",
                                "FSM_EDITOR_EMP"
                            ]
                        },
                        {
                            "tenantId": "pb",
                            "action": "PAY",
                            "nextState": "DSO_INPROGRESS",
                            "roles": [
                                "CITIZEN",
                                "FSM_COLLECTOR"
                            ]
                        }
                    ]
                },
                {
                    "tenantId": "pb",
                    "sla": null,
                    "state": "CITIZEN_FEEDBACK_PENDING",
                    "applicationStatus": "CITIZEN_FEEDBACK_PENDING",
                    "docUploadRequired": false,
                    "isStartState": false,
                    "isTerminateState": false,
                    "isStateUpdatable": false,
                    "actions": [
                        {
                            "tenantId": "pb",
                            "currentState": "CITIZEN_FEEDBACK_PENDING",
                            "action": "RATE",
                            "nextState": "COMPLETED",
                            "roles": [
                                "CITIZEN"
                            ],
                            "active": true
                        }
                    ]
                },
                {
                    "tenantId": "pb",
                    "sla": null,
                    "state": "COMPLETED",
                    "applicationStatus": "COMPLETED",
                    "docUploadRequired": false,
                    "isStartState": false,
                    "isTerminateState": true,
                    "isStateUpdatable": false,
                    "actions": null
                },
                {
                    "tenantId": "pb",
                    "sla": null,
                    "state": "REJECTED",
                    "applicationStatus": "REJECTED",
                    "docUploadRequired": false,
                    "isStartState": false,
                    "isTerminateState": true,
                    "isStateUpdatable": false,
                    "actions": null
                },
                {
                    "tenantId": "pb",
                    "sla": null,
                    "state": "CANCELED",
                    "applicationStatus": "CANCELED",
                    "docUploadRequired": false,
                    "isStartState": false,
                    "isTerminateState": true,
                    "isStateUpdatable": false,
                    "actions": null
                }
                
            ]
        }
    ],
    "RequestInfo": {
        "apiId": "Rainmaker",
        "action": "",
        "did": 1,
        "key": "",
        "msgId": "20170310130900|en_IN",
        "requesterId": "",
        "ts": 1513579888683,
        "ver": ".01",
        "authToken": "3d828f89-c249-4d4a-9098-8230e6040bf5",
        "userInfo": {
            "id": 30074,
            "uuid": "5130f2e3-efc1-401a-94fb-b9e60d9fa17d",
            "userName": "XYZ",
            "name": "XYZ",
            "mobileNumber": "8897970021",
            "emailId": null,
            "locale": null,
            "type": "EMPLOYEE",
            "roles": [
                {
                    "name": "FSM Employee Application Viewer",
                    "code": "FSM_VIEW_EMP",
                    "tenantId": "pb.amritsar"
                },
                {
                    "name": "Employee",
                    "code": "EMPLOYEE",
                    "tenantId": "pb.amritsar"
                },
                {
                    "name": "National Dashboard Administrator",
                    "code": "NATADMIN",
                    "tenantId": "pb.amritsar"
                },
                {
                    "name": "TL Field Inspector",
                    "code": "TL_FIELD_INSPECTOR",
                    "tenantId": "pb.amritsar"
                },
                {
                    "name": "ptcollection emp",
                    "code": "PT_COLLECTION_EMP",
                    "tenantId": "pb.amritsar"
                },
                {
                    "name": "EMPLOYEE ADMIN",
                    "code": "EMPLOYEE ADMIN",
                    "tenantId": "pb.amritsar"
                },
                {
                    "name": "HRMS Admin",
                    "code": "HRMS_ADMIN",
                    "tenantId": "pb.amritsar"
                },
                {
                    "name": "Universal Collection Employee",
                    "code": "UC_EMP",
                    "tenantId": "pb.amritsar"
                },
                {
                    "name": "State Administrator",
                    "code": "STADMIN",
                    "tenantId": "pb.amritsar"
                },
                {
                    "name": "Super User",
                    "code": "SUPERUSER",
                    "tenantId": "pb.amritsar"
                },
                {
                    "name": "FSM Employee Application Creator",
                    "code": "FSM_CREATOR_EMP",
                    "tenantId": "pb.amritsar"
                },
                {
                    "name": "FSM Employee Dashboard Viewer",
                    "code": "FSM_DASHBOARD_VIEWER",
                    "tenantId": "pb.amritsar"
                },
                {
                    "name": "Anonymous User",
                    "code": "ANONYMOUS",
                    "tenantId": "pb.amritsar"
                }
            ],
            "active": true,
            "tenantId": "pb.amritsar",
            "permanentCity": null
        }
    }
}

For Zero Price Application new Business service FSM_ZERO_PAY_SERVICE has been created

Create businessService (workflow configuration) using the /businessservice/_create. Following is the product configuration for FSM_ZERO_PAY_SERVICE:

{
    "BusinessServices": [
        {
            "tenantId": "pb",
            "businessService": "FSM_ZERO_PAY_SERVICE",
            "business": "fsm",
            "businessServiceSla": 172800000,
            "states": [
                {
                    "tenantId": "pb",
                    "sla": null,
                    "state": null,
                    "applicationStatus": null,
                    "docUploadRequired": false,
                    "isStartState": true,
                    "isTerminateState": false,
                    "isStateUpdatable": true,
                    "actions": [
                        {
                            "tenantId": "pb",
							"currentState": null,
                            "action": "APPLY",
                            "nextState": "ASSING_DSO",
                            "roles": [
                                "FSM_CREATOR_EMP"
                            ]
                        },
                        {
                            "tenantId": "pb",
							"currentState": null,
                            "action": "CREATE",
                            "nextState": "CREATED",
                            "roles": [
                                "CITIZEN"
                            ]
                        }
                    ]
                },
                {
                    "tenantId": "pb",
                    "sla": null,
                    "state": "CREATED",
                    "applicationStatus": "CREATED",
                    "docUploadRequired": false,
                    "isStartState": false,
                    "isTerminateState": false,
                    "isStateUpdatable": true,
                    "actions": [
                        {
                            "tenantId": "pb",
							"currentState": "CREATED",
                            "action": "REJECT",
                            "nextState": "REJECTED",
                            "roles": [
                                "FSM_ADMIN"
                            ]
                        },
                        {
                            "tenantId": "pb",
							"currentState": "CREATED",
                            "action": "SUBMIT",
                            "nextState": "ASSING_DSO",
                            "roles": [
                                "FSM_EDITOR_EMP"
                            ]
                        }
                    ]
                },
                
                {
                    "tenantId": "pb",
                    "sla": null,
                    "state": "ASSING_DSO",
                    "applicationStatus": "ASSING_DSO",
                    "docUploadRequired": false,
                    "isStartState": false,
                    "isTerminateState": false,
                    "isStateUpdatable": true,
                    "actions": [
                        {
                            "tenantId": "pb",
							"currentState": "ASSING_DSO",
                            "action": "CANCEL",
                            "nextState": "CANCELED",
                            "roles": [
                                "FSM_ADMIN"
                            ]
                        },
                        {
                            "tenantId": "pb",
							"currentState": "ASSING_DSO",
                            "action": "ASSIGN",
                            "nextState": "PENDING_DSO_APPROVAL",
                            "roles": [
                                "FSM_EDITOR_EMP"
                            ]
                        }
                    ]
                },
                {
                    "tenantId": "pb",
                    "sla": null,
                    "state": "PENDING_DSO_APPROVAL",
                    "applicationStatus": "PENDING_DSO_APPROVAL",
                    "docUploadRequired": false,
                    "isStartState": false,
                    "isTerminateState": false,
                    "isStateUpdatable": true,
                    "actions": [
                       	{
                            "tenantId": "pb",
                            "currentState": "PENDING_DSO_APPROVAL",
                            "action": "DSO_ACCEPT",
                            "nextState": "DSO_INPROGRESS",
                            "roles": [
                                 "FSM_DSO",
                                 "FSM_EDITOR_EMP"
                            ]
                        },
						{
                            "tenantId": "pb",
                            "currentState": "PENDING_DSO_APPROVAL",
                            "action": "CANCEL",
                            "nextState": "CANCELED",
                            "roles": [
                                "FSM_ADMIN"
                            ]
                        },
						{
                            "tenantId": "pb",
                            "currentState": "PENDING_DSO_APPROVAL",
                            "action": "REASSING",
                            "nextState": "PENDING_DSO_APPROVAL",
                            "roles": [
                                "FSM_EDITOR_EMP"
                            ]
                        },
						{
                            "tenantId": "pb",
                            "currentState": "PENDING_DSO_APPROVAL",
                            "action": "DSO_REJECT",
                            "nextState": "DSO_REJECTED",
                            "roles": [
                                 "FSM_DSO",
                                 "FSM_EDITOR_EMP"
                            ]
                        }
                    ]
                },
				 {
                    "tenantId": "pb",
                    "sla": null,
                    "state": "DSO_REJECTED",
                    "applicationStatus": "DSO_REJECTED",
                    "docUploadRequired": false,
                    "isStartState": false,
                    "isTerminateState": false,
                    "isStateUpdatable": true,
                    "actions": [
                        {
                            "tenantId": "pb",
                            "currentState": "DSO_REJECTED",
                            "action": "CANCEL",
                            "nextState": "CANCELED",
                            "roles": [
                                "FSM_ADMIN"
                            ],
							"active": true
                        },
                        {
                            "tenantId": "pb",
                            "currentState": "DSO_REJECTED",
                            "action": "REASSING",
                            "nextState": "PENDING_DSO_APPROVAL",
                            "roles": [
                                "FSM_EDITOR_EMP"
                            ],
							 "active": true
                        },
                        {
                            "tenantId": "pb",
                            "currentState": "DSO_REJECTED",
                            "action": "SENDBACK",
                            "nextState": "PENDING_DSO_APPROVAL",
                            "roles": [
                                "FSM_ADMIN"
                            ],
							"active": true
                        }
                    ]
                },
                 {
                    "tenantId": "pb",
                    "sla": null,
                    "state": "DSO_INPROGRESS",
                    "applicationStatus": "DSO_INPROGRESS",
                    "docUploadRequired": false,
                    "isStartState": false,
                    "isTerminateState": false,
                    "isStateUpdatable": true,
                    "actions": [
                        {
                            "tenantId": "pb",
                            "currentState": "DSO_INPROGRESS",
                            "action": "SENDBACK",
                            "nextState": "PENDING_DSO_APPROVAL",
                            "roles": [
                                "FSM_ADMIN"
                            ]
                        },
						{
                            "tenantId": "pb",
                            "currentState": "DSO_INPROGRESS",
                            "action": "COMPLETED",
                            "nextState": "CITIZEN_FEEDBACK_PENDING",
                            "roles": [
                                "FSM_DSO",
                                "FSM_EDITOR_EMP"
                            ]
                        },
                        {
                            "tenantId": "pb",
                            "currentState": "DSO_INPROGRESS",
                            "action": "CANCEL",
                            "nextState": "CANCELED",
                            "roles": [
                                "FSM_ADMIN"
                            ]
                        },
                        {
                            "tenantId": "pb",
                            "currentState": "DSO_INPROGRESS",
                            "action": "REASSING",
                            "nextState": "PENDING_DSO_APPROVAL",
                            "roles": [
                                "FSM_EDITOR_EMP"
                            ]
                        },
						{
                            "tenantId": "pb",
                            "currentState": "DSO_INPROGRESS",
                            "action": "UPDATE",
                            "nextState": "DSO_INPROGRESS",
                            "roles": [
                                "FSM_DSO",
                                "FSM_EDITOR_EMP"
                            ]
                        }
                    ]
                },
				{
                    "tenantId": "pb",
                    "sla": null,
                    "state": "CITIZEN_FEEDBACK_PENDING",
                    "applicationStatus": "CITIZEN_FEEDBACK_PENDING",
                    "docUploadRequired": false,
                    "isStartState": false,
                    "isTerminateState": false,
                    "isStateUpdatable": false,
                    "actions": [
                        {
                            "tenantId": "pb",
                            "currentState": "CITIZEN_FEEDBACK_PENDING",
                            "action": "RATE",
                            "nextState": "COMPLETED",
                            "roles": [
                                "CITIZEN"
                            ],
						    "active": true
                        }
                    ]
                },
                {
                    "tenantId": "pb",
                    "sla": null,
                    "state": "COMPLETED",
                    "applicationStatus": "COMPLETED",
                    "docUploadRequired": false,
                    "isStartState": false,
                    "isTerminateState": true,
                    "isStateUpdatable": false,
					"actions": null
                },
                {
                    "tenantId": "pb",
					"sla": null,
                    "state": "REJECTED",
                    "applicationStatus": "REJECTED",
                    "docUploadRequired": false,
                    "isStartState": false,
                    "isTerminateState": true,
                    "isStateUpdatable": false,
                    "actions": null
                },
                {
                    "tenantId": "pb",
                    "sla": null,
                    "state": "CANCELED",
                    "applicationStatus": "CANCELED",
                    "docUploadRequired": false,
                    "isStartState": false,
                    "isTerminateState": true,
                    "isStateUpdatable": false,
                    "actions": null
                }
                
            ]
        }
    ],
    "RequestInfo": {
        "apiId": "Rainmaker",
        "action": "",
        "did": 1,
        "key": "",
        "msgId": "20170310130900|en_IN",
        "requesterId": "",
        "ts": 1513579888683,
        "ver": ".01",
        "authToken": "3d828f89-c249-4d4a-9098-8230e6040bf5",
        "userInfo": {
            "id": 30074,
            "uuid": "5130f2e3-efc1-401a-94fb-b9e60d9fa17d",
            "userName": "XYZ",
            "name": "XYZ",
            "mobileNumber": "8897970021",
            "emailId": null,
            "locale": null,
            "type": "EMPLOYEE",
            "roles": [
                {
                    "name": "FSM Employee Application Viewer",
                    "code": "FSM_VIEW_EMP",
                    "tenantId": "pb.amritsar"
                },
                {
                    "name": "Employee",
                    "code": "EMPLOYEE",
                    "tenantId": "pb.amritsar"
                },
                {
                    "name": "National Dashboard Administrator",
                    "code": "NATADMIN",
                    "tenantId": "pb.amritsar"
                },
                {
                    "name": "TL Field Inspector",
                    "code": "TL_FIELD_INSPECTOR",
                    "tenantId": "pb.amritsar"
                },
                {
                    "name": "ptcollection emp",
                    "code": "PT_COLLECTION_EMP",
                    "tenantId": "pb.amritsar"
                },
                {
                    "name": "EMPLOYEE ADMIN",
                    "code": "EMPLOYEE ADMIN",
                    "tenantId": "pb.amritsar"
                },
                {
                    "name": "HRMS Admin",
                    "code": "HRMS_ADMIN",
                    "tenantId": "pb.amritsar"
                },
                {
                    "name": "Universal Collection Employee",
                    "code": "UC_EMP",
                    "tenantId": "pb.amritsar"
                },
                {
                    "name": "State Administrator",
                    "code": "STADMIN",
                    "tenantId": "pb.amritsar"
                },
                {
                    "name": "Super User",
                    "code": "SUPERUSER",
                    "tenantId": "pb.amritsar"
                },
                {
                    "name": "FSM Employee Application Creator",
                    "code": "FSM_CREATOR_EMP",
                    "tenantId": "pb.amritsar"
                },
                {
                    "name": "FSM Employee Dashboard Viewer",
                    "code": "FSM_DASHBOARD_VIEWER",
                    "tenantId": "pb.amritsar"
                },
                {
                    "name": "Anonymous User",
                    "code": "ANONYMOUS",
                    "tenantId": "pb.amritsar"
                }
            ],
            "active": true,
            "tenantId": "pb.amritsar",
            "permanentCity": null
        }
    }
}

Localisation Setup

Using /localisation/messages/v1/_upsert, add localisation (templates) for notification messages to be sent. Following are the product notification templates:

{
  "messages":[
          {
            "code": "FSM_SMS_CREATED_CREATE",
            "message": "Dear Applicant,Your application for cleaning septic tank/pit is created with application reference no.<2>.You will be notified to make an application fee shortly.Request is expected to be completed within <SLA_HOURS>hrs of making the payment.",
            "module": "rainmaker-common",
            "locale": "en_IN"
        },
          {
            "code": "FSM_SMS_PENDING_APPL_FEE_PAYMENT_SUBMIT",
            "message": "Dear Applicant, Please pay the application fee Rs.<AMOUNT_TO_BE_PAID>/- for cleaning the septic tank/pit with request number <2>.Click this link <PAY_LINK> to make the payment.Request is expected to be completed within <SLA_HOURS>hrs of making the payment.",
            "module": "rainmaker-common",
            "locale": "en_IN"
        },
        {
            "code": "FSM_SMS_PENDING_APPL_FEE_PAYMENT_APPLY",
            "message": "Dear Applicant, Your application for cleaning septic tank /pit is created with application number <2>.Please click this link <PAY_LINK> to pay the application fee for processing the application.Request is expected to be completed within <SLA_HOURS>hrs of making the payment.",
            "module": "rainmaker-common",
            "locale": "en_IN"
        },
        {
            "code": "FSM_SMS_ASSING_DSO_PAY",
            "message": "Dear Applicant, Amount of Rs.<AMOUNT_TO_BE_PAID>/- is received towards the payment of cleaning septic tank /pit with reference no. <RECEIPT_NO>.You will be notified when an operator is assigned to a request. Please click this link <RECEIPT_LINK> to download the receipt",
            "module": "rainmaker-common",
            "locale": "en_IN"
        },
        {
            "code": "FSM_SMS_DSO_INPROGRESS_DSO_ACCEPT",
            "message": "Dear Applicant, Vehicle <VEHICLE_REG_NO> will be reaching your location to clean the septic tank/pit on <POSSIBLE_SERVICE_DATE> with reference to your application number <2>. You can contact the operator in +91 <DSO_MOBILE_NUMBER>.",
            "module": "rainmaker-common",
            "locale": "en_IN"
        },
        {
            "code": "FSM_SMS_CITIZEN_FEEDBACK_PENDING_COMPLETED",
            "message": "Dear Applicant, Your request for cleaning septic tank/pit is completed.Please take some time to rate us using the link <FSM_APPL_LINK>.",
            "module": "rainmaker-common",
            "locale": "en_IN"
        },
        {
            "code": "FSM_SMS_DSO_REJECTED_DSO_REJECT",
            "message": "Dear Applicant, Your request for cleaning the septic tank/pit is rejected with the reason <FSM_DSO_REJECT_REASON> . Please use this link <NEW_FSM_LINK> to create a new request if needed.",
            "module": "rainmaker-common",
            "locale": "en_IN"
        },
        {
            "code": "FSM_SMS_CANCELED_CANCEL",
            "message": "Dear Applicant, Your request for cleaning the septic tank/pit is cancelled with the reason <FSM_CANCEL_REASON> . Please use this link <NEW_FSM_LINK> to create a new request if needed.",
            "module": "rainmaker-common",
            "locale": "en_IN"
        }
    ]
}
{
            "code": "PDF_STATIC_LABEL_CONSOLIDATED_RECEIPT_NO_OF_TRIP",
            "message":"No. Of Trips",
            "locale": "en_IN",
            "module": "rainmaker-common"
        },
         {
            "code": "PDF_STATIC_LABEL_CONSOLIDATED_RECEIPT_AMOUNT_PER_TRIP",
            "message":"Amount Per Trip",
            "locale": "en_IN",
            "module": "rainmaker-common"
        },
        {
            "code": "PDF_STATIC_LABEL_CONSOLIDATED_RECEIPT_TOTAL_AMOUNT_DUE",
            "message":"Total Amount Due",
            "locale": "en_IN",
            "module": "rainmaker-common"
        },
        {
            "code": "PDF_STATIC_LABEL_CONSOLIDATED_RECEIPT_BALANCE_AMOUNT_PAID",
            "message":"Balance Amount Paid",
            "locale": "en_IN",
            "module": "rainmaker-common"
        },
        {
            "code": "PDF_STATIC_LABEL_CONSOLIDATED_RECEIPT_ADVANCE_AMOUNT_PAID",
            "message":"Advance Amount Paid",
            "locale": "en_IN",
            "module": "rainmaker-common"
        },
        {
            "code": "PDF_STATIC_LABEL_CONSOLIDATED_RECEIPT_TOTAL_AMOUNT",
            "message":"Total Amount",
            "locale": "en_IN",
            "module": "rainmaker-common"
        }

Actions & Role Action Mapping

Add Role-Action mapping for the API’s in MDMS. Following are the required entries. They should be mapped to both CITIZEN and the appropriate employee roles.

Action Configuration

{
      "id": {{PLACEHOLDER1}},
      "name": "Create FSM Application",
      "url": "/fsm/v1/_create",
      "displayName": "Apply FSM",
      "orderNumber": 0,
      "enabled": false,
      "serviceCode": "FSM",
      "code": "null",
      "path": ""
    },
    {
      "id":  {{PLACEHOLDER2}},
      "name": "Search FSM Application",
      "url": "/fsm/v1/_search",
      "displayName": "Search  FSM Appliacations",
      "orderNumber": 1,
      "enabled": false,
      "serviceCode": "FSM",
      "code": "null",
      "path": ""
    },
    {
      "id": {{PLACEHOLDER3}},
      "name": "Update FSM Application",
      "url": "/fsm/v1/_update",
      "displayName": "Update FSM",
      "orderNumber": 0,
      "enabled": false,
      "serviceCode": "FSM",
      "code": "null",
      "path": ""
    },
{
      "id": {{PLACEHOLDER4}},
      "name": "FSM Application Charge Payment Search",
      "url": "/collection-services/payments/FSM.TRIP_CHARGES/_search",
      "displayName": "FSM Application Charge Payment Search",
      "orderNumber": 1,
      "parentModule": "",
      "enabled": false,
      "serviceCode": "",
      "code": "null",
      "path": ""
    },
     {
      "id": {{PLACEHOLDER5}},
      "name": "FSM Application Audit Search",
      "url": "/fsm/v1/_audit",
      "displayName": "FSM Application Audit serach",
      "orderNumber": 1,
      "parentModule": "",
      "enabled": false,
      "serviceCode": "",
      "code": "null",
      "path": ""
    }, 
    {
      "id": {{PLACEHOLDER6}},
      "name": "Search FSM Application",
      "url": "/fsm/v1/_plainsearch",
      "displayName": "Search  FSM Appliacations",
      "orderNumber": 1,
      "enabled": false,
      "serviceCode": "FSM",
      "code": "null",
      "path": ""
    },
    {
      "id": {{PLACEHOLDER7}},
      "name": "Create FSTP FSTPOperator Mapping",
      "url": "/fsm/plantmap/v1/_create",
      "displayName": "Create FSTP FSTPOperator Map",
      "orderNumber": 0,
      "enabled": false,
      "serviceCode": "FSM",
      "code": "null",
      "path": ""
    },
    {
      "id": {{PLACEHOLDER8}},
      "name": "Update FSTP FSTPOperator Mapping",
      "url": "/fsm/plantmap/v1/_update",
      "displayName": "Update FSTP FSTPOperator Map",
      "orderNumber": 0,
      "enabled": false,
      "serviceCode": "FSM",
      "code": "null",
      "path": ""
    },
    {
      "id": {{PLACEHOLDER9}},
      "name": "Search FSTP FSTPOperator Mapping",
      "url": "/fsm/plantmap/v1/_search",
      "displayName": "Search FSTP FSTPOperator Map",
      "orderNumber": 0,
      "enabled": false,
      "serviceCode": "FSM",
      "code": "null",
      "path": ""
    },
    {
      "id": {{PlaceHolder10}},
      "name": "Inbox Search ofr uI",
      "url": "/inbox/v1/_search",
      "displayName": "Inbox Search",
      "orderNumber": 0,
      "enabled": false,
      "serviceCode": "inbox",
      "code": "null",
      "path": ""
    }

data/pg/ACCESSCONTROL-ACTIONS-TEST/actions-test.json

https://github.com/egovernments/egov-mdms-data/commit/3979963cd0281245c69f015da233a5501fb5f99f

data/pg/ACCESSCONTROL-ACTIONS-TEST/actions-test.json

https://github.com/egovernments/egov-mdms-data/commit/50b83c118d57f49920c51216a2f6596d81d6ed79

data/pg/ACCESSCONTROL-ACTIONS-TEST/actions-test.json

https://github.com/egovernments/egov-mdms-data/commit/0140a43e110d9677ac69de11d1c1fd1344aa12cd

Role Action Mapping

[
 {
    "rolecode": "CITIZEN",
    "actionid": "{{PLACEHOLDER1}}",
    "actioncode": "",
    "tenantId": "pb"
  },
  {
    "rolecode": "FSM_CREATOR_EMP",
    "actionid": "{{PLACEHOLDER1}}",
    "actioncode": "",
    "tenantId": "pb"
  },
  {
    "rolecode": "CITIZEN",
    "actionid": "{{PLACEHOLDER2}}",
    "actioncode": "",
    "tenantId": "pb"
  },
  {
    "rolecode": "FSM_CREATOR_EMP",
    "actionid": "{{PLACEHOLDER2}}",
    "actioncode": "",
    "tenantId": "pb"
  },
  {
    "rolecode": "FSM_EDITOR_EMP",
    "actionid": "{{PLACEHOLDER2}}",
    "actioncode": "",
    "tenantId": "pb"
  },
  {
    "rolecode": "FSM_VIEW_EMP",
    "actionid": "{{PLACEHOLDER2}}",
    "actioncode": "",
    "tenantId": "pb"
  },
  {
    "rolecode": "FSM_ADMIN",
    "actionid": "{{PLACEHOLDER2}}",
    "actioncode": "",
    "tenantId": "pb"
  },
  {
    "rolecode": "FSM_DSO",
    "actionid": "{{PLACEHOLDER2}}",
    "actioncode": "",
    "tenantId": "pb"
  },
  {
    "rolecode": "FSM_DRIVER",
    "actionid": "{{PLACEHOLDER2}}",
    "actioncode": "",
    "tenantId": "pb"
  },
  {
    "rolecode": "FSM_EMP_FSTPO",
    "actionid": "{{PLACEHOLDER2}}",
    "actioncode": "",
    "tenantId": "pb"
  },
  {
    "rolecode": "FSM_COLLECTOR",
    "actionid": "{{PLACEHOLDER2}}",
    "actioncode": "",
    "tenantId": "pb"
  },
   {
    "rolecode": "FSM_EDITOR_EMP",
    "actionid": "{{PLACEHOLDER3}}",
    "actioncode": "",
    "tenantId": "pb"
  },
  {
    "rolecode": "FSM_ADMIN",
    "actionid": "{{PLACEHOLDER3}}",
    "actioncode": "",
    "tenantId": "pb"
  },
  {
    "rolecode": "FSM_DSO",
    "actionid": "{{PLACEHOLDER3}}",
    "actioncode": "",
    "tenantId": "pb"
  },
  {
    "rolecode": "FSM_DRIVER",
    "actionid": "{{PLACEHOLDER3}}",
    "actioncode": "",
    "tenantId": "pb"
  },
  {
    "rolecode": "CITIZEN",
    "actionid": "{{PLACEHOLDER3}}",
    "actioncode": "",
    "tenantId": "pb"
  },
   {
    "rolecode": "FSM_ADMIN",
    "actionid": "{{PLACEHOLDER4}}",
    "actioncode": "",
    "tenantId": "pb"
  },
  {
    "rolecode": "FSM_DSO",
    "actionid": "{{PLACEHOLDER4}}",
    "actioncode": "",
    "tenantId": "pb"
  },
  {
    "rolecode": "FSM_DRIVER",
    "actionid": "{{PLACEHOLDER4}}",
    "actioncode": "",
    "tenantId": "pb"
  },
  {
    "rolecode": "FSM_COLLECTOR",
    "actionid": "{{PLACEHOLDER4}}",
    "actioncode": "",
    "tenantId": "pb"
  },
  {
    "rolecode": "CITIZEN",
    "actionid": "{{PLACEHOLDER4}}",
    "actioncode": "",
    "tenantId": "pb"
  },
  {
    "rolecode": "FSM_EDITOR_EMP",
    "actionid": "{{PLACEHOLDER4}}",
    "actioncode": "",
    "tenantId": "pb"
  },
  {
    "rolecode": "FSM_VIEW_EMP",
    "actionid": "{{PLACEHOLDER4}}",
    "actioncode": "",
    "tenantId": "pb"
  },
  {
    "rolecode": "CITIZEN",
    "actionid": "{{PLACEHOLDER5}}",
    "actioncode": "",
    "tenantId": "pb"
  },
  {
    "rolecode": "FSM_CREATOR_EMP",
    "actionid": "{{PLACEHOLDER5}}",
    "actioncode": "",
    "tenantId": "pb"
  },
  {
    "rolecode": "FSM_EDITOR_EMP",
    "actionid": "{{PLACEHOLDER5}}",
    "actioncode": "",
    "tenantId": "pb"
  },
  {
    "rolecode": "FSM_VIEW_EMP",
    "actionid": "{{PLACEHOLDER5}}",
    "actioncode": "",
    "tenantId": "pb"
  },
  {
    "rolecode": "FSM_ADMIN",
    "actionid": "{{PLACEHOLDER5}}",
    "actioncode": "",
    "tenantId": "pb"
  },
  {
    "rolecode": "FSM_DSO",
    "actionid": "{{PLACEHOLDER5}}",
    "actioncode": "",
    "tenantId": "pb"
  },
  {
    "rolecode": "FSM_DRIVER",
    "actionid": "{{PLACEHOLDER5}}",
    "actioncode": "",
    "tenantId": "pb"
  },
  {
    "rolecode": "FSM_EMP_FSTPO",
    "actionid": "{{PLACEHOLDER5}}",
    "actioncode": "",
    "tenantId": "pb"
  },
  {
    "rolecode": "FSM_COLLECTOR",
    "actionid": "{{PLACEHOLDER5}}",
    "actioncode": "",
    "tenantId": "pb"
  },
  {
      "rolecode": "FSM_EDITOR_EMP",
      "actionid": {{PLACEHOLDER6}},
      "actioncode": "",
      "tenantId": "pb"
    },
    {
      "rolecode": "FSM_VIEW_EMP",
      "actionid": {{PLACEHOLDER6}},
      "actioncode": "",
      "tenantId": "pb"
    },
    {
      "rolecode": "FSM_ADMIN",
      "actionid": {{PLACEHOLDER6}},
      "actioncode": "",
      "tenantId": "pb"
    },
    {
      "rolecode": "FSM_DSO",
      "actionid": {{PLACEHOLDER6}},
      "actioncode": "",
      "tenantId": "pb"
    },
    {
      "rolecode": "FSM_DRIVER",
      "actionid": {{PLACEHOLDER6}},
      "actioncode": "",
      "tenantId": "pb"
    },
    {
      "rolecode": "FSM_EMP_FSTPO",
      "actionid": {{PLACEHOLDER6}},
      "actioncode": "",
      "tenantId": "pb"
    },
    {
      "rolecode": "FSM_COLLECTOR",
      "actionid": {{PLACEHOLDER6}},
      "actioncode": "",
      "tenantId": "pb"
    },
  {
      "rolecode": "FSM_ADMIN",
      "actionid": {{PLACEHOLDER7}},
      "actioncode": "",
      "tenantId": "pb"
    },
     {
      "rolecode": "FSM_ADMIN",
      "actionid": {{PLACEHOLDER8}},
      "actioncode": "",
      "tenantId": "pb"
    },
    {
      "rolecode": "FSM_EMP_FSTPO",
      "actionid": {{PLACEHOLDER8}},
      "actioncode": "",
      "tenantId": "pb"
    },
    {
      "rolecode": "PT_CEMP",
      "actionid": {{PLACEHOLDER9}},
      "actioncode": "",
      "tenantId": "pb"
    },
    {
      "rolecode": "CITIZEN",
      "actionid": {{PLACEHOLDER9}},
      "actioncode": "",
      "tenantId": "pb"
    },
    {
      "rolecode": "SUPERUSER",
      "actionid": {{PLACEHOLDER9}},
      "actioncode": "",
      "tenantId": "pb"
    }, 
        {
      "rolecode": "FSM_EMP_FSTPO",
      "actionid": {{PlaceHolder10}},
      "actioncode": "",
      "tenantId": "pb"
    },
    {
      "rolecode": "FSM_COLLECTOR",
      "actionid": {{PlaceHolder10}},
      "actioncode": "",
      "tenantId": "pb"
    },
    {
      "rolecode": "FSM_EDITOR_EMP",
      "actionid": {{PlaceHolder10}},
      "actioncode": "",
      "tenantId": "pb"
    },
    {
      "rolecode": "FSM_VIEW_EMP",
      "actionid": {{PlaceHolder10}},
      "actioncode": "",
      "tenantId": "pb"
    },
     {
      "rolecode": "FSM_CREATOR_EMP",
      "actionid": {{PlaceHolder10}},
      "actioncode": "",
      "tenantId": "pb"
    },
    {
      "rolecode": "FSM_ADMIN",
      "actionid": {{PlaceHolder10}},
      "actioncode": "",
      "tenantId": "pb"
    },
    {
      "rolecode": "FSM_DSO",
      "actionid": {{PlaceHolder10}},
      "actioncode": "",
      "tenantId": "pb"
    },
    {
      "rolecode": "PT_CEMP",
      "actionid": {{PlaceHolder10}},
      "actioncode": "",
      "tenantId": "pb"
    },
    {
      "rolecode": "PT_DOC_VERIFIER",
      "actionid": {{PlaceHolder10}},
      "actioncode": "",
      "tenantId": "pb"
    },
    {
      "rolecode": "PT_FIELD_INSPECTOR",
      "actionid": {{PlaceHolder10}},
      "actioncode": "",
      "tenantId": "pb"
    },
    {
      "rolecode": "PT_APPROVER",
      "actionid": {{PlaceHolder10}},
      "actioncode": "",
      "tenantId": "pb"
    },
    {
    "rolecode": "TL_CEMP",
    "actionid": {{PlaceHolder10}},
    "actioncode": "",
    "tenantId": "pb"
  },
  {
    "rolecode": "TL_DOC_VERIFIER",
    "actionid": {{PlaceHolder10}},
    "actioncode": "",
    "tenantId": "pb"
  },
  {
    "rolecode": "TL_FIELD_INSPECTOR",
    "actionid": {{PlaceHolder10}},
    "actioncode": "",
    "tenantId": "pb"
  },
  {
    "rolecode": "TL_APPROVER",
    "actionid": {{PlaceHolder10}},
    "actioncode": "",
    "tenantId": "pb"
  },
]

data/pg/ACCESSCONTROL-ROLEACTIONS/roleactions.json

https://github.com/egovernments/egov-mdms-data/commit/4d58943d8ab04aa5d8816821406b6e40017ec722

data/pg/ACCESSCONTROL-ROLEACTIONS/roleactions.json

https://github.com/egovernments/egov-mdms-data/commit/1b5962693ac70b7ac56fd312f4b2febab00f9c93

data/pg/ACCESSCONTROL-ROLEACTIONS/roleactions.json

https://github.com/egovernments/egov-mdms-data/commit/9f9b1340b42f25bca44fdcfa474a3413cc21ec03

Infra Ops Configuration

Configurations that we can manage through values.yml fsm-calculator in infraops repo as follows:

Description

name in values.yml

Current Value

id-gen host, to generate the application number

EGOV_IDGEN_HOST

egov-idgen from egov-service-host

Kafka Consumer Group

SPRING_KAFKA_CONSUMER_GROUP_ID

egov-fsm-service

kafka topic to which service push data to save new fsm application

PERSISTER_SAVE_FSM_TOPIC

save-fsm-application

kafka topic to which service push data to save workflow status

PERSISTER_UPDATE_FSM_WORKFLOW_TOPIC

update-fsm-workflow-application

kafka topic to which service push data to update the existing fsm application

PERSISTER_UPDATE_FSM_TOPIC

update-fsm-application

mdms service host

EGOV_MDMS_HOST

egov-mdms-service from egov-service-host

billing-service host

EGOV_BILLINGSERVICE_HOST

billing-service from egov-service-host

fsm-calculator service host

EGOV_FSM_CALCULATOR_HOST

fsm-calculator from egov-service-host

workflow v2 service host

WORKFLOW_CONTEXT_PATH

egov-workflow-v2 from egov-service-host

ui host, to return send the url of new application in sms notification

EGOV_UI_APP_HOST

egov-services-fqdn-name from egov-service-host

vendor service host, to get DSO details

EGOV_VENDOR_HOST

vendor from egov-service-host

Vehicle service host, to get vehicle details and manage vehicleTrip

EGOV_VEHICLE_HOST

vehicle from egov-service-host

Collection service host, to get the payment details

EGOV_COLLECTION_SERVICE_HOST

collection-services from egov-service-host

localization service host, to get the locale data

EGOV_LOCALIZATION_HOST

egov-localization from egov-service-host

user service host, to get the locale data

EGOV_USER_HOST

egov-user from egov-service-host

pdf service host, to get the locale data

EGOV_PDF_HOST

pdf-service from egov-service-host

url shortening service host, to get the short url for the long once

EGOV_URL_SHORTNER_HOST

egov-url-shortening from egov-service-host

Sample values.yml

- name: EGOV_IDGEN_HOST
    valueFrom:
      configMapKeyRef:
        name: egov-service-host
        key: egov-idgen
  - name: EGOV_MDMS_HOST
    valueFrom:
      configMapKeyRef:
        name: egov-service-host
        key: egov-mdms-service
  - name: EGOV_URL_SHORTNER_HOST
    valueFrom:
      configMapKeyRef:
        name: egov-service-host
        key: egov-url-shortening
  - name: EGOV_PDF_HOST
    valueFrom:
      configMapKeyRef:
        name: egov-service-host
        key: pdf-service
  - name: EGOV_USER_HOST
    valueFrom:
      configMapKeyRef:
        name: egov-service-host
        key: egov-user
  - name: EGOV_LOCATION_HOST
    valueFrom:
      configMapKeyRef:
        name: egov-service-host
        key: egov-location
  - name: EGOV_LOCALIZATION_HOST
    valueFrom:
      configMapKeyRef:
        name: egov-service-host
        key: egov-localization
  - name: EGOV_BILLINGSERVICE_HOST
    valueFrom:
      configMapKeyRef:
        name: egov-service-host
        key: billing-service
  - name: EGOV_COLLECTION_SERVICE_HOST
    valueFrom:
      configMapKeyRef:
        name: egov-service-host
        key: collection-services
  - name: EGOV_FSM_CALCULATOR_HOST
    valueFrom:
      configMapKeyRef:
        name: egov-service-host
        key: fsm-calculator
  - name: EGOV_VEHICLE_HOST
    valueFrom:
      configMapKeyRef:
        name: egov-service-host
        key: vehicle
  - name: EGOV_VENDOR_HOST
    valueFrom:
      configMapKeyRef:
        name: egov-service-host
        key: vendor
  - name: EGOV_UI_APP_HOST
    valueFrom:
      configMapKeyRef:
        name: egov-config
        key: egov-services-fqdn-name
  - name: WORKFLOW_CONTEXT_PATH
    valueFrom:
      configMapKeyRef:
        name: egov-service-host
        key: egov-workflow-v2
  - name: WORKFLOW_TRANSITION_PATH
    value: "egov-workflow-v2/egov-wf/process/_transition"
  - name: EGOV_IDGEN_FSM_APPLICATIONNUM_FORMAT
    value: "[CITY.CODE]-FSM-[cy:yyyy-MM-dd]-[SEQ_EGOV_FSM]"
  - name: SPRING_KAFKA_CONSUMER_GROUP_ID
    value: egov-fsm-service
  - name: PERSISTER_SAVE_FSM_TOPIC
    value: save-fsm-application
  - name: PERSISTER_UPDATE_FSM_TOPIC
    value: update-fsm-application
  - name: PERSISTER_UPDATE_FSM_WORKFLOW_TOPIC
    value: update-fsm-workflow-application

Users

User

Role

Description

How to create

FSM Creator

FSM_CREATOR_EMP

  • Can create FSM application on behalf of a citizen

Through HRMS with role

FSM Editor

FSM_EDITOR_EMP

  • Can edit the application created by a citizen for demand generation

  • Assign/re-assign DSO

  • Complete the application

Through HRMS with role

FSM Admin

FSM_ADMIN

  • Can cancel the application at any stage of the workflow

Through HRMS with role

DSO

FSM_DSO

  • Can accept/reject the assigned application

  • can complete the FSM application

Through vendor service, use the create DSO Request from

FSTP Operator

FSM_EMP_FSTPO

  • Can mark the vehicle Trip as disposed. Not FSM Service User

Through HRMS with role

Collector

FSM_COLLECTOR

  • Can collect the payment amount for the application based on demand

Through HRMS with role

  • User with userType employee and role FSM_CREATOR_EMP role.

Integration

Integration Scope

FSM can be integrated with any ULB or system which wants to track the FSM application. The organisations can customise the workflow depending on their product requirements.

Integration Benefits

  • Easy tracking and resolution of the FSM application.

  • Configurable workflow according to client requirement.

Steps

  1. Citizen/ULB employee can file application request using the /fsm/v1/_create.

  2. Organisation or system can search the FSM Applications using /fsm/v1/_searchendpoint.

  3. Once the application is filed, the organisation or system can call /fsm/v1/_update endpoint to move the application further in the workflow until it gets resolved.

Inbox API

  • Introduced new inbox service to get the FSM applications in registered ULB employee inbox. With this, a ULB employee can track the application or perform the actions based on employee role.

  • ULB employees can also apply the filter to check the particular state or applications or any other filter as required.

FSM apply as a service

Currently, we provide FSM as an adhoc service.To avoid multiple times, a user has to create the FSM request every time. In the system itself after some days, we will create the same FSM application and if the user wants a service, he/she will pay the amount.

MDMS changes

As mentioned above, we need to define the time parameter in order to create a periodic application. For that, we added the periodic service master where we configure the time limit and whether the schedular is enabled or not. Find the configuration and location below:

{ "tenantId": "pb.amritsar",
"moduleName": "FSM",
"PeriodicService":[
{
"timeLimit" : 864000000,
"isSchedularConfiguration":true
}
]
}

cronjob will read the cron job’s configured in the cronjobapiconfig.json, and based on the schedular time, it will call the API which is configured. Find the configuration and file location below:

{ "jobName": "daily",
"active": "true",
"method": "POST",
"url": "http://fsm.egov:8080/fsm/v1/_schedular",
"payload": {
"RequestInfo": "{DEFAULT_REQUESTINFO}" },
"header": { "Content-Type": "application/json"
}

We are using the fsm/v1/_schedular API. This API will read the master data for each tenant and based on the time limit configured for that tenant, it will get all eligible applications and create periodic applications for those FSM applications.

data/pb/FSM/AdvancePayment.json

SM-499 : mdms file for advanceBalance and cancellationfee · egovernments/egov-mdms-data@3b3233e

Update AdvancePayment.json · egovernments/egov-mdms-data@a864a90

Update CancellationFee.json · egovernments/egov-mdms-data@3a614e5

master-config.json

SM-499 adding advancepayment and cancellationfee · egovernments/egov-mdms-data@c4efb2e

Infra changes

We added a new chart called mdms-read-cronjob. Find the chart location below:

https://github.com/egovernments/DIGIT-DevOps/tree/master/deploy-as-code/helm/charts/utilities/mdms-read-cronjob

Interaction Diagram

1. Advance Amount Workflow

2. Zero Price Application Workflow

Reference Docs

Doc Links

Title

Link

Workflow Technical Document

User Technical Document

MDMS Technical Document

NEEDS TO BE UPDATED

IDGen Technical Document

NEEDS TO BE UPDATED

Localisation Technical Document

NEEDS TO BE UPDATED

Persister Technical Document

NEEDS TO BE UPDATED

SMS Notification Technical Document

NEEDS TO BE UPDATED

HRMS Technical Document

NEEDS TO BE UPDATED

API Contract

Postman Collection

API List

Title

Link

/fsm/v1/_create

/fsm/v1/_update

/fsm/v1/_search

/fsm/v1/_audit

/fsm/v1/_plainsearch

/fsm/plantmap/v1/_create

/fsm/plantmap/v1/_update

/fsm/plantmap/v1/_search

/inbox/v1/_search

/fsm/v1/_schedular

postman Collection
Workflow Service
User Service
FSM API Contract
FSM Postman Collection
https://api.postman.com/collections/23418568-946a158e-9391-44b2-9d2b-48f30ea8cd63?access_key=PMAT-01GSPRPC338T9RR0GAKTRCRDP8
https://api.postman.com/collections/23418568-946a158e-9391-44b2-9d2b-48f30ea8cd63?access_key=PMAT-01GSPRPC338T9RR0GAKTRCRDP8
https://www.getpostman.com/collections/a51486db12539a2aa597
https://www.getpostman.com/collections/a51486db12539a2aa597
https://www.getpostman.com/collections/a51486db12539a2aa597
https://www.getpostman.com/collections/a51486db12539a2aa597
https://www.getpostman.com/collections/a51486db12539a2aa597
https://www.getpostman.com/collections/a51486db12539a2aa597
https://www.getpostman.com/collections/a51486db12539a2aa597
https://www.getpostman.com/collections/a51486db12539a2aa597
egov-mdms-data/PeriodicService.json at DEV · egovernments/egov-mdms-dataGitHub

Test Cases

Test ID
Module
Feature
Description
Steps to be executed
Expected Result
Actual result
QA Test Result
UAT Test Result
PM Test Result

Dashboard

Dashboard_01

Dashboard

Trips mismatch - Vehicle log report

To check for the number of trips in the vehicle log report

1. Login as ULB employee and open dashboard. 2. Navigate to the Desludging Request Report.

Initially, the data is displayed district-wise, so, here it should display the summation number of trips of all boundary.

Initially data is displayed district-wise. However, there is mismatch in the number of trips.

FAILED

FAILED

FAILED

Dashboard_02

Dashboard

Desludging Request Report

To verify the data mismatch in the Desludging Request Report

1. Login as a ULB employee and open the dashboard. 2. Navigate to the Desludging Request Report.

Initially, data is displayed district wise so, here it should display summation Open Request of ULB.

Initially data is displayed district wise so, but there is mismatch in open request.

FAILED

FAILED

FAILED

Dashboard_03

Dashboard

Desludging Request Report” & Vehicle Log Report

To verify When ULB is selected from drop down, the “Desludging Request Report” & “Vehicle Log Report” is showing District wise data. And there is mismatch in data between district figures and summation of data of ULB

1. Login as ULB Employee and open dashboard. 2. Then navigate to Desludging Request Report. 3. Check for Desludging Request Report” & “Vehicle Log Report”

ashboard shall showcase the requisite data & details with exact usage in the platform. And the district wise data shall be the summation of ULB wise data.

Desludging Request Report” & Vehicle Log Report is showing District wise data. And there is mismatch in data between district figures and summation of data of ULBs

FAILED

FAILED

FAILED

Dashboard_04

Dashboard

Check for templates- Date Range

Check for Date Range values

1. Login to Date Range 2. Check for Date Range filter criteria

Date Range should ahve vlues like month, year and dates to select from

Date Range has vlues like month, year and dates to select from

PASSED

PASSED

PASSED

Dashboard_05

Dashboard

Check for templates- DDRs

Check for DDRs values

1. Login to Date Range 2. Check for DDRs filter criteria

DDRs should have drop dwon values to select from

DDRs should has drop dwon values to select from

PASSED

PASSED

PASSED

Dashboard_06

Dashboard

Check for templates- ULB

Check for ULB values

1. Login to Date Range 2. Check for ULB filter criteria

ULB should have drop dwon values to select from

ULB should has drop dwon values to select from

PASSED

PASSED

PASSED

Dashboard_07

Dashboard

Overview chart

Check for overview chart values and shareable over email, download and over whatsapp

1. Login to Date Range 2. Check if IOVerview chart is dispalyed 3. Check if below values are ppopulated Total Request Total Sludge Treated Average FSM Cost Total Collection SLA Compliance Citizen Average Rating

All the below values should be populated correctly Total Request Total Sludge Treated Average FSM Cost Total Collection SLA Compliance Citizen Average Rating and user should be able to share teh image

Below values are populated correctly Total Request Total Sludge Treated Average FSM Cost Total Collection SLA Compliance Citizen Average Rating User is able to share the image and download

PASSED

PASSED

PASSED

Dashboard_08

Dashboard

Total Cumulative Collection

Check for Total Cumulative Collection chart is populated as expected and X and Y axis has required values

1. Login to Date Range 2. Check if Total Cumulative Collection chart is displayed with X and Y axis

Total Cumulative Collection should have X axis based on the filter values selected and X axis with the collection volume

Total Cumulative Collection has qX axis based on the filter values selected and X axis with the collection volume

PASSED

PASSED

PASSED

Dashboard_09

Dashboard

FSM Collection by Usage Type

Check if FSM Collection by Usage Type displays all the requird property types

1. Login to Date Range 2. Check if FSM Collection by Usage Type chart is dispalyed 3. Check if below values are ppopulated IndependentHouse RecidentialApartment Hotel Toilets Restaurant Institutional Church RowHouses

All the below values should be displayed as expected IndependentHouse RecidentialApartment Hotel Toilets Restaurant Institutional Church RowHouses

All the below values are displayed as expected IndependentHouse RecidentialApartment Hotel Toilets Restaurant Institutional Church RowHouses

PASSED

PASSED

PASSED

Dashboard_09

Dashboard

FSM Service Request by Gender

Check if FSM Service Request by Gender is displayed as expected

1. Login to DSS dash board 2. Check for FSM Service Request by Gender if it displays Male , Female and Tansgender values as expected

FSM Service Request by Gender should displayall 3 gender data as expected

FSM Service Request by Gender displays all 3 gender data as expected

PASSED

PASSED

PASSED

Driver_01

Driver tab

Error message with duplicate mobile number for driver

To verify if proper error message is displayed when ULB employee create two drivers with same mobile number

1. Login to FSM registry using QAADMIN 2. Go to driver tab and create two new drivers with same mobile nuber

Proper error message should be displayed when ULB employee create two drivers with same mobile number

Proper error message is not displayed displayed when ULB employee create two drivers with same mobile number

FAILED- Fixed and retested (working as expected now)

FAILED- Fixed and retested (working as expected now)

FAILED- Fixed and retested (working as expected now)

Vendor_Driver_01

Vendor and Driver tab

Vendor and Driver tab

To verify when admin creates vendor and driver with same mobile number

1. Login to FSM registry using QAADMIN 2. Go to vendor and driver tab and create two new vendor and driver with same mobile nuber

Vendor name should be displayed for vendor and same for driver

Vendor name is displayed in driver listing when admin creates vendor and driver with same mobile number

FAILED- Fixed and retested (working as expected now)

FAILED- Fixed and retested (working as expected now)

FAILED- Fixed and retested (working as expected now)

DSO_01

DSO

DSO - Creating new application

To verify if DSO is able to create new application as citizen

1. Login using citizen ui with DSO mobile number 2. Create a application

DSO should be able to create new application

DSO is unable to create application

FAILED- Fixed and retested (working as expected now)

FAILED- Fixed and retested (working as expected now)

FAILED- Fixed and retested (working as expected now)

Citizen_01

DSO

DSO - Citizen flow

To verify Applications Created by Citizen is displayed for DSO user

1. Login as DSO using citizen login 2. create an application 3. Go to my applications 4. Check for applications displayed

Only Dso created applications should be displayed

Applications Created by Citizen is displayed for DSO user

FAILED- Fixed and retested (working as expected now)

FAILED- Fixed and retested (working as expected now)

FAILED- Fixed and retested (working as expected now)

Test Cases For Vendor Tab

/ 9

Admin Should be able to see FSM Registry page

Vendo_01

Vendor Tab

FSM Registry - Vendor Tab

To Verify admin can able to select FSM Registry Button

1.Login as Admin 2.Click on Fsm registry

Admin Can able to see FSM Registry page

PASSED

PASSED

PASSED

Vendo_02

Vendor Tab

FSM Registry - Vendor Tab

To Verify UI for vendor Tab in FSM Registry page

1.Login as Admin 2.Click on Fsm registry 3.Click on Vendor Button

Admin Should be able to see the Vendor page

Admin Can able to see the Vendor page

PASSED

PASSED

PASSED

Vendo_03

Vendor Tab

FSM Registry - Vendor Tab

To Verify for vendor button in FSM Registry page

1.Login as Admin 2.Click on Fsm registry 3.Click on Vendor Button

Admin Should be able to see all the components of vendor button

Admin Can able to see all the components of vendor button

PASSED

PASSED

PASSED

Vendo_04

Vendor Tab

FSM Registry - Vendor Tab

To Verify admin can able to enter vendor name in vendor name text field

1.Login as Admin 2.Click on Fsm registry 3.Click on By Vendor Button 4.Enter vendor name 5.Click on search

Admin Should be able to see vendor details

Admin Can able to see vendor details

PASSED

PASSED

PASSED

Vendo_05

Vendor Tab

FSM Registry - Vendor Tab

To verify admin can able to select Enable / disable toggle button

1.Login as Admin 2.Click on Fsm registry 3.Click on By Vendor Button 4Enter vendor name and click on search 5.Click on Enable/disable Toggle

Admin Should be able to see toggle button in orange colour if it is disabled or Should be display in black if it is enabled

Admin Can able to see toggle button in orange colour if it is disabled or Can display in black if it is enabled

PASSED

PASSED

PASSED

Vendo_06

Vendor Tab

FSM Registry - Vendor Tab

To verify admin can able to select the vendor name

1.Login as Admin 2.Click on Fsm registry 3.Click on By Vendor Button 4.Enter Vendor name 5.Click on search 5.Click on Vendor name

Admin Should be able to view Vendor's details , Vehicle details and Driver details

Admin Can able to view Vendor's details Vehicle details and Driver details

PASSED

PASSED

PASSED

Vendo_07

Vendor Tab

FSM Registry - Vendor Tab

To verify admin can able to add vehicle to vendor details

1.Login as Admin 2.Click on Fsm registry 3.Click on By Vendor Button 4.Enter Vendor name 5.Click on search 5.Click on Vendor name 6.Click on Add vehicle 7.Select a vehicle 8.Click on submit

Admin Should be able to view vehicle details in vendor's details

Admin Can able to view vehicle details in vendor's details

PASSED

PASSED

PASSED

Vendo_08

Vendor Tab

FSM Registry - Vendor Tab

To verify admin can able to add driver to vendor details

1.Login as Admin 2.Click on Fsm registry 3.Click on By Vendor Button 4.Enter Vendor name 5.Click on search 5.Click on Vendor name 6.Click on Add driver 7.Select a vehicle 8.Click on submit.

Admin Should be able to view driver details in vendor's details

Admin Can able to view driver details in vendor's details

PASSED

PASSED

PASSED

Vendo_09

Vendor Tab

FSM Registry - Vendor Tab

To verify admin able to select Take action button

1.Login as Admin 2.Click on Fsm registry 3.Click on By Vendor Button 4.Enter Vendor name 5.Click on search 6.Click on Vendor name 7.Click on take action button

Admin Should be able to view Take action button in orange colour

Admin can able to view Take action button in orange colour

PASSED

PASSED

PASSED

Vendo_10

Vendor Tab

FSM Registry - Vendor Tab

To verify admin able to select Edit or delete button

1.Login as Admin 2.Click on Fsm registry 3.Click on By Vendor Button 4.Enter Vendor name 5.Click on search 6.Click on Vendor name 7.Click on take action button 8.Enter or change the required fields

Admin Should be able to view edit and delete buttons in orange colour

Admin can able to view edit and delete buttons.

PASSED

PASSED

PASSED

Vendo_11

Vendor Tab

FSM Registry - Vendor Tab

To verify admin able to click on add icon

1.Login as Admin 2.Click on Fsm registry 3.Click on add icon

Admin Should be view vendor,Vehicle and driver list

Admin can able to view vendor,Vehicle and driver list

PASSED

PASSED

PASSED

Vendo_12

Vendor Tab

FSM Registry - Vendor Tab

To verify admin can able to add new vendor

1.Login as Admin 2.Click on Fsm registry 3.Click on Add icon 4.Click on Vendour 5.Enter all the required fields 6.Click on Submit application Button

New Vendor has to create.

New Vendor is created

PASSED

PASSED

PASSED

Vendo_13

Vendor Tab

FSM Registry - Vendor Tab

To verify Admin can able to see the vendor name in vendor list

1.Login as Admin 2.Click on Fsm registry 3.Enter vendor name 4.Click on search

Vendor's details should display

Vendor's details is displaying

PASSED

PASSED

PASSED

Test Cases For Vehicle Tab

/3

Vehicle_01

Vehicle Tab

FSM Registry - Vehicle Tab

Verify UI for vehicle number Tab in FSM Registry page

1.Login as Admin 2.Click on Fsm registry 3.Click on Vehicle number Button

Admin Should be able to see the Vehicle page

Admin Can able to see the Vehicle page

PASSED

PASSED

PASSED

Vehicle_02

Vehicle Tab

FSM Registry - Vehicle Tab

Verify for vehicle number button in FSM Registry page

1.Login as Admin 2.Click on Fsm registry 3.Click on Vehicle number Button

Admin Should be able to see all the components of Vehicle number button

Admin Can bable to see all the components of Vehicle number button

PASSED

PASSED

PASSED

Vehicle_03

Vehicle Tab

FSM Registry - Vehicle Tab

Verify admin can able to enter vehicle number in Vehicle number text field

1.Login as Admin 2.Click on Fsm registry 3.Click on By Vehicle number Button 4.Enter Vehicle number 5.Click on search

Admin Should be able to see vehicle details

Admin Can able to see vehicle details

PASSED

PASSED

PASSED

Vehicle_04

Vehicle Tab

FSM Registry - Vehicle Tab

To verify admin can able to select Enable / disable toggle button

1.Login as Admin 2.Click on Fsm registry 3.Click on By Vehicle number Button 4Enter vendor name and click on search 5.Click on Enable/disable Toggle

Admin Should be able to see toggle button in orange colour if it is disabled or toggle button Should display in black if it is enabled

Admin Can able to see toggle button in orange colour if it is disabled or toggle button Can display in black if it is enabled

PASSED

PASSED

PASSED

Vehicle_05

Vehicle Tab

FSM Registry - Vehicle Tab

To verify admin can able to select Vehicle number

1.Login as Admin 2.Click on Fsm registry 3.Click on By Vehiclenumber Button 4.Enter Vehicle number 5.Click on search 5.Click on Vehicle number

Admin Should be able to see Vehicle details.

Admin Can be able to see Vehicle details.

PASSED

PASSED

PASSED

Vehicle_06

Vehicle Tab

FSM Registry - Vehicle Tab

To verify admin able to select Take action button

1.Login as Admin 2.Click on Fsm registry 3.Click on By Vehicle number Button 4.Enter Vehicle number 5.Click on search 6.Click on vehicle number 7.Click on take action button

Admin Should be able to see edit and delete buttons in orange colour

Admin Can be able to see edit and delete buttons in orange colour

PASSED

PASSED

PASSED

Vehicle_07

Vehicle Tab

FSM Registry - Vehicle Tab

To Verify admin can able to Edit the vehicle details

1.Login as Admin 2.Click on Fsm registry 3.Enter Vehicle number 4.Click on Vehicle number 5.Click on Take action 6.Click on edit 7.Enter the details in required fields 8.Click on submit application Button

Admin Should be able to see updated vehicle details

Admin Can able to see updated vehicle details

PASSED

PASSED

PASSED

Vehicle_08

Vehicle Tab

FSM Registry - Vehicle Tab

To Verify admin can able to Delete the vehicle's details

1.Login as Admin 2.Click on Fsm registry 3.Enter vendor name 4.Click on vendor name 5.Click on Take action 6.Click on Delete 7.Click Again On Delete

Vehicle Should be deleted from the list

Vehicle is deleted from the list

PASSED

PASSED

PASSED

Vehicle_09

Vehicle Tab

FSM Registry - Vehicle Tab

To verify admin able to click on add icon

1.Login as Admin 2.Click on Fsm registry 3.Click on add icon

Admin Should be able to see vendor,Vehicle and driver list

Admin can able to see vendor,Vehicle and driver list

PASSED

PASSED

PASSED

Vehicle_10

Vehicle Tab

FSM Registry - Vehicle Tab

To verify admin can able to add new vehicle

1.Login as Admin 2.Click on Fsm registry 3.Click on Add icon 4.Click on Vehicle 5.Enter all the required fields 6.Click on Submit application Button

New Vehicle has to be created

New Vehicle is created

PASSED

PASSED

PASSED

Vehicle_11

Vehicle Tab

FSM Registry - Vehicle Tab

To verify Admin can able to see the vehicle name in vendor list

1.Login as Admin 2.Click on Fsm registry 3.Enter Vehicle number 4.Click on search

Admin Should be able to see Vehicle's details

Admin Can able to see Vehicle's details

PASSED

PASSED

PASSED

Test Cases For Driver Tab

/1

Driver_01

Driver Tab

FSM Registry - DriverTab

To check UI of Driver tab

1.Login as Admin 2.Click on Fsm registry 3.Click on Driver Button

Admion Should be able to see the Driver page

Admin Can able to see the Driver page

PASSED

PASSED

PASSED

Driver_02

Driver Tab

FSM Registry - DriverTab

To verify Admin can able to enter Driver name in Driver Text field

1.Login as Admin 2.Click on Fsm registry 3.Click on Driver Button 4.Enter driver name in driver text field 5.Click on Search

Admin Should be able to see all the components of Driver page details

Admin Can able to see all the components of Driver page details

PASSED

PASSED

PASSED

Driver_03

Driver Tab

FSM Registry - DriverTab

To Verify admin can able to enter Driver name in name Driver text field

1.Login as Admin 2.Click on Fsm registry 3.Click on By Driver Button 4.Enter Driver name 5.Click on search

Admin Should be able to see all the details of the Driver

Admin can able to see all the details of the Driver

PASSED

PASSED

PASSED

Driver_04

Driver Tab

FSM Registry - DriverTab

To verify admin can able to select Enable / disable toggle button

1.Login as Admin 2.Click on Fsm registry 3.Click on By Driver Button 4.Enter Driver name 5.Click on search 6.Click on Enable or Disable toggle button

Admin Should be able to see toggle button in orange colour if it is enabled or Should display in black if it is Disabled

Admin can able to see toggle button in orange colour if it is enabled or Should display in black if it is Disabled

PASSED

PASSED

PASSED

Driver_05

Driver Tab

FSM Registry - DriverTab

To verify admin able to select Take action button

1.Login as Admin 2.Click on Fsm registry 3.Click on By Driver Button 4.Enter Driver name 5.Click on search 6. Click on Driver name 7.Click on take action button

Admin Should be able to see edit and delete buttons in orange colour

Admin can able to see edit and delete buttons in orange colour

PASSED

PASSED

PASSED

Driver_06

Driver Tab

FSM Registry - DriverTab

To verify admin able to click on add icon

1.Login as Admin 2.Click on Fsm registry 3.Click on add icon

Admin Should be able to see vendor,Vehicle and driver list

Admin can able to see vendor,Vehicle and driver list

PASSED

PASSED

PASSED

Driver_07

Driver Tab

FSM Registry - DriverTab

To verify admin can able to add new Driver

1.Login as Admin 2.Click on Fsm registry 3.Click on Add icon 4.Click on Driver 5.Enter all the required fields 6.Click on Submit application Button

New Driver has to be created

New Driver is created

PASSED

PASSED

PASSED

Driver_08

Driver Tab

FSM Registry - DriverTab

To verify Admin can able to see the Driver name in Driver list

1.Login as Admin 2.Click on Fsm registry 3.Enter Driver name 4.Click on search

Driver details should display

Driver details is displaying

PASSED

PASSED

PASSED

Complete request : upload photo - copy

Complete_request_01

Complete request

Uplaod Photo

To verify the localisation has been changed from upload pit photo to upload photo

1.Login as Editor. 2.Select the application which has to be completed. 3.Click on take action. 4.click on complete request.

The localisation Can be changed from upload pit photo to upload photo

The localisation Can been changed from upload pit photo to upload photo

PASSED

PASSED

PASSED

FSM Registry Login to Inbox and empty inbox

FSM Registry_01

FSM Registry-Inbox

FSM Registry Login to Inbox and empty inbox

To verify admin can able to view add Add new vendor option

1.Login as Admin. 2.click on Fsm registry button 3.Enter the invalid vendor name. 4.Click on search

Admin should be able to view add new vendor option .

Admin Can able to view add new vendor option .

PASSED

PASSED

PASSED

FSM Registry_02

FSM Registry-Inbox

FSM Registry Login to Inbox and empty inbox

To verify admin can able to view add Add new vehicle option

1.Login as Admin. 2.click on Fsm registry button 3.Enter the invalid vehicle name. 4.Click on search

Admin should be able to view add new vehicle option

Admin Can able to view add new vehicle option

PASSED

PASSED

PASSED

FSM Registry_03

FSM Registry-Inbox

FSM Registry Login to Inbox and empty inbox

To verify admin can able to view add Add new driver option

1.Login as Admin. 2.click on Fsm registry button 3.Enter the invalid driver name. 4.Click on search.

Admin should be able to view add new vendor option .

Admin Can able to view add new vendor option .

PASSED

PASSED

PASSED

ULB Inbox

ULB Employee_01

ULB Employee

ULB Employee Inbox

To verify Filter options like assigned to me and assigned to all Can be removed from UI

1.Login as ULB Employee 2.Click on inbox 3.Check whether Filter options like assigned to me and assigned to all is there.

ULB Employee Can not be able to view assigned to me and assigned to all filter options.

ULB Employee can able to view assigned to me and assigned to all filter options.

PASSED

PASSED

PASSED

ULB Employee_02

Creator flow

ULB Employee Inbox

To check that creator can be able to view FSM Page with New De sludging application , inbox and reports options.

1.Login As admin 2.click on New Desludging application button. 3.click the browser back button

Creator Can be able to view FSM Page with New De sludging application , inbox and reports options.

Creator can be able to view FSM Page with New De sludging application , inbox and reports options.

PASSED

PASSED

PASSED

Test cases for Vehicle validation

Vehicle number validation_01

Vehicle

Vehicle number validation

The Add new text field Can accept the vehicle number in the AB 00 CD 1234 format

1.Login as FSTPO. 2.Click on Home. 3.Click on Add new. 4.Enter the vehicle number in the AB 00 CD 1234 format.

The Add new text field Can be able to accept the vehicle number in the AB 00 CD 1234 format

The Add new text field is accepting the vehicle number in the AB 00 CD 1234 format

PASSED

PASSED

PASSED

Vehicle number validation_02

Vehicle

Vehicle number validation

The Add new text field Can accept the vehicle number in the AB 00 C 1234 format

1.Login as FSTPO. 2.Click on Home. 3.Click on Add new. 4.Enter the vehicle number in the AB 00 C 1234 format.

The Add new text field Can be able to accept the vehicle number in the AB 00 C 1234 format

The Add new text field is accepting the vehicle number in the AB 00 C 1234 format

PASSED

PASSED

PASSED

Vehicle number validation_03

Vehicle

Vehicle number validation

The Add new text field Can accept the vehicle number in the AB 00C 1234 format

1.Login as FSTPO. 2.Click on Home. 3.Click on Add new. 4.Enter the vehicle number in the AB 00C 1234 format.

The Add new text field Can be able to accept the vehicle number in the AB 00C 1234 format

The Add new text field is accepting the vehicle number in the AB 00C 1234 format

PASSED

PASSED

PASSED

Vehicle number validation_04

Vehicle

Vehicle number validation

The Add new text field Can accept the vehicle number in the AB 00CD 1234 format

1.Login as FSTPO. 2.Click on Home. 3.Click on Add new. 4.Enter the vehicle number in the AB 00CD 1234 format.

The Add new text field Can be able to accept the vehicle number in the AB 00CD 1234 format

The Add new text field is accepting the vehicle number in the AB 00CD 1234 format

PASSED

PASSED

PASSED

ULB New application +(modify application)

ULB Employee_01

ULB Employee

ULB New application + modify application

To verify that collector can able to collect the advance amount

1.Login as collector 2.search with the application number and click on the application number and collect the payment.

Collector Can be able to Collect the advance amount.

Collector can able to Collect the advance amount.

PASSED

PASSED

PASSED

ULB Employee_02

ULB Employee

ULB New application + modify application

To verify that collector can able to collect the Balance amount

1.Login as collector 2.search with the application number and click on the application number and collect the payment.

Collector Can be able to Collect the balance amount.

Collector can able to Collect the balance amount.

PASSED

PASSED

PASSED

ULB Employee_03

ULB Employee

ULB New application + modify application

To verify that Collector can able to view the advance amount and paid amount and balance amount in payment Reciept.

1.Login as collector 2.search with the application number and click on the application number and collect the payment. 3.Download the reciept and view the advance amount and paid amount and balance amount in payment Reciept.

Collector Can be able to view the advance amount and paid amount and balance amount in payment Reciept.

Collector can able to view the advance amount and paid amount and balance amount in payment Reciept.

PASSED

PASSED

PASSED

ULB collecting advance

, https://digit-discuss.atlassian.net/browse/SM-807

Collector - Advance amount_01

Collector - Advance amount

ULB collecting advance amount

To verify that collector can able to collect the advance amount

1.Login as collector 2.search with the application number and click on the application number and collect the payment.

Collector Can be able to Collect the advance amount.

Collector can able to Collect the advance amount.

PASSED

PASSED

PASSED

Collector - Advance amount_02

Collector - Advance amount

ULB collecting advance amount

To verify that collector can able to collect the Balance amount

1.Login as collector 2.search with the application number and click on the application number and collect the payment.

Collector Can be able to Collect the balance amount.

Collector can able to Collect the balance amount.

PASSED

PASSED

PASSED

Collector - Advance amount_03

Collector - Advance amount

ULB collecting advance amount

To verify that Collector can able to view the advance amount and paid amount and balance amount in payment Reciept.

1.Login as collector 2.search with the application number and click on the application number and collect the payment. 3.Download the reciept and view the advance amount and paid amount and balance amount in payment Reciept.

Collector Can be able to view the advance amount and paid amount and balance amount in payment Reciept.

Collector can able to view the advance amount and paid amount and balance amount in payment Reciept.

PASSED

PASSED

PASSED

Collector - Advance amount_04

Collector - Advance amount

ULB collecting advance amount

To verify that collector can able to collect the remaining amount and the breadcrumbs Can be as follows Home/FSM/ Inbox/ Collect Payment / Generate Receipt

1.Login as Collector. 2.click on inbox and enter the application number and click on the application number, 3.Click on generate reciept and enter all the fields and click on submit application

collector Can be able to collect the remaining amount and the breadcrumbs Can be as follows Home/FSM/ Inbox/ Collect Payment / Generate Receipt

collector can able to collect the remaining amount and the breadcrumbs Can be as follows Home/FSM/ Inbox/ Collect Payment / Generate Receipt

PASSED

PASSED

PASSED

Collector - Advance amount_05

Collector - Advance amount

ULB collecting advance amount

To verify that citizen is getting the message in the given format after paying the full amount

Check has to check the message and Can be in the given format Dear citizen, amount of Rs.* is received towards the payment of cleaning septic tank /pit for reference no. *. Please click this link **to download the receipt. Thank You. EGOVS.

citizen Can be able to get the message in the given format.

citizen can able to get the message in the given format.

PASSED

PASSED

PASSED

Collector - Advance amount_06

Collector - Advance amount

ULB collecting advance amount

To verify that citizen able to download the reciept from the message link.

Click on the download the reciept link which has sent to citizen and download the report

Citizen Can be able to download the report.

ULB employee update number of trips

ULB Employee - No of trips update_01

ULB Employee - No of trips update

ULB employee update number of trips

cr amount

1.Login as Editor. 2.click on inbox and enter the application number and click on the application number, 3.click on take action 4.click on update trips. 5.Now increase/decrease the trips

Editor Can be able to increase/decrease the trips when citizen has paid some advance amount.

Editor can be able to increase/decrease the trips when citizen has paid some advance amount.

PASSED

PASSED

PASSED

ULB Employee - No of trips update_02

ULB Employee - No of trips update

ULB employee update number of trips

To verify that can able to reduce the trips when citizen has paid some advance amount

1.Login as Editor. 2.click on inbox and enter the application number and click on the application number, 3.click on take action 4.click on update trips. 5.Now reduce the trips

Editor Can not be able to reduce the trips when citizen has paid some advance amount.

Editor can't able to reduce the trips when citizen has paid some advance amount.

PASSED

PASSED

PASSED

ULB Employee - No of trips update_03

ULB Employee - No of trips update

ULB employee update number of trips

To verify that Editor can be able to view the message as not allowed to reduce the number of trips as amount as already collected when amount has been already paid

1.Login as Editor. 2.click on inbox and enter the application number and click on the application number, 3.click on take action 4.click on update trips.

Editor Can be able to view the message as not allowed to reduce the number of trips as amount as already collected when amount has been already paid

Editor can be able to view the message as not allowed to reduce the number of trips as amount as already collected when amount has been already paid

PASSED

PASSED

PASSED

ULB Employee - No of trips update_04

ULB Employee - No of trips update

ULB employee update number of trips

To verify that Editor can able to Complete the request when citizen pay the full amount

1.Login as Editor. 2.click on inbox and enter the application number and click on the application number, 3.click on take action 4.complete the request.

Editor Can be able to complete the request when citizen makes the full payment.

Editor can be able to complete the request when citizen makes the full payment.

PASSED

PASSED

PASSED

ULB Employee - No of trips update_05

ULB Employee - No of trips update

ULB employee update number of trips

To verify that editor can't able to Complete the request when citizen did not pays the full amount

Login as editor and click on inbox and enter the application number and click on the application number and try to complete the request

editor Can not be able to Complete the request when citizen did not pays the full amount

editor cannot able to Complete the request when citizen did not pays the full amount

PASSED

PASSED

PASSED

DSO update number of trips

DSO update number of trips_01

DSO update number of trips

DSO update number of trips

To verify that DSOcan able to increase or decrease the trips when citizen has paid some advance amount

1.Login as Editor. 2.click on inbox and enter the application number and click on the application number, 3.click on take action 4.click on update trips. 5.Now increase/decrease the trips

DSO Can be able to increase/decrease the trips when citizen has paid some advance amount.

DSO can be able to increase/decrease the trips when citizen has paid some advance amount.

PASSED

PASSED

PASSED

DSO update number of trips_02

DSO update number of trips

DSO update number of trips

To verify that can able to reduce the trips when citizen has paid some advance amount

1.Login as Editor. 2.click on inbox and enter the application number and click on the application number, 3.click on take action 4.click on update trips. 5.Now reduce the trips

DSOCan not be able to reduce the trips when citizen has paid some advance amount.

DSO can't able to reduce the trips when citizen has paid some advance amount.

PASSED

PASSED

PASSED

DSO update number of trips_03

DSO update number of trips

DSO update number of trips

To verify that DSO can be able to view the message as not allowed to reduce the number of trips as amount as already collected when amount has been already paid

1.Login as Editor. 2.click on inbox and enter the application number and click on the application number, 3.click on take action 4.click on update trips.

DSO Can be able to view the message as not allowed to reduce the number of trips as amount as already collected when amount has been already paid

DSO can be able to view the message as not allowed to reduce the number of trips as amount as already collected when amount has been already paid

PASSED

PASSED

PASSED

DSO update number of trips_04

DSO update number of trips

DSO update number of trips

To verify that DSO can able to Complete the request when citizen pay the full amount

1.Login as Editor. 2.click on inbox and enter the application number and click on the application number, 3.click on take action 4.complete the request.

DSOCan be able to complete the request when citizen makes the full payment.

DSOcan be able to complete the request when citizen makes the full payment.

PASSED

PASSED

PASSED

DSO update number of trips_05

DSO update number of trips

DSO update number of trips

To verify that DSo can't able to Complete the request when citizen did not pays the full amount

Login as DSoand click on inbox and enter the application number and click on the application number and try to complete the request

DSoCan not be able to Complete the request when citizen did not pays the full amount

DSocannot able to Complete the request when citizen did not pays the full amount

PASSED

PASSED

PASSED

Workflow changes from creator flow side

Workflow changes - Creator side_01

Workflow changes - Creator side

Workflow changes from creator side

To verify that collector can able to collect the advance amount

1.Login as collector 2.search with the application number and click on the application number and collect the payment.

Collector Can be able to Collect the advance amount.

Collector can able to Collect the advance amount.

PASSED

PASSED

PASSED

Workflow changes - Creator side_02

Workflow changes - Creator side

Workflow changes from creator side

To verify that Collector can able to view the advance amount and paid amount and balance amount in payment Reciept.

1.Login as collector 2.search with the application number and click on the application number and collect the payment. 3.Download the reciept and view the advance amount and paid amount and balance amount in payment Reciept.

Collector Can be able to view the advance amount and paid amount and balance amount in payment Reciept.

Collector can able to view the advance amount and paid amount and balance amount in payment Reciept.

PASSED

PASSED

PASSED

Workflow changes - Creator side_03

Workflow changes - Creator side

Workflow changes from creator side

To verify that Editor can able to assign the DSO

1.Login as Editor. 2.click on inbox and enter the application number and click on the application number, 3.click on take action. 4.click on assign DSO. 5.Assign the DSO.

Editor Can be able to assign the DSO

Editor can able to assign the DSO

PASSED

PASSED

PASSED

Workflow changes - Creator side_04

Workflow changes - Creator side

Workflow changes from creator side

To verify that Editor/DSO can able to assign the Vehicle.

1.Login as Editor/DSO. 2.2.click on inbox and enter the application number and click on the application number, 3.click on take action. 4.click on assign vehicle 5.Assign the vehicle.

Editor/DSO Can be able to assign the Vehicle

Editor/DSO can able to assign Vehicle

PASSED

PASSED

PASSED

Workflow changes - Creator side_05

Workflow changes - Creator side

Workflow changes from creator side

To verify that Editor /DSO can able to increase or decrease the trips when citizen has paid some advance amount

1.Login as Editor /DSO. 2.click on inbox and enter the application number and click on the application number, 3.click on take action 4.click on update trips. 5.Now increase/decrease the trips

Editor /DSO Can be able to increase/decrease the trips when citizen has paid some advance amount.

Editor /DSO can be able to increase/decrease the trips when citizen has paid some advance amount.

PASSED

PASSED

PASSED

Workflow changes - Creator side_06

Workflow changes - Creator side

Workflow changes from creator side

To verify that can able to reduce the trips when citizen has paid some advance amount

1.Login as Editor /DSO. 2.click on inbox and enter the application number and click on the application number, 3.click on take action 4.click on update trips. 5.Now reduce the trips

Editor /DSO Can not be able to reduce the trips when citizen has paid some advance amount.

Editor /DSO can't able to reduce the trips when citizen has paid some advance amount.

PASSED

PASSED

PASSED

Workflow changes - Creator side_07

Workflow changes - Creator side

Workflow changes from creator side

To verify that Editor /DSO can be able to view the message as not allowed to reduce the number of trips as amount as already collected when amount has been already paid

1.Login as Editor /DSO. 2.click on inbox and enter the application number and click on the application number, 3.click on take action 4.click on update trips.

Editor /DSO Can be able to view the message as not allowed to reduce the number of trips as amount as already collected when amount has been already paid

Editor /DSO can be able to view the message as not allowed to reduce the number of trips as amount as already collected when amount has been already paid

PASSED

PASSED

PASSED

Workflow changes - Creator side_08

Workflow changes - Creator side

Workflow changes from creator side

To verify that collector can able to Balance amount

1.Login as collector 2.search with the application number and click on the application number and collect the payment.

Collector Can be able to Collect the balance amount.

Collector can be able to Collect the balance amount.

PASSED

PASSED

PASSED

Workflow changes - Creator side_09

Workflow changes - Creator side

Workflow changes from creator side

To verify that Collector can able to view the advance amount and paid amount and balance amount in payment Reciept.

1.Login as collector 2.search with the application number and click on the application number and collect the payment. 3.Download the reciept and view the advance amount and paid amount and balance amount in payment Reciept.

Collector Can be able to view the advance amount and paid amount and balance amount in payment Reciept.

Collector can able to view the advance amount and paid amount and balance amount in payment Reciept.

PASSED

PASSED

PASSED

Workflow changes - Creator side_10

Workflow changes - Creator side

Workflow changes from creator side

To verify that FSTPO can able to click on Dispose

1.Login as FSTPO. 2.click on inbox and enter the application number and click on the application number, 3.click on take action 4.And Click on dispose.

FSTPO Can be able to click on Dispose.

FSTPO can able to dispose.

PASSED

PASSED

PASSED

Workflow changes - Creator side_11

Workflow changes - Creator side

Workflow changes from creator side

To verify that Editor/DSO can able to Complete the request when citizen pay the full amount

1.Login as Editor. 2.click on inbox and enter the application number and click on the application number, 3.click on take action 4.complete the request.

Editor/DSOCan be able to complete the request when citizen makes the full payment.

Editor/DSOcan be able to complete the request when citizen makes the full payment.

PASSED

PASSED

PASSED

Workflow changes - Creator side_12

Workflow changes - Creator side

Workflow changes from creator side

To verify that Editor/DSO Can not able to Complete the request when citizen did not pays the full amount

Login as Editor/DSOand click on inbox and enter the application number and click on the application number and try to complete the request

Editor/DSOCan not be able to Complete the request when citizen did not pays the full amount

Editor/DSOcannot able to Complete the request when citizen did not pays the full amount

PASSED

PASSED

PASSED

Workflow changes - Creator side_13

Workflow changes - Creator side

Workflow changes from creator side

To verify that Citizen can able to give Feedback.

1.Login as citizen. 2.click on my application. 3.click on application number. 4.click on Citizen provides Feedback. 5.Fill all the fields. 6.click on submit.

Citizen Can be able to give Feedback.

Citizen can able to give feedback

PASSED

PASSED

PASSED

Workflow changes from citizen side

Workflow changes - Citizen side_01

Workflow changes - Citizen side

Workflow changes from Citizen side

To verify that citizen is able to view warning message when he enters the amount greater than the advance amount

1.Login as creator 2.click on new desludging appliction 3.Enter all the mandatory fields till Payment Preference 4.Select pre pay in Payment Preference 5.Then enter greater than the advance amount

citizen as to able to view warning message as Amount entered is greater than the advance amount.

citizen can able to view warning message as Amount entered is greater than the advance amount.

PASSED

PASSED

PASSED

Workflow changes - Citizen side_02

Workflow changes - Citizen side

Workflow changes from Citizen side

To verify that citizen is able to view warning message when he enters the amount lesser than the advance amount

11.Login as creator 2.click on new desludging appliction 3.Enter all the mandatory fields till Payment Preference 4.Select pre pay in Payment Preference 5.Then enter lesser than the advance amount

citizen as to able to view warning message as Amount entered is lesser than the advance amount.

citizen can able to view warning message as Amount entered is greater than the advance amount.

PASSED

PASSED

PASSED

Workflow changes - Citizen side_03

Workflow changes - Citizen side

Workflow changes from Citizen side

To verify that editor can able to update the trips.

1.Login as editor. 2.search with the citizen created application number and click on application number 3.Click on take action. 4.update the trips.

Editor Can be able to update the trips.

Editor can be able to update the trips.

PASSED

PASSED

PASSED

Workflow changes - Citizen side_04

Workflow changes - Citizen side

Workflow changes from Citizen side

To verify that collector can able to collect the advance amount

1.Login as collector 2.search with the application number and click on the application number and collect the payment.

Collector Can be able to Collect the advance amount.

Collector can able to Collect the advance amount.

PASSED

PASSED

PASSED

Workflow changes - Citizen side_05

Workflow changes - Citizen side

Workflow changes from Citizen side

To verify that Collector can able to view the advance amount and paid amount and balance amount in payment Reciept.

1.Login as collector 2.search with the application number and click on the application number and collect the payment. 3.Download the reciept and view the advance amount and paid amount and balance amount in payment Reciept.

Collector Can be able to view the advance amount and paid amount and balance amount in payment Reciept.

Collector can able to view the advance amount and paid amount and balance amount in payment Reciept.

PASSED

PASSED

PASSED

Workflow changes - Citizen side_06

Workflow changes - Citizen side

Workflow changes from Citizen side

To verify that Editor can able to assign the DSO

1.Login as Editor. 2.click on inbox and enter the application number and click on the application number, 3.click on take action. 4.click on assign DSO. 5.Assign the DSO.

Editor Can be able to assign the DSO

Editor can able to assign the DSO

PASSED

PASSED

PASSED

Workflow changes - Citizen side_07

Workflow changes - Citizen side

Workflow changes from Citizen side

To verify that Editor/DSO can able to assign the Vehicle.

1.Login as Editor/DSO. 2.click on inbox and enter the application number and click on the application number, 3.click on take action. 4.click on assign vehicle 5.Assign the vehicle.

Editor/DSO Can be able to assign the Vehicle

Editor/DSO can able to assign Vehicle

PASSED

PASSED

PASSED

Workflow changes - Citizen side_08

Workflow changes - Citizen side

Workflow changes from Citizen side

To verify that Editor /DSO can able to increase or decrease the trips when citizen has paid some advance amount

1.Login as Editor /DSO. 2.click on inbox and enter the application number and click on the application number, 3.click on take action 4.click on update trips. 5.Now increase/decrease the trips

Editor /DSO Can be able to increase/decrease the trips when citizen has paid some advance amount.

Editor /DSO can be able to increase/decrease the trips when citizen has paid some advance amount.

PASSED

PASSED

PASSED

Workflow changes - Citizen side_09

Workflow changes - Citizen side

Workflow changes from Citizen side

To verify that can able to reduce the trips when citizen has paid some advance amount

1.Login as Editor /DSO. 2.click on inbox and enter the application number and click on the application number, 3.click on take action 4.click on update trips. 5.Now reduce the trips

Editor /DSO Can not be able to reduce the trips when citizen has paid some advance amount.

Editor /DSO can't able to reduce the trips when citizen has paid some advance amount.

PASSED

PASSED

PASSED

Workflow changes - Citizen side_10

Workflow changes - Citizen side

Workflow changes from Citizen side

To verify that Editor /DSO can be able to view the message as not allowed to reduce the number of trips as amount as already collected when amount has been already paid

1.Login as Editor /DSO. 2.click on inbox and enter the application number and click on the application number, 3.click on take action 4.click on update trips.

Editor /DSO Can be able to view the message as not allowed to reduce the number of trips as amount as already collected when amount has been already paid

Editor /DSO can be able to view the message as not allowed to reduce the number of trips as amount as already collected when amount has been already paid

PASSED

PASSED

PASSED

Workflow changes - Citizen side_11

Workflow changes - Citizen side

Workflow changes from Citizen side

To verify that collector can able to Balance amount

1.Login as collector 2.search with the application number and click on the application number and collect the payment.

Collector Can be able to Collect the balance amount.

Collector can be able to Collect the balance amount.

PASSED

PASSED

PASSED

Workflow changes - Citizen side_12

Workflow changes - Citizen side

Workflow changes from Citizen side

To verify that Collector can able to view the advance amount and paid amount and balance amount in payment Reciept.

1.Login as collector 2.search with the application number and click on the application number and collect the payment. 3.Download the reciept and view the advance amount and paid amount and balance amount in payment Reciept.

Collector Can be able to view the advance amount and paid amount and balance amount in payment Reciept.

Collector can able to view the advance amount and paid amount and balance amount in payment Reciept.

PASSED

PASSED

PASSED

Workflow changes - Citizen side_13

Workflow changes - Citizen side

Workflow changes from Citizen side

To verify that FSTPO can able to click on Dispose

1.Login as FSTPO. 2.click on inbox and enter the application number and click on the application number, 3.click on take action 4.And Click on dispose.

FSTPO Can be able to click on Dispose.

FSTPO can able to dispose.

PASSED

PASSED

PASSED

Workflow changes - Citizen side_14

Workflow changes - Citizen side

Workflow changes from Citizen side

To verify that Editor/DSO can able to Complete the request when citizen pay the full amount

1.Login as Editor. 2.click on inbox and enter the application number and click on the application number, 3.click on take action 4.complete the request.

Editor/DSOCan be able to complete the request when citizen makes the full payment.

Editor/DSOcan be able to complete the request when citizen makes the full payment.

PASSED

PASSED

PASSED

Workflow changes - Citizen side_15

Workflow changes - Citizen side

Workflow changes from Citizen side

To verify that Editor/DSOCan not able to Complete the request when citizen did not pays the full amount

Login as Editor/DSOand click on inbox and enter the application number and click on the application number and try to complete the request

Editor/DSOCan not be able to Complete the request when citizen did not pays the full amount

Editor/DSOcannot able to Complete the request when citizen did not pays the full amount

PASSED

PASSED

PASSED

Workflow changes - Citizen side_16

Workflow changes - Citizen side

Workflow changes from Citizen side

To verify that Citizen can able to give Feedback.

1.Login as citizen. 2.click on my application. 3.click on application number. 4.click on Citizen provides Feedback. 5.Fill all the fields. 6.click on submit.

Citizen Can be able to give Feedback.

Citizen can able to give feedback

PASSED

PASSED

PASSED

FSM V1.2 : Citizen New application +(modify application)

Citizen side - warning message_01

Citizen side - warning message

Citizen side - warning message

To verify that citizen is able to view warning message when he enters the amount greater than the advance amount

1.Login as creator 2.click on new desludging appliction 3.Enter all the mandatory fields till Payment Preference 4.Select pre pay in Payment Preference 5.Then enter greater than the advance amount

citizen as to able to view warning message as Amount entered is greater than the advance amount.

citizen can able to view warning message as Amount entered is greater than the advance amount.

PASSED

PASSED

PASSED

Citizen side - warning message_02

Citizen side - warning message

Citizen side - warning message

To verify that citizen is able to view warning message when he enters the amount lesser than the advance amount

11.Login as creator 2.click on new desludging appliction 3.Enter all the mandatory fields till Payment Preference 4.Select pre pay in Payment Preference 5.Then enter lesser than the advance amount

citizen as to able to view warning message as Amount entered is lesser than the advance amount.

citizen can able to view warning message as Amount entered is greater than the advance amount.

PASSED

PASSED

PASSED

Payment mode from citzen side

Citizen side - Pyment_01

Citizen side - Pyment

Citizen side - Pyment

To verify citizen can able to make the payment for partial amount.

1.Login as citizen and create a desludging application. 2.Login as editor and update the trips. 3.Login as citizen and make the payment for partial amount by entering all the mandatory fields.

citizen should be able to make the payment for partial amount.

citizen can able to make the payment for partial amount.

PASSED

PASSED

PASSED

Citizen side - Pyment_02

Citizen side - Pyment

Citizen side - Pyment

To verify citizen can able to make the payment for full amount.

1.Login as citizen and create a desludging application. 2.Login as editor and update the trips. 3.Login as citizen and make the payment for full amount by entering all the mandatory fields.

citizen should be able to make the payment for full amount.

citizen can able to make the payment for full amount.

PASSED

PASSED

PASSED

Citizen side - Pyment_03

Citizen side - Pyment

Citizen side - Pyment

To verify citizen can able to make the payment after paying the partial amount

1.Login as citizen and create a desludging application. 2.Login as editor and update the trips. 3.Login as citizen and make the payment for partial amount by entering all the mandatory fields. 4.Login as Editor, assign the DSO. 5.Login as Editor, Assign the vehicle and update the trips. 6.Login as Citizen make the payment for partial amount by entering all the mandatory fields.

citizen should be able to make the payment after paying the partial amount

citizen can be able to make the payment after paying the partial amount

PASSED

PASSED

PASSED

Citizen side - Pyment_04

Citizen side - Pyment

Citizen side - Pyment

To verify citizen can able to make the payment after paying the full amount

1.Login as citizen and create a desludging application. 2.Login as editor and update the trips. 3.Login as citizen and make the payment for full amount by entering all the mandatory fields. 4.Login as Editor, assign the DSO. 5.Login as Editor, Assign the vehicle and update the trips. 6.Login as Citizen make the payment for full amount by entering all the mandatory fields.

citizen should not be able to make the payment after paying the full amount

citizen can not able to make the payment after paying the full amount

PASSED

PASSED

PASSED

Updating Citizen Feedback form

Citizen Feedback form_01

Citizen Feedback form

Update Citizen Feedback form

Verify that "Number of Trips" text field has removed From the UI

1.Login as citizen. 2.click on my application. 3.click on application number. 4.click on Citizen provides Feedback. 5.check that Number of Trips text field has removed From the UI

"Number of Trips" text field should be removed From the UI

"Number of Trips" text field is removed From the UI

PASSED

PASSED

PASSED

Citizen Feedback form_02

Citizen Feedback form

Update Citizen Feedback form

Verify that "Did desludging happen" textfield has removed From the UI

1.Login as citizen. 2.click on my application. 3.click on application number. 4.click on Citizen provides Feedback. 5.Check that Did desludging happen textfield has removed From the UI

"Did desludging happen" textfield should be removed From the UI

"Did desludging happen" textfield is removed From the UI

PASSED

PASSED

PASSED

Citizen Feedback form_03

Citizen Feedback form

Update Citizen Feedback form

Verify that "Provide Feedback " rating scale is a mandatory field

1.Login as citizen. 2.click on my application. 3.click on application number. 4.click on Citizen provides Feedback.

"Provide Feedback " rating scale should be mandatory field

"Provide Feedback " rating scale is a mandatory field

PASSED

PASSED

PASSED

Citizen Feedback form_04

Citizen Feedback form

Update Citizen Feedback form

Verify that "Safety gear used " checkbox is a mandatory field

1.Login as citizen. 2.click on my application. 3.click on application number. 4.click on Citizen provides Feedback. 5.Check that Provide Feedback rating scale is a mandatory field

Verify that "Safety gear used " checkbox should be mandatory field

Verify that "Safety gear used " checkbox should is a mandatory field

PASSED

PASSED

PASSED

Citizen Feedback form_05

Citizen Feedback form

Update Citizen Feedback form

Verify that "Comments" textfield is a not a mandatory field

1.Login as citizen. 2.click on my application. 3.click on application number. 4.click on Citizen provides Feedback. 5.Check that Commentstextfield is a not a mandatory field

Verify that "Comments" textfield is a not a mandatory field

Verify that "Comments" textfield is a not a mandatory field

PASSED

PASSED

PASSED

Citizen Feedback form_06

Citizen Feedback form

Update Citizen Feedback form

Verify that Submit button Should not highlighted when mandatory fields are not filled

1.Login as citizen. 2.click on my application. 3.click on application number. 4.click on Citizen provides Feedback. 5.check that Submit button Should not highlighted when mandatory fields are not filled

Submit button Should not highlighted when mandatory fields are not filled

Submit button isn't highlighted when mandatory fields are not filled

PASSED

PASSED

PASSED

Citizen Feedback form_07

Citizen Feedback form

Update Citizen Feedback form

Verify that when citizen didn't fill the mandatory fields suggestions has to display

1.Login as citizen. 2.click on my application. 3.click on application number. 4.click on Citizen provides Feedback. 5. Check that when citizen didn't fill the mandatory fields suggestions has to display

when citizen didn't fill the mandatory fields suggestions messages should display

when citizen didn't fill the mandatory fields suggestions messages like "please rate your experience between 1-5 stars" and "please select the options from below" is displaying

PASSED

PASSED

PASSED

Skip Collection Process for Zero Pricing

Zero pricing_01

Zero pricing

Skip Collection Process for Zero Pricing

Verify that when citizen selects the "Kathagada Parbatia Sahi "slum while creating the De-sludging application the payment details should be ₹ 0

1.Login as citizen. 2.Create an application by selecting "Kathagada Parbatia Sahi" slum option .

Payment details should be ₹ 0 when citizen creates the application by selecting "Kathagada Parbatia Sahi "slum option

when citizen selects the "Kathagada Parbatia Sahi "slum while creating the De-sludging application the payment details is showing as ₹ 0

PASSED

PASSED

PASSED

Zero pricing_02

Zero pricing

Skip Collection Process for Zero Pricing

Verify that when creator selects the "Kathagada Parbatia Sahi" slum while creating the De-sludging application the payment details should be ₹ 0

1.Login as creator. 2.Create an application by selecting the "Kathagada Parbatia Sahi" slum option .

Payment details should be ₹ 0 when creator creates the application by selecting "Kathagada Parbatia Sahi "slum option

when creator selects the "Kathagada Parbatia Sahi" slum while creating the De-sludging application the payment details is showing as ₹ 0

PASSED

PASSED

PASSED

Zero pricing_03

Zero pricing

Skip Collection Process for Zero Pricing

Verify that when the citizen created the application by selecting the slum option then that applicaton while completing the request ,It should not ask the payment details.

1.Login as Editor. 2.click on inbox and enter the application number and click on the application number, 3.click on take action 4.complete the request.

Verify that when the citizen created the application, by selecting the slum option then that applicaton while completing the request ,It should not ask the payment details.

when the citizen created the application by selecting the slum option then that applicaton while completing the request ,It is not asking the payment details.

PASSED

PASSED

PASSED

Zero pricing_04

Zero pricing

Skip Collection Process for Zero Pricing

Configure property type as Residential and sub property type as independent house using API for zero pricing by NOT selecting any slum

Select property type as Residential and sub property type as independent house using API for zero pricing by NOT selecting any slum

Citizen Should not able to create the application

Citizen cannot able to create the application

PASSED

PASSED

PASSED

Advance Balance Workflow Enhancement

Advance Balance Workflow _01

Advance Balance Workflow

Advance Balance Workflow

Verify when minimum pricing by the ULB is zero and citizen chooses to pay 0

1.Login as citizen. 2.Set the minimum pricing given by the ULB

A citizen creates a request where minimum pricing by the ULB is zero and citizen chooses to pay 0. No. of Trips = 1, Amount per Trip is 1000. The workflow is as follows: Create request ----> Accept Request ------> Assign DSO -------> Assign Vehicle ------> Collect Payment ------> Complete Request The collect payment step should display 100% of the total amount as amount due. The payment receipt displays Amount per trip: 1000, Total Amount: 1000, Advance amount paid: 0, Balance amount paid: 1000, Total due: 0

A citizen creates a request where minimum pricing by the ULB is zero and citizen chooses to pay 0. No. of Trips = 1, Amount per Trip is 1000. The workflow is as follows: Create request ----> Accept Request ------> Assign DSO -------> Assign Vehicle ------> Collect Payment ------> Complete Request The collect payment step should display 100% of the total amount as amount due. The payment receipt displays Amount per trip: 1000, Total Amount: 1000, Advance amount paid: 0, Balance amount paid: 1000, Total due: 0

PASSED

PASSED

PASSED

Advance Balance Workflow _02

Advance Balance Workflow

Advance Balance Workflow

Verify when A citizen creates a new request. The minimum pricing by the ULB is 100%.

1.Login as citizen. 2.Set the minimum pricing given by the ULB 3. The citizen chooses 1 trip, Amount per trip = 1000. The input box for entering Advance Amount is non editable and displays value equal to 100% of the trip amount.

The citizen chooses 1 trip, Amount per trip = 1000. The input box for entering Advance Amount is non editable and displays value equal to 100% of the trip amount. The acknowledgment receipt displays the following: Amount per trip: 1000 Total Amount: 1000 Advance Amount due: 1000

The citizen chooses 1 trip, Amount per trip = 1000. The input box for entering Advance Amount is non editable and displays value equal to 100% of the trip amount. The acknowledgment receipt displays the following: Amount per trip: 1000 Total Amount: 1000 Advance Amount due: 1000

PASSED

PASSED

PASSED

Advance Balance Workflow _03

Advance Balance Workflow

Advance Balance Workflow

Verify when A citizen creates a new request. The minimum pricing by the ULB is 100%. and When the no. of trips is edited by the ULB to 2, advance amount is updated automatically for 100% of the amount for 2 trips.

1.Login as citizen. 2.Set the minimum pricing given by the ULB 3. The citizen chooses 1 trip, Amount per trip = 1000. The input box for entering Advance Amount is non editable and displays value equal to 100% of the trip amount.

The citizen chooses 1 trip, Amount per trip = 1000. The input box for entering Advance Amount is non editable and displays value equal to 100% of the trip amount. When the no. of trips is edited by the ULB to 2, advance amount is updated automatically for 100% of the amount for 2 trips. he acknowledgment receipt displays the following: Amount per trip: 1000 Total Amount: 1000 Advance Amount due: 1000

The citizen chooses 1 trip, Amount per trip = 1000. The input box for entering Advance Amount is non editable and displays value equal to 100% of the trip amount. When the no. of trips is edited by the ULB to 2, advance amount is updated automatically for 100% of the amount for 2 trips. he acknowledgment receipt displays the following: Amount per trip: 1000 Total Amount: 1000 Advance Amount due: 1000

PASSED

PASSED

PASSED

Advance Balance Workflow _04

Advance Balance Workflow

Advance Balance Workflow

Verify when a citizen creates a new request where minimum pricing by the ULB is set at 500 Rs. The citizen chooses to pay 600 Rs.

1.Login as citizen. 2.Set the minimum pricing given by the ULB 3. citizen creates a new request where minimum pricing by the ULB is set at 500 Rs. The citizen chooses to pay 600 Rs..

A citizen creates a new request where minimum pricing by the ULB is set at 500 Rs. The citizen chooses to pay 600 Rs. The collection screen displays 600 Rs. The workflow is as follows: Create Request -----> Accept Request------> Collect Payment -------> Assign Vehicle ----->Collect Payment ----> Complete Request

A citizen creates a new request where minimum pricing by the ULB is set at 500 Rs. The citizen chooses to pay 600 Rs. The collection screen displays 600 Rs. The workflow is as follows: Create Request -----> Accept Request------> Collect Payment -------> Assign Vehicle ----->Collect Payment ----> Complete Request

PASSED

PASSED

PASSED

Advance Balance Workflow _05

Advance Balance Workflow

Advance Balance Workflow

Verify when a citizen created a new request. Minimum pricing by the ULB is set at 500 Rs. The citizen enters Rs. 400. An error is shows which states “Amount entered is less than minimum amount”.

1.Login as citizen. 2.Set the minimum pricing given by the ULB 3. citizen created a new request. Minimum pricing by the ULB is set at 500 Rs. The citizen enters Rs. 400. An error is shows which states “Amount entered is less than minimum amount”.

citizen created a new request. Minimum pricing by the ULB is set at 500 Rs. The citizen enters Rs. 400. An error is shows which states “Amount entered is less than minimum amount”.

citizen created a new request. Minimum pricing by the ULB is set at 500 Rs. The citizen enters Rs. 400. An error is shows which states “Amount entered is less than minimum amount”.

PASSED

PASSED

PASSED

Advance Balance Workflow _06

Advance Balance Workflow

Advance Balance Workflow

Verify when a ULB creates a request where minimum pricing by the ULB is zero and citizen chooses to pay 0. The workflow is as follows:

1.Login as citizen. 2.Set the minimum pricing given by the ULB 3. ULB creates a request where minimum pricing by the ULB is zero and citizen chooses to pay 0. The workflow is as follows:

A ULB creates a request where minimum pricing by the ULB is zero and citizen chooses to pay 0. The workflow is as follows: Create request ----> Accept Request ------> Assign DSO -------> Assign Vehicle ------> Collect Payment ------> Complete Request The collect payment step should display 100% of the total amount as amount due

A ULB creates a request where minimum pricing by the ULB is zero and citizen chooses to pay 0. The workflow is as follows: Create request ----> Accept Request ------> Assign DSO -------> Assign Vehicle ------> Collect Payment ------> Complete Request The collect payment step should display 100% of the total amount as amount due

PASSED

PASSED

PASSED

Advance Balance Workflow _07

Advance Balance Workflow

Advance Balance Workflow

Verify when a ULB creates a new request. The minimum pricing by the ULB is 100%. The citizen chooses 1 trip and The input box for entering Advance Amount is non editable and displays value equal to 100% of the trip amount. When the no. of trips is edited by the ULB to 2, advance amount is updated automatically for 100% of the amount for 2 trips

1.Login as citizen. 2.Set the minimum pricing given by the ULB 3. ULB creates a new request. The minimum pricing by the ULB is 100%.

A ULB creates a new request. The minimum pricing by the ULB is 100%. The citizen chooses 1 trip and The input box for entering Advance Amount is non editable and displays value equal to 100% of the trip amount. When the no. of trips is edited by the ULB to 2, advance amount is updated automatically for 100% of the amount for 2 trips.

A ULB creates a new request. The minimum pricing by the ULB is 100%. The citizen chooses 1 trip and The input box for entering Advance Amount is non editable and displays value equal to 100% of the trip amount. When the no. of trips is edited by the ULB to 2, advance amount is updated automatically for 100% of the amount for 2 trips.

PASSED

PASSED

PASSED

Advance Balance Workflow _08

Advance Balance Workflow

Advance Balance Workflow

Verify when ULB creates a new request with 1 trip and trip amount as 1000 where minimum pricing by the ULB is set at 500 Rs. The citizen chooses to pay 600 Rs

1.Login as citizen. 2.Set the minimum pricing given by the ULB 3. ULB creates a new request with 1 trip and trip amount as 1000 where minimum pricing by the ULB is set at 500 Rs. The citizen chooses to pay 600 Rs

ULB creates a new request with 1 trip and trip amount as 1000 where minimum pricing by the ULB is set at 500 Rs. The citizen chooses to pay 600 Rs verify acknowledgement, collection screen, payment receipt, Post servicing, collection screen, ayment receipt

ULB creates a new request with 1 trip and trip amount as 1000 where minimum pricing by the ULB is set at 500 Rs. The citizen chooses to pay 600 Rs verify acknowledgement, collection screen, payment receipt, Post servicing, collection screen, ayment receipt

PASSED

PASSED

PASSED

Advance Balance Workflow _09

Advance Balance Workflow

Advance Balance Workflow

Verify when ULB creates a new request with 1 trip and trip amount as 1000 where minimum pricing by the ULB is set at 500 Rs. The citizen chooses to pay 600 Rs

1.Login as citizen. 2.Set the minimum pricing given by the ULB 3. ULB creates a new request with 1 trip and trip amount as 1000 where minimum pricing by the ULB is set at 500 Rs. The citizen chooses to pay 600 Rs

ULB creates a new request with 1 trip and trip amount as 1000 where minimum pricing by the ULB is set at 500 Rs. The citizen chooses to pay 600 Rs verify acknowledgement, collection screen, payment receipt, Post servicing, collection screen, ayment receipt

ULB creates a new request with 1 trip and trip amount as 1000 where minimum pricing by the ULB is set at 500 Rs. The citizen chooses to pay 600 Rs verify acknowledgement, collection screen, payment receipt, Post servicing, collection screen, ayment receipt

PASSED

PASSED

PASSED

Advance Balance Workflow _10

Advance Balance Workflow

Advance Balance Workflow

Verify when ULB created a new request. Minimum pricing by the ULB is set at 500 Rs. The citizen enters Rs. 400. An error is shows which states “Amount entered is less than minimum amount

1.Login as citizen. 2.Set the minimum pricing given by the ULB 3.ULB created a new request. Minimum pricing by the ULB is set at 500 Rs. The citizen enters Rs. 400. An error is shows which states “Amount entered is less than minimum amount

ULB created a new request. Minimum pricing by the ULB is set at 500 Rs. The citizen enters Rs. 400. An error is shows which states “Amount entered is less than minimum amount

ULB created a new request. Minimum pricing by the ULB is set at 500 Rs. The citizen enters Rs. 400. An error is shows which states “Amount entered is less than minimum amount

PASSED

PASSED

PASSED

Requests unable to be completed when requests are being created using driver/DSO/employee number

Driver/DSO/employee - Request creation_01

Driver/DSO/employee - Request creation

Driver/DSO/employee - Request creation

Verify Requests unable to be completed when requests are being created using driver/DSO/employee number

1. Login as DSO 2. Use same phone number as citizen and employee

Check whether Requests unable to be completed when requests are being created using driver/DSO/employee number

Requests unable to be completed when requests are being created using driver/DSO/employee number

PASSED

PASSED

PASSED

Test Cases

https://digit-discuss.atlassian.net/browse/SAN-1017 https://digit-discuss.atlassian.net/browse/SAN-1159

Employee_01

Employee

Employee Search details

Verify if UB employee is able to Search without filling details and only selecting date range should display results

1. Login to ULB employee editor and go to inbox 2. Click on search application 3. Give the date range from and to

Should be able to see all applications created in the date range and no other field should be mandatory

Should be able to see all applications created in the date range and no other field should be mandatory

PASSED

PASSED

PASSED

https://digit-discuss.atlassian.net/browse/SAN-996 https://digit-discuss.atlassian.net/browse/SAN-1163

Editor_01

Editor

Editor Application timeline

Verify Application timeline correct Provider Info- Editor side

1. Login as citizen/creator 2. Create an applciation and fill all details and go until last step using Editor login 3. Validate the application timeline info

Appication time line should show below information Request Completed Pending Citizen Feedback - citizen info Disposed - FSTPO info Disposal in progress - Driver Info Pending for Payment - Accountant Info DSO in Progress - DSO info Pending for DSO Approval - NA Pending for DSO Assignment - NA Application created - Citizen contact info

Appication time line should show below information Request Completed Pending Citizen Feedback - citizen info Disposed - FSTPO info Disposal in progress - Driver Info Pending for Payment - Accountant Info DSO in Progress - DSO info Pending for DSO Approval - NA Pending for DSO Assignment - NA Application created - Citizen contact info

PASSED

PASSED

PASSED

https://digit-discuss.atlassian.net/browse/SAN-978 https://digit-discuss.atlassian.net/browse/SAN-1168

UI_UX_01

UI/UX

UI/UX

Verify UI UX enhancements in citizen and employee login

1. login as citizen/Employee 2. Validate below UI UX enhancements In Employee Login, FSM Icon in Card is missing on left top card In Update Application success screen, Localisation of Select DSO Now, Select DSO need to be changed In Update and Schedule screen from employee side, When Septic tank with soak pit is selected, needs to remove spacing in pit dimension In Collector Login, when collecting payment need to remove spacing in payment mode in radio button

Below UI UX enhancements are validated In Employee Login, FSM Icon in Card is missing on left top card In Update Application success screen, Localisation of Select DSO Now, Select DSO need to be changed In Update and Schedule screen from employee side, When Septic tank with soak pit is selected, needs to remove spacing in pit dimension In Collector Login, when collecting payment need to remove spacing in payment mode in radio button

Below UI UX enhancements are validated In Employee Login, FSM Icon in Card is missing on left top card In Update Application success screen, Localisation of Select DSO Now, Select DSO need to be changed In Update and Schedule screen from employee side, When Septic tank with soak pit is selected, needs to remove spacing in pit dimension In Collector Login, when collecting payment need to remove spacing in payment mode in radio button

PASSED

PASSED

PASSED

DSO_01

DSO

DSO - Assign vehicle

Verify DSO is able to assign same vehicle for multiple requests - ENGLISH

1) Login as DSO. 2) Click on inbox. 3) Click on application number. 4) Click on take action and Assign the vehicle. 5) Select another application. 6) Click on take action and Assign same vehicle.

DSO Should be able to assign same vehicle to multiple requests.

DSO Should be able to assign same vehicle to multiple requests.

PASSED

PASSED

PASSED

DSO_02

DSO

DSO - Assign vehicle

Verify DSO is able to assign same vehicle for multiple requests - HINDI

1) Login as DSO. 2) Click on inbox. 3) Click on application number. 4) Click on take action and Assign the vehicle. 5) Select another application. 6) Click on take action and Assign same vehicle.

DSO Should be able to assign same vehicle to multiple requests.

DSO Should be able to assign same vehicle to multiple requests.

PASSED

PASSED

PASSED

DSO_03

DSO

DSO - Assign vehicle

Verify Vehicle capacity field and Number of trips is disable while assigning vehicle - ENGLISH

1) Login as DSO. 2) Click on inbox. 3) Click on application number and Assign the vehicle. 4) Check vehicle capacity and number of trips fields.

Vehicle capacity and number of trips should be deisable.

Vehicle capacity and number of trips should be deisable.

PASSED

PASSED

PASSED

DSO_04

DSO

DSO - Assign vehicle

Verify Vehicle capacity field and Number of trips is disable while assigning vehicle - HINDI

1) Login as DSO. 2) Click on inbox. 3) Click on application number and Assign the vehicle. 4) Check vehicle capacity and number of trips fields.

Vehicle capacity and number of trips should be deisable.

Vehicle capacity and number of trips should be deisable.

PASSED

PASSED

PASSED

DSO_05

DSO

DSO - Assign vehicle

Verify DSO assigned vehicle is captured on new application - ENGLISH

1) Login as DSO. 2) Click on inbox. 3) Click on application number and Assign vehicle. 4) Check application.

DSO assigned vehicle number should be captured on new application.

DSO assigned vehicle number should be captured on new application.

PASSED

PASSED

PASSED

DSO_06

DSO

DSO - Assign vehicle

Verify DSO assigned vehicle is captured on new application - HINDI

1) Login as DSO. 2) Click on inbox. 3) Click on application number and Assign vehicle. 4) Check application.

DSO assigned vehicle number should be captured on new application.

DSO assigned vehicle number should be captured on new application.

PASSED

PASSED

PASSED

DSO_07

DSO

DSO - Assign vehicle

Verify DSO is able to overwrite number of trips while scheduling vehicle - ENGLISH

1) Login as DSO. 2) Click on inbox. 3) Click on application number and assign vehicle. 4) Click on take action and overwrite number of trips.

DSO should be able to overwrite number of trips.

DSO should be able to overwrite number of trips.

PASSED

PASSED

PASSED

DSO_08

DSO

DSO - Assign vehicle

Verify DSO is able to overwrite number of trips while scheduling vehicle - HINDI

1) Login as DSO. 2) Click on inbox. 3) Click on application number and assign vehicle. 4) Click on take action and overwrite number of trips.

DSO should be able to overwrite number of trips.

DSO should be able to overwrite number of trips.

PASSED

PASSED

PASSED

DSO_09

DSO

DSO - Assign vehicle

Verify DSO is able to select valid date in Desludging on field - ENGLISH

1) Login as DSO. 2) Click on inbox. 3) Click on application number and assign vehicle. 4) Click on take action and Select valid date.

DSO Should be able to select valid date.

DSO Should be able to select valid date.

PASSED

PASSED

PASSED

DSO_10

DSO

DSO - Assign vehicle

Verify DSO is able to select valid date in Desludging on field - HINDI

1) Login as DSO. 2) Click on inbox. 3) Click on application number and assign vehicle. 4) Click on take action and Select valid date.

DSO Should be able to select valid date.

DSO Should be able to select valid date.

PASSED

PASSED

PASSED

DSO_11

DSO

DSO - Assign vehicle

Verify DSO is able to schedule vehicle - ENGLISH

1) Login as DSO. 2) Click on inbox. 3) Click on application number and assign vehicle. 4) Click on take action and Click on schedule.

DSO should be able to schedule vehicle.

DSO should be able to schedule vehicle.

PASSED

PASSED

PASSED

DSO_12

DSO

DSO - Assign vehicle

Verify DSO is able to schedule vehicle - HINDI

1) Login as DSO. 2) Click on inbox. 3) Click on application number and assign vehicle. 4) Click on take action and Click on schedule.

DSO should be able to schedule vehicle.

DSO should be able to schedule vehicle.

PASSED

PASSED

PASSED

https://digit-discuss.atlassian.net/browse/SAN-1063 https://digit-discuss.atlassian.net/browse/SAN-1157

FSTPO_01

FSTPO

FSTPO Inbox

To verify FSTPO can able to select Home button

1.Login as FSTPO in mobile 2.click on Home button

FSTPO should be able to see home page details

FSTPO should be able to see home page details

PASSED

PASSED

PASSED

FSTPO_02

FSTPO

FSTPO Inbox

To verify FSTPO can able to select Inbox button in FSTPO operations page

1.Login as FSTPO in Desktop 2.click on Home button 3.Click on Inbox button

FSTPO Should be able to view Inbox page

FSTPO Should be able to view Inbox page

PASSED

PASSED

PASSED

FSTPO_03

FSTPO

FSTPO Inbox

To verify FSTPO Can able to enter all fields and FSTPO Should able to select Application number or Vehicle log number

1.Login as FSTPO in Desktop 2.click on Home button 3.Click on Inbox button a 4.Enter all the fields or 5.Click on Application number or Vehicle log number

FSTPO Should be able to view vehicle scheduling page

FSTPO Should be able to view vehicle scheduling page

PASSED

PASSED

PASSED

FSTPO_04

FSTPO

FSTPO Inbox

To verify FSTPO Can able to select Search Button

1.Login as FSTPO in Mobile 2.click on Home button 3.Click on Add new button 4.Enter vehicle number 5.click on next 6.Click on Select 7.Enter application number or vehicle number or Dso name

FSTPO Should be able to view application details after filtered

FSTPO Should be able to view application details after filtered

PASSED

PASSED

PASSED

FSTPO_05

FSTPO

FSTPO Inbox

To verify FSTPO Can able to select Sort Button

1.Login as FSTPO in Mobile 2.click on Home button 3.Click on Add new button 4.Enter vehicle number 5.click on next 6.Click on Select 7.Click on Date(latest first) or click on Date(latest last)

FSTPO Should be able to view application details after filtered

FSTPO Should be able to view application details after filtered

PASSED

PASSED

PASSED

FSTPO_06

FSTPO

FSTPO Inbox

To verify FSTPO can able to enter all fields and Vehicle in time and vehicle out time in vehicle entry log page and FSTPO can able to choose file from device and able to upload that file

1.Login as FSTPO in Desktop 2.click on Home button 3.Click on Add new button 4.Enter vehicle number 5.click on next 6.click on citizen name 7.click on Select 8.Fill the details in all the fields 9.Click on choose file and select a photo and upload it

FSTPO Should able to enter all the fields and FSTPO should able to view photo uploaded details

FSTPO Should able to enter all the fields and FSTPO should able to view photo uploaded details

PASSED

PASSED

PASSED

FSTPO_07

FSTPO

FSTPO Inbox

To verify FSTPO can able to select Take action button in vehicle scheduling page

1.Login as FSTPO in Desktop 2.click on Home button 3.Click on Add new button 4.Enter vehicle number 5.click on next 6.click on citizen name 7.Fill the details in all the fields 8.Click on choose file and select a photo and upload it 9.click on Take action button

FSTPO Should be able to view Submit button or Decline vehicle button

FSTPO Should be able to view Submit button or Decline vehicle button

PASSED

PASSED

PASSED

FSTPO_08

FSTPO

FSTPO Inbox

To verify FSTPO can able to select Submit button in vehicle scheduling page

1.Login as FSTPO in Desktop 2.click on Home button 3.Click on Add new button 4.Enter vehicle number 5.click on next 6.click on citizen name. 9.Fill the details in all the fields 10.Click on choose file and select a photo and upload it 11.click on Take action button 12.Click on submit

FSTPO Should be able to view vehicle submitted sucessfully message on the screen

FSTPO Should be able to view vehicle submitted sucessfully message on the screen

PASSED

PASSED

PASSED

FSTPO_09

FSTPO

FSTPO Inbox

To verify FSTPO can able to select Decline vehicle button in vehicle scheduling page

.1.Login as FSTPO in Desktop 2.click on Home button 3.Click on Add new button 4.Enter vehicle number 5.click on next 6.click on citizen name 7.Fill the details in all the fields 8.Click on choose file and select a photo and upload it 9.click on Take action button 10.Click on submit 11.click on Decline vehicle

FSTPO Should be able to view reason for Declining

FSTPO Should be able to view reason for Declining

PASSED

PASSED

PASSED

FSTPO_10

FSTPO

FSTPO Inbox

To verify FSTPO can able to select Reason For Declining Dropdown

1.Login as FSTPO in Desktop 2.click on Home button 3.Click on Add new button 4.Enter vehicle number 5.click on next 6.click on citizen name 7.Fill the details in all the fields 8.Click on choose file and select a photo and upload it 9.click on Take action button 10.click on Decline vehicle 11.Select anyone of the reason from Reason For declining dropdown

FSTPO Should be able to select any one reason

FSTPO Should be able to select any one reason

PASSED

PASSED

PASSED

FSTPO_11

FSTPO

FSTPO Inbox

To verify FSTPO can able to select Decline vehicle button

1.Login as FSTPO in Desktop 2.click on Home button 3.Click on Add new button 4.Enter vehicle number 5.click on next 6.click on citizen name 7.Fill the details in all the fields 8.Click on choose file and select a photo and upload it 9.click on Take action button 10.click on Decline vehicle 11.Select anyone of the reason from Reason For declining dropdown 12.Click on Decline vehicle button

FSTPO Should be able to view updated sucessfully message on the screen

FSTPO Should be able to view updated sucessfully message on the screen

PASSED

PASSED

PASSED

https://digit-discuss.atlassian.net/browse/SAN-1064 https://digit-discuss.atlassian.net/browse/SAN-1158

FSTPO_01

FSTPO

FSTPO Home

To verify FSTPO can able to select Home button

1.Login as FSTPO in mobile 2.click on Home button

FSTPO should be able to see home page details

FSTPO should be able to see home page details

PASSED

PASSED

PASSED

FSTPO_02

FSTPO

FSTPO Home

To verify FSTPO can able to select Inbox button in FSTPO operations page

1.Login as FSTPO in Desktop 2.click on Home button 3.Click on Inbox button

FSTPO Should be able to view Inbox page

FSTPO Should be able to view Inbox page

PASSED

PASSED

PASSED

FSTPO_03

FSTPO

FSTPO Home

To verify FSTPO Can able to enter all fields and FSTPO Should able to select Application number or Vehicle log number

1.Login as FSTPO in Desktop 2.click on Home button 3.Click on Inbox button a 4.Enter all the fields or 5.Click on Application number or Vehicle log number

FSTPO Should be able to view vehicle scheduling page

FSTPO Should be able to view vehicle scheduling page

PASSED

PASSED

PASSED

FSTPO_04

FSTPO

FSTPO Home

To verify FSTPO can able to enter all fields and Vehicle in time and vehicle out time in vehicle entry log page and FSTPO can able to choose file from device and able to upload that file

1.Login as FSTPO in Desktop 2.click on Home button 3.Click on Add new button 4.Enter vehicle number 5.click on next 6.click on citizen name 7.click on Select 8.Fill the details in all the fields 9.Click on choose file and select a photo and upload it

FSTPO Should able to enter all the fields and FSTPO should able to view photo uploaded details

FSTPO Should able to enter all the fields and FSTPO should able to view photo uploaded details

PASSED

PASSED

PASSED

FSTPO_05

FSTPO

FSTPO Home

To verify FSTPO can able to select Take action button in vehicle scheduling page

1.Login as FSTPO in Desktop 2.click on Home button 3.Click on Add new button 4.Enter vehicle number 5.click on next 6.click on citizen name 7.Fill the details in all the fields 8.Click on choose file and select a photo and upload it 9.click on Take action button

FSTPO Should be able to view Submit button or Decline vehicle button

FSTPO Should be able to view Submit button or Decline vehicle button

PASSED

PASSED

PASSED

FSTPO_06

FSTPO

FSTPO Home

To verify FSTPO can able to select Submit button in vehicle scheduling page

1.Login as FSTPO in Desktop 2.click on Home button 3.Click on Add new button 4.Enter vehicle number 5.click on next 6.click on citizen name. 9.Fill the details in all the fields 10.Click on choose file and select a photo and upload it 11.click on Take action button 12.Click on submit

FSTPO Should be able to view vehicle submitted sucessfully message on the screen

FSTPO Should be able to view vehicle submitted sucessfully message on the screen

PASSED

PASSED

PASSED

FSTPO_07

FSTPO

FSTPO Home

To verify FSTPO can able to select Decline vehicle button in vehicle scheduling page

.1.Login as FSTPO in Desktop 2.click on Home button 3.Click on Add new button 4.Enter vehicle number 5.click on next 6.click on citizen name 7.Fill the details in all the fields 8.Click on choose file and select a photo and upload it 9.click on Take action button 10.Click on submit 11.click on Decline vehicle

FSTPO Should be able to view reason for Declining

FSTPO Should be able to view reason for Declining

PASSED

PASSED

PASSED

FSTPO_08

FSTPO

FSTPO Home

To verify FSTPO can able to select Reason For Declining Dropdown

1.Login as FSTPO in Desktop 2.click on Home button 3.Click on Add new button 4.Enter vehicle number 5.click on next 6.click on citizen name 7.Fill the details in all the fields 8.Click on choose file and select a photo and upload it 9.click on Take action button 10.click on Decline vehicle 11.Select anyone of the reason from Reason For declining dropdown

FSTPO Should be able to select any one reason

FSTPO Should be able to select any one reason

PASSED

PASSED

PASSED

FSTPO_09

FSTPO

FSTPO Home

To verify FSTPO can able to select Decline vehicle button

1.Login as FSTPO in Desktop 2.click on Home button 3.Click on Add new button 4.Enter vehicle number 5.click on next 6.click on citizen name 7.Fill the details in all the fields 8.Click on choose file and select a photo and upload it 9.click on Take action button 10.click on Decline vehicle 11.Select anyone of the reason from Reason For declining dropdown 12.Click on Decline vehicle button

FSTPO Should be able to view updated sucessfully message on the screen

FSTPO Should be able to view updated sucessfully message on the screen

PASSED

PASSED

PASSED

https://digit-discuss.atlassian.net/browse/SAN-987 https://digit-discuss.atlassian.net/browse/SAN-1165

Editor_01

Editor

DSO Photo upload

Verify if Editor should be able to view the photo uploaded by DSO

1. Login to citizen/creator 2. Go through all the steps and create application 3. Go until DSO login 4. Login as DSO ,upload the photo

Photo should be uploaded

Photo should be uploaded

PASSED

PASSED

PASSED

Editor_02

Editor

DSO Photo upload

Verify if Editor should be able to view the photo uploaded by DSO

1. Login to citizen/creator 2. Go through all the steps and create application 3. Go until DSO login 4. Login as DSO ,upload the photo 5.Login as editor and check photos uploaded by DSO is viewable

Editor should able to view photo in his timeline

Editor should able to view photo in his timeline

PASSED

PASSED

PASSED

https://digit-discuss.atlassian.net/browse/SAN-1037 https://digit-discuss.atlassian.net/browse/SAN-1162

DSO and FSTPO

Photo uploads

To check all the application timeline aligned with roles

1.Go through until Application updated/payment/trips screen

Application timeline should be aligned with roles

Application timeline should be aligned with roles

PASSED

PASSED

PASSED

Editor_01

DSO and FSTPO

Photo uploads

To check photos uploaded by DSO

1.Login as editor check who has uploaded the DSO

Editor should be viewable as photo uploaded by DSO

Editor should be viewable as photo uploaded by DSO

PASSED

PASSED

PASSED

Editor_02

DSO and FSTPO

Photo uploads

To check the breadcrumbs in all the FSTPO pages

1.Login as FSTPO Check all the breadcrumbs

Breadcrumbs should be in the format Home/Inbox/vehicle log

Breadcrumbs should be in the format Home/Inbox/vehicle log

PASSED

PASSED

PASSED

Editor_03

DSO and FSTPO

Photo uploads

To check the the Disposing time Schedule in the Format AM/PM

1.Login as FSTPO Check whether Disposal time schedule is in the format AM/PM

FSTPO Should be able to select AM/PM in Disposal scheduling page

FSTPO Should be able to select AM/PM in Disposal scheduling page

PASSED

PASSED

PASSED

https://digit-discuss.atlassian.net/browse/SAN-1075 https://digit-discuss.atlassian.net/browse/SAN-1160

UI_UX_01

Ui/UX

UI/UX changes

Verify UI UX enhancements in citizen and employee login

1. login as citizen/Employee 2. Validate below UI UX enhancements 3.Log in as citizen,In service request text change in trip number screen in create application 4.Login as citizen ,In trip number screen in citizen side, number of trips will be on top and vehicle capacity will be on bottom. 5.Login as DSo Localisation should be changed from Scheduled to Update Trips 6.Login as Citizen all the Location detail and pit detail and combining all under property details

In UI UX AUDIT 1.In service request text change in trip number screen in create application should be creadted. 2.Citizen should be viewable In trip number screen in citizen side, number of trips will be on top and vehicle capacity will be on bottom. 3.Schedule localisation shoule be changed to Update trips 4.All the location details and pit details should be under property details

In UI UX AUDIT 1.In service request text change in trip number screen in create application should be creadted. 2.Citizen should be viewable In trip number screen in citizen side, number of trips will be on top and vehicle capacity will be on bottom. 3.Schedule localisation shoule be changed to Update trips 4.All the location details and pit details should be under property details

PASSED

PASSED

PASSED

9

Employee _01

Employee

Dashboard charts

1.Dashboard Should have pie chart for gender,revenue by usage type,application preference,customer rating ,request status , data and Apply all the drill-down (by Date, ULB) on payment chart 2.Dashboard should be on mobile and desktop versions 3.The Dashboard chart should be shareable and downloadable

Login using Dashboard credentials

Dashboard should display pie chart for gender,revenue by usage type,application preference,customer rating ,request status , data and Apply all the drill-down and dashboard should be viewable in both mobile and desktop versions and it should be in shareable and downable format

Dashboard should display pie chart for gender,revenue by usage type,application preference,customer rating ,request status , data and Apply all the drill-down and dashboard should be viewable in both mobile and desktop versions and it should be in shareable and downable format

PASSED

PASSED

PASSED

Citizen Flow

FSM/Citizen/01

Citizen

Citizen feedback

Validate that Citizen is able to verify new field "Number of Trips" on citizen feedback page_With English and Hindi Language

1. Login as Citizen 2. Go to My application 3.Citizen should be able to see the completed application 4.Validate that Citizen is able to verify new field "Number of Trips" on citizen feedback page in EN & Hindi

1)Citizen is able to verify new field "Number of Trips" on citizen feedback page In EN 2)Citizen is able to verify new field "कुल फेरों की संख्या" on citizen feedback page_Hindi

1)Citizen is able to verify new field "Number of Trips" on citizen feedback page In EN 2)Citizen is able to verify new field "कुल फेरों की संख्या" on citizen feedback page_Hindi

PASSED

PASSED

PASSED

FSM/Citizen/02

Citizen

Citizen feedback

Validate Citizen is able to Add integer from dropdown field on citizen feedback page_Hindi/English

1. Login as Citizen 2. Go to My application 3.Citizen should be able to see the completed application 4.Validate that Citizen is able to Add integer from dropdown field on citizen feedback page 5.Validate that Citizen is able to submit the feed back with giving the proper rating and comments

Citizen will be able to Add integer from 1-10 from drop down and will be able to submit the feedback

Citizen will be able to Add integer from 1-10 from drop down and will be able to submit the feedback

PASSED

PASSED

PASSED

FSM/Citizen/03

Citizen

Citizen feedback

Validate that Total number of trips field should not be mandatory for feedback submission _Hindi/English

1. Login as Citizen 2. Go to My application 3.Citizen should be able to see the completed application 4.Validate that Citizen is able to submit the feed back without Total num of Field trips

Citizen will be able to submit the feed back without Total num of Field trips

Citizen will be able to submit the feed back without Total num of Field trips

PASSED

PASSED

PASSED

Citizen Flow

FSM/Citizen/05

Citizen

Citizen feedback number of trips

Validate that citizen gender info is Captured on New application right after OTP step with citizen login_English_Male

1.Login as a Citizen in mSeva Portal 2.Navigate to FSM 3.Citizen Create New Application 4.Validate that citizen gender info is Captured on New application as Male right after OTP step 5.Validate Citizen is able to Complete the Request further with required details 6.Validate Citizen shouldn’t see gender information on the application summary view

1. citizen gender info is Captured on New application as Male right after OTP step 2. Citizen shouldn’t see gender information on the application summary view

1. citizen gender info is Captured on New application as Male right after OTP step 2. Citizen shouldn’t see gender information on the application summary view

PASSED

PASSED

PASSED

FSM/Citizen/06

Citizen

Citizen feedback number of trips

Validate that citizen gender info is Captured on New application right after OTP step with citizen login_Hindi_Female

1.Login as a Citizen in mSeva Portal 2.Navigate to FSM 3.Citizen Create New Application 4.Validate that citizen gender info is Captured on New application as Female right after OTP step 5.Validate Citizen is able to Complete the Request further with required details 6.Validate Citizen shouldn’t see gender information on the application summary view

1. citizen gender info is Captured on New application as Female right after OTP step 2. Citizen shouldn’t see gender information on the application summary view

1. citizen gender info is Captured on New application as Female right after OTP step 2. Citizen shouldn’t see gender information on the application summary view

PASSED

PASSED

PASSED

FSM/Citizen/07

Citizen

Citizen feedback number of trips

Validate that citizen gender info is Captured on New application right after OTP step with Employee Creator login_English_Transgender

1.Login as a Employee Creator in mSeva Portal 2.Navigate to FSM 3.Citizen Create New Application 4.Validate that citizen gender info is Captured on New application as Transgender right after OTP step 5.Validate Citizen is able to Complete the Request further with required details 6.Validate Citizen shouldn’t see gender information on the application summary view

1. citizen gender info is Captured on New application as Transgender right after OTP step 2. Citizen shouldn’t see gender information on the application summary view

1. citizen gender info is Captured on New application as Transgender right after OTP step 2. Citizen shouldn’t see gender information on the application summary view

PASSED

PASSED

PASSED

FSM/Citizen/08

Citizen

Citizen feedback number of trips

Validate that citizen gender info is Captured on New application right after OTP step with Employee Creator login_Hindi_Others

1.Login as a Employee Creator in mSeva Portal 2.Navigate to FSM 3.Citizen Create New Application 4.Validate that citizen gender info is Captured on New application as Others right after OTP step 5.Validate Citizen is able to Complete the Request further with required details 6.Validate Citizen shouldn’t see gender information on the application summary view

1. citizen gender info is Captured on New application as Others right after OTP step 2. Citizen shouldn’t see gender information on the application summary view

1. citizen gender info is Captured on New application as Others right after OTP step 2. Citizen shouldn’t see gender information on the application summary view

PASSED

PASSED

PASSED

FSM/Citizen/09

Citizen

Citizen feedback number of trips

Validate that Citizen gender step is skippable with Citizen Login_Hindi

1.Login as a Citizen in mSeva Portal 2.Navigate to FSM 3.Citizen Create New Application 4.Validate that Citizen gender step is skippable

It is Validated that Citizen gender step is skippable in Citizen Logins

It is Validated that Citizen gender step is skippable in Citizen Logins

PASSED

PASSED

PASSED

FSM/Citizen/10

Citizen

Citizen feedback number of trips

Validate that Citizen gender step is skippable with Employee creator Login_English

1.Login as a Employee Creator in mSeva Portal 2.Navigate to FSM 3.Citizen Create New Application 4.Validate that Citizen gender step is skippable

It is Validated that Citizen gender step is skippable in Employee creator Logins

It is Validated that Citizen gender step is skippable in Employee creator Logins

PASSED

PASSED

PASSED

FSM/Citizen/11

Citizen

Citizen feedback number of trips

Validate that Employee editor is able to view the gender of the applicant on the application summary view_Hindi

1.Login as a Employee editor in mSeva Portal 2.Navigate to FSM 3.Search for application and Click on Take action 4.Validate that Employee is able to view the gender of the applicant on the application summary view

Employee is able to view the gender of the applicant on the application summary view

Employee is able to view the gender of the applicant on the application summary view

PASSED

PASSED

PASSED

FSM/Citizen/12

Citizen

Citizen feedback number of trips

Validate that DSO is not able to view the gender of the applicant on the application summary view_English

1.Login as a DSO in mSeva Portal 2.Navigate to FSM 3.Search for application and Click on Take action 4.Validate that DSO is not able to view the gender of the applicant on the application summary view

DSO is not able to view the gender of the applicant on the application summary view

DSO is not able to view the gender of the applicant on the application summary view

PASSED

PASSED

PASSED

DSO Flow

FSM/DSO/01

DSO

DSO validation message

Validate message when unregistered phone number is entered in DSO login_English

1.Login to the mSeva Portal 2.Navigate to FSM 3.User click on DSO Login 4."Validate message when unregistered phone number is entered in DSO login: Please use a registered number for logging as a DSO"

validate message when unregistered phone number is entered in DSO login: Please use a registered number for logging as a DSO

validate message when unregistered phone number is entered in DSO login: Please use a registered number for logging as a DSO

PASSED

PASSED

PASSED

FSM/DSO/02

DSO

DSO validation message

Validate message when unregistered phone number is entered in DSO login_Hindi

1.Login to the mSeva Portal 2.Navigate to FSM 3.User click on DSO Login 4. Validate message when unregistered phone number is entered in DSO login: कृपया डीएसओ के रूप में लॉगिंग के लिए पंजीकृत नंबर का उपयोग करें

Validate message when unregistered phone number is entered in DSO login: कृपया डीएसओ के रूप में लॉगिंग के लिए पंजीकृत नंबर का उपयोग करें

Validate message when unregistered phone number is entered in DSO login: कृपया डीएसओ के रूप में लॉगिंग के लिए पंजीकृत नंबर का उपयोग करें

PASSED

PASSED

PASSED

FSM/DSO/03

DSO

DSO validation message

Validate when DSO login with registered phone number is able to see the application_English

1.Login to the mSeva Portal 2.Navigate to FSM 3.User click on DSO Login 4. Validate when DSO login with registered phone number is able to see the application

Validate when DSO login with registered phone number is able to see the application

Validate when DSO login with registered phone number is able to see the application

PASSED

PASSED

PASSED

FSM/DSO/04

DSO

DSO validation message

Validate when DSO login with registered phone number is able to see the application_Hindi

1.Login to the mSeva Portal 2.Navigate to FSM 3.User click on DSO Login 4.Validate when DSO login with registered phone number is able to see the application

Validate when DSO login with registered phone number is able to see the application

Validate when DSO login with registered phone number is able to see the application

PASSED

PASSED

PASSED

DSO Flow

FSM/DSO/01

DSO

DSO - edit pit and property usage details

Validate that DSO can edit the Pit Details for a application_English

1.Login as a DSO in mSeva Portal 2.Navigate to FSM 3.Search for application and Click on Take action 4.Validate that DSO can edit the Pit Type and Pit Dimension and Upload a PIT photo for a application 5.Validate DSO is able to Submit the Request further with required details

1.DSO will be able to edit the Pit Type and Pit Dimension and Upload a PIT photo for a application

1.DSO will be able to edit the Pit Type and Pit Dimension and Upload a PIT photo for a application

PASSED

PASSED

PASSED

FSM/DSO/02

DSO

DSO - edit pit and property usage details

Validate that DSO can edit the Pit Details for a application_Hindi

1.Login as a DSO in mSeva Portal 2.Navigate to FSM 3.Search for application and Click on Take action 4.Validate that DSO can edit the Pit Type and Pit Dimension and Upload a PIT photo for a application 5.Validate DSO is able to Submit the Request further with required details

1.DSO will be able to edit the Pit Type and Pit Dimension and Upload a PIT photo for a application

1.DSO will be able to edit the Pit Type and Pit Dimension and Upload a PIT photo for a application

PASSED

PASSED

PASSED

FSM/DSO/03

DSO

DSO - edit pit and property usage details

Validate that DSO cannot modify the applicant and the property address for a application_Hindi

1.Login as a DSO in mSeva Portal 2.Navigate to FSM 3.Search for application and Click on Take action 4.Validate that DSO cannot modify the applicant and the property address for a application

1.DSO will not be able to edit the applicant and the property address for a application

1.DSO will not be able to edit the applicant and the property address for a application

PASSED

PASSED

PASSED

FSM/DSO/04

DSO

DSO - edit pit and property usage details

Validate that DSO cannot modify the possible service date_English

1.Login as a DSO in mSeva Portal 2.Navigate to FSM 3.Search for application and Click on Take action 4.Validate that DSO cannot modify the possible service date for a application

1.DSO will not be able to modify the possible service date for a application

1.DSO will not be able to modify the possible service date for a application

PASSED

PASSED

PASSED

FSM/DSO/05

DSO

DSO - edit pit and property usage details

Validate that DSO shouldn’t be able to modify old applications (i.e. service date < current date) or applications in citizen feedback pending status_Hindi/English

1.Login as a DSO in mSeva Portal 2.Navigate to FSM 3.Search for application and Click on Take action 4.Validate that DSO shouldn’t be able to modify old applications (i.e. service date < current date) or applications in citizen feedback pending status

1.DSO will not be able to modify old applications (i.e. service date < current date) or applications in citizen feedback pending status

1.DSO will not be able to modify old applications (i.e. service date < current date) or applications in citizen feedback pending status

PASSED

PASSED

PASSED

Employee Specific Test Cases

Employee Flow

FSM/Emp/01

Employee

Employee - Select vehicle capacity instead of vehicle make

Validate ULB Employee select vehicle capacity instead of Vechile Type_English_Employee Editor

1.Login as a Employee Editor in mSeva Portal 2.Navigate to FSM 3.Search for application and Click on Take action 4.Validate ULB Employee select vehicle capacity from the drop down 5.Validate Vechile Type is not present in the form 6.Validate Employee is able to Submit the Request further

1) ULB Employee should be able to select vehicle capacity from the drop down 2)ULB Employee doesn’t see the Vechile Type in the entire form 3)ULB Employee is able to Submit the Request further

1) ULB Employee should be able to select vehicle capacity from the drop down 2)ULB Employee doesn’t see the Vechile Type in the entire form 3)ULB Employee is able to Submit the Request further

PASSED

PASSED

PASSED

FSM/Emp/02

Employee

Employee - Select vehicle capacity instead of vehicle make

Validate ULB Employee select vehicle capacity instead of Vechile Type_Hindi_Employee Editor

1.Login as a Employee Editor in mSeva Portal 2.Navigate to FSM 3.Search for application and Click on Take action 4.Validate ULB Employee select vehicle capacity from the drop down 5.Validate Vechile Type is not present in the form 6.Validate Employee is able to Submit the Request further

1) ULB Employee should be able to select vehicle capacity from the drop down 2)ULB Employee doesn’t see the Vechile Type in the entire form 3)ULB Employee is able to Submit the Request further

1) ULB Employee should be able to select vehicle capacity from the drop down 2)ULB Employee doesn’t see the Vechile Type in the entire form 3)ULB Employee is able to Submit the Request further

PASSED

PASSED

PASSED

FSM/Emp/03

Employee

Employee - Select vehicle capacity instead of vehicle make

Validate ULB Employee select vehicle capacity instead of Vechile Type_English_Employee Creator

1.Login as a Employee Creator in mSeva Portal 2.Navigate to FSM 3.Validate ULB Employee select vehicle capacity from the drop down 4.Validate Vechile Type is not present in the form 5.Validate Employee is able to Submit the Request further

1) ULB Employee should be able to select vehicle capacity from the drop down 2)ULB Employee doesn’t see the Vechile Type in the entire form 3)ULB Employee is able to Submit the Request further

1) ULB Employee should be able to select vehicle capacity from the drop down 2)ULB Employee doesn’t see the Vechile Type in the entire form 3)ULB Employee is able to Submit the Request further

PASSED

PASSED

PASSED

FSM/Emp/04

Employee

Employee - Select vehicle capacity instead of vehicle make

Validate ULB Employee select vehicle capacity instead of Vechile Type_Hindi_Employee Creator

1.Login as a Employee Creator in mSeva Portal 2.Navigate to FSM 3.Validate ULB Employee select vehicle capacity from the drop down 4.Validate Vechile Type is not present in the form 5.Validate Employee is able to Submit the Request further

1) ULB Employee should be able to select vehicle capacity from the drop down 2)ULB Employee doesn’t see the Vechile Type in the entire form 3)ULB Employee is able to Submit the Request further

1) ULB Employee should be able to select vehicle capacity from the drop down 2)ULB Employee doesn’t see the Vechile Type in the entire form 3)ULB Employee is able to Submit the Request further

PASSED

PASSED

PASSED

DSO Specific Test Cases

DSO Flow

DSO_01

DSO

DSO - Edit property usage details

Check wehther "Try updating the pit details, it should allow the user to update the pit details."

1. Login as citizen and create an application 2. Login as editor and update application to make payment 3. Login as Collector and make payment 4. Login as Editor and update pit details and Asiign DSO 5. Login as DSO and Try updating the pit details, it should allow the user to update the pit details.

Try updating the pit details, it should allow the user to update the pit details.

Try updating the pit details, it should allow the user to update the pit details.

PASSED

PASSED

PASSED

DSO_02

DSO

DSO - Edit property usage details

Check whether "DSO shouldn’t be able to modify old applications (i.e. desludging date < current date) or applications in citizen feedback pending status"

1. Login as citizen and create an application 2. Login as editor and update application to make payment 3. Login as Collector and make payment 4. Login as Editor and update pit details and Asiign DSO 5. Login as DSO and TDSO shouldn’t be able to modify old applications (i.e. desludging date < current date) or applications in citizen feedback pending status

DSO shouldn’t be able to modify old applications (i.e. desludging date < current date) or applications in citizen feedback pending status

DSO shouldn’t be able to modify old applications (i.e. desludging date < current date) or applications in citizen feedback pending status

PASSED

PASSED

PASSED

DSO_03

DSO

DSO - Edit property usage details

Check whether "DSO can add pit photo"

1. Login as citizen and create an application 2. Login as editor and update application to make payment 3. Login as Collector and make payment 4. Login as Editor and update pit details and Asiign DSO 5. Login as DSO and DSO can add pit photo

DSO can add pit photo

DSO can add pit photo

PASSED

PASSED

PASSED

DSO_04

DSO

DSO - Edit property usage details

Check whether Pre-selected Property and Pit details should be shown. If no value is present, then show - and data from mdms in the drop-down

1. Login as citizen and create an application 2. Login as editor and update application to make payment 3. Login as Collector and make payment 4. Login as Editor and update pit details and Asiign DSO 5. Login as DSO and DSO can Pre-selected Property and Pit details should be shown. If no value is present, then show - and data from mdms in the drop-down

Pre-selected Property and Pit details should be shown. If no value is present, then show - and data from mdms in the drop-down

Pre-selected Property and Pit details should be shown. If no value is present, then show - and data from mdms in the drop-down

PASSED

PASSED

PASSED

DSO_05

DSO

DSO - Edit property usage details

Check whether This will need to be a role based edit. This can be edited by roles = dso, editor

1. Login as citizen and create an application 2. Login as editor and update application to make payment 3. Login as Collector and make payment 4. Login as Editor and update pit details and Asiign DSO 5. Login as DSO and This will need to be a role based edit. This can be edited by roles = dso, editor

This will need to be a role based edit. This can be edited by roles = dso, editor

This will need to be a role based edit. This can be edited by roles = dso, editor

PASSED

PASSED

PASSED

DSO_06

DSO

DSO - Edit property usage details

Check whether the application should be editable in: Pending for DSO approval, DSO InProgress status

1. Login as citizen and create an application 2. Login as editor and update application to make payment 3. Login as Collector and make payment 4. Login as Editor and update pit details and Asiign DSO 5. Login as DSO and the application should be editable in: Pending for DSO approval, DSO InProgress status

the application should be editable in: Pending for DSO approval, DSO InProgress status

the application should be editable in: Pending for DSO approval, DSO InProgress status

PASSED

PASSED

PASSED

DSO Specific Test Cases

DSO Flow

Vehicle_01

Employee

Employee - Edit property usage details

check whether Vehicle Capacity is a mandatory field

1.Login as a Employee editor in mSeva Portal 2.Navigate to FSM 3.Validate ULB Employee select vehicle capacity from the drop down

Vehicle Capacity is a mandatory field

Vehicle Capacity is a mandatory field

PASSED

PASSED

PASSED

Vehicle_02

Employee

Employee - Edit property usage details

check whether Vehicle Capacity should show unique capacity value from master data

1.Login as a Employee editor in mSeva Portal 2.Navigate to FSM 3.Validate ULB Employee select vehicle capacity from the drop down

Vehicle Capacity should show unique capacity value from master data

Vehicle Capacity should show unique capacity value from master data

PASSED

PASSED

PASSED

Vehicle_03

Employee

Employee - Edit property usage details

check whether Vehicle Capacity should show unique capacity value from master data

1.Login as a Employee editor in mSeva Portal 2.Navigate to FSM 3.Validate ULB Employee select vehicle capacity from the drop down

Vehicle Capacity should show unique capacity value from master data

Vehicle Capacity should show unique capacity value from master data

PASSED

PASSED

PASSED

Vehicle_04

Employee

Employee - Edit property usage details

Check whether Vehicle Type is not shown on any user interface

1.Login as a Employee editor in mSeva Portal 2.Navigate to FSM 3.Validate ULB Employee select vehicle capacity from the drop down

Vehicle Type is not shown on any user interface

Vehicle Type is not shown on any user interface

PASSED

PASSED

PASSED

Vehicle_05

Employee

Employee - Edit property usage details

Check whether Ensure that the logic for assignment of DSO is not changed with this ticket

1.Login as a Employee editor in mSeva Portal 2.Navigate to FSM 3.Validate ULB Employee select vehicle capacity from the drop down

Ensure that the logic for assignment of DSO is not changed with this ticket

Ensure that the logic for assignment of DSO is not changed with this ticket

PASSED

PASSED

PASSED

DSO Specific Test Cases

FSM/DSO/01

DSo and FSTPO

DSo and FSTPO gender

Check whether DSO gender addition is during DSO creation

1.User requests search DSO API 2.User can see the Gender info for that DSO in return

User should be able to Create new DSO with Gender info using Create DSO API and can Verify the gender info using search API.

User should be able to Create new DSO with Gender info using Create DSO API and can Verify the gender info using search API.

PASSED

PASSED

PASSED

FSM/DSO/02

DSo and FSTPO

DSo and FSTPO gender

Check whether search API is updated so that DSO gender can be returned

1.User requests search DSO API 2.User can see the Gender info for that DSO in return

DSO gender is returned when Search DSO request is Triggered

DSO gender is returned when Search DSO request is Triggered

PASSED

PASSED

PASSED

FSM/DSO/03

DSo and FSTPO

DSo and FSTPO gender

Validate If DSO is registered as Citizen then it should show Gender

1.Citizen is Registered as DSO 2.User requests search DSO API 3.User can see the Gender info for that DSO in return

Citizen is registered as DSO then Gender info should be returned

Citizen is registered as DSO then Gender info should be returned

PASSED

PASSED

PASSED

FSM/DSO/04

DSo and FSTPO

DSo and FSTPO gender

Validate update API is Updating gender info for existing DSOs

1.User request Update API for updating gender infor for existing DSOs 2.User requests search DSO API 3.User can see the Gender info for that DSO in return

User should be able to request update API for existing DSOs with gender info

User should be able to request update API for existing DSOs with gender info

PASSED

PASSED

PASSED

FSM/DSO/05

DSo and FSTPO

DSo and FSTPO gender

Citizen gender should not get overriden when DSO gender is updated from Backend (pre requisite: when Citizen is a DSO also)

1.User request Update API for updating gender info for existing DSO 2.User requests search DSO API 3.User can see the Gender info for that DSO in return 4.Validate Citizen gender should not get overriden in UI

User should be able to validate Citizen gender is not getting overriden when DSO gender is updated from Backend (pre requisite: when Citizen is a DSO also)

User should be able to validate Citizen gender is not getting overriden when DSO gender is updated from Backend (pre requisite: when Citizen is a DSO also)

PASSED

PASSED

PASSED

FSM/DSO/06

DSo and FSTPO

DSo and FSTPO gender

DSO gender should not get overriden when Citizen gender is updated from Backend (pre requisite: when Citizen is a DSO also)

1.User request Update API for updating gender info for existing citizen 2.User requests search citizen API 3.User can see the Gender info for that citizen in return 4.Validate DSO gender info should not get overriden in backend

User should be able to validate DSO gender is not getting overriden when Citizen gender is updated from Backend (pre requisite: when Citizen is a DSO also)

User should be able to validate DSO gender is not getting overriden when Citizen gender is updated from Backend (pre requisite: when Citizen is a DSO also)

PASSED

PASSED

PASSED

Employee Specific Test Cases

FSM/Emp/01

Employee

Employee update number of trips

Validate that "No Option Availaible" message should be present in drop down when there is no vechicle present to assign in Assign Vechile page

1.Login as a Employee Editor in mSeva Portal 2.Navigate to FSM 3.Search for application and Click on Take action 4.Validate that "No Option Availaible" message should be present in drop down on Assign Vechile page

User should be able to Validate that "No Option Availaible" message should be present in drop down on Assign Vechile page

User should be able to Validate that "No Option Availaible" message should be present in drop down on Assign Vechile page

PASSED

PASSED

PASSED

FSM/Emp/02

Employee

Employee update number of trips

Validate that list of Vechile is pesent in drop down in Assign Vechile page

1.Login as a Employee Editor in mSeva Portal 2.Navigate to FSM 3.Search for application and Click on Take action 4.Validate that list of Vechile is pesent in drop down in Assign Vechile page

User should be able to Validate that list of Vechile is pesent in drop down in Assign Vechile page

User should be able to Validate that list of Vechile is pesent in drop down in Assign Vechile page

PASSED

PASSED

PASSED

Employee Flow

FSM/Emp/01

Employee

Employee - Slum area create application

Validate "Waiting for disposal" application status is added in filter _English

1.Login as a ULB Employee in mSeva Portal with English language 2.Navigate to FSM 3.Go to employee inbox 4.Validate "Waiting for disposal" application status is added in filter 5. Validate "Waiting for disposal" under “Application Status” and show “-” under “SLA Days Remaining” 6)Status should also reflect on application Timeline when user click on application

1. User should be able to Filter out the application on basis of "Waiting for disposal" Filter. 2. User is able to see "Waiting for disposal" under “Application Status” and see “-” under “SLA Days Remaining” 3)Status should also reflect on application Timeline when user click on application

1. User should be able to Filter out the application on basis of "Waiting for disposal" Filter. 2. User is able to see "Waiting for disposal" under “Application Status” and see “-” under “SLA Days Remaining” 3)Status should also reflect on application Timeline when user click on application

PASSED

PASSED

PASSED

FSM/Emp/02

Employee

Employee - Slum area create application

Validate "Disposed" application status is added in filter_English

1.Login as a ULB Employee in mSeva Portal with English language 2.Navigate to FSM 3.Go to employee inbox 4.Validate "Disposed" application status is added in filter 5. Validate "Disposed" under “Application Status” and show “-” under “SLA Days Remaining” 6)Status should also reflect on application Timeline when user click on application

1. User should be able to Filter out the application on basis of "Disposed" Filter. 2. User is able to see"Disposed" under “Application Status” and see “-” under “SLA Days Remaining” 3)Status should also reflect on application Timeline when user click on application

1. User should be able to Filter out the application on basis of "Disposed" Filter. 2. User is able to see"Disposed" under “Application Status” and see “-” under “SLA Days Remaining” 3)Status should also reflect on application Timeline when user click on application

PASSED

PASSED

PASSED

FSM/Emp/034

Employee

Employee - Slum area create application

Validate "Citizen Feedback Pending" application status is added in filter _English

1.Login as a ULB Employee in mSeva Portal with English language 2.Navigate to FSM 3.Go to employee inbox 4.Validate "Citizen Feedback Pending" application status isadded in filter 5. Validate "Citizen Feedback Pending" under “Application Status” and show “-” under “SLA Days Remaining” 6)Status should also reflect on application Timeline when user click on application

1. User should be able to Filter out the application on basis of "Citizen Feedback Pending" Filter. 2. User is able to show "Citizen Feedback Pending" under “Application Status” and see “-” under “SLA Days Remaining” 3)Status should also reflect on application Timeline when user click on application

1. User should be able to Filter out the application on basis of "Citizen Feedback Pending" Filter. 2. User is able to show "Citizen Feedback Pending" under “Application Status” and see “-” under “SLA Days Remaining” 3)Status should also reflect on application Timeline when user click on application

PASSED

PASSED

PASSED

FSM/Emp/04

Employee

Employee - Slum area create application

Validate Application Created, Pending DSO Assignment, Pending for Payment, Pending for DSO Approval, DSO Rejected, DSO InProgress application status is Present in filter_English

1.Login as a ULB Employee in mSeva Portal with English language 2.Navigate to FSM 3.Go to employee inbox 4.Validate Application Created, Pending DSO Assignment, Pending for Payment, Pending for DSO Approval, DSO Rejected, DSO InProgress application status is Present in filter 5. Validate "Application Created, Pending DSO Assignment, Pending for Payment, Pending for DSO Approval, DSO Rejected, DSO InProgress application status under “Application Status” and show “num of days” under “SLA Days Remaining”

1. User should be able to see Application Created, Pending DSO Assignment, Pending for Payment, Pending for DSO Approval, DSO Rejected, DSO InProgress application status in filter column 2. User is able to see above status under “Application Status” and see “num of days” under “SLA Days Remaining” 3.Status should also reflect on application Timeline when user click on application

1. User should be able to see Application Created, Pending DSO Assignment, Pending for Payment, Pending for DSO Approval, DSO Rejected, DSO InProgress application status in filter column 2. User is able to see above status under “Application Status” and see “num of days” under “SLA Days Remaining” 3.Status should also reflect on application Timeline when user click on application

PASSED

PASSED

PASSED

FSM/Emp/05

Employee

Employee - Slum area create application

Validate "Waiting for disposal" application status is added in filter_Hindi

1.Login as a ULB Employee in mSeva Portal with Hindi language 2.Navigate to FSM 3.Go to employee inbox 4.Validate "Waiting for disposal" application status is added in filter 5. Validate "Waiting for disposal" under “Application Status” and show “-” under “SLA Days Remaining” 6)Status should also reflect on application Timeline when user click on application

1. User should be able to Filter out the application on basis of "Waiting for disposal" Filter. 2. User is able to see "Waiting for disposal" under “Application Status” and see “-” under “SLA Days Remaining”

1. User should be able to Filter out the application on basis of "Waiting for disposal" Filter. 2. User is able to see "Waiting for disposal" under “Application Status” and see “-” under “SLA Days Remaining”

PASSED

PASSED

PASSED

FSM/Emp/06

Employee

Employee - Slum area create application

Validate "Disposed" application status is added in filter_Hindi

1.Login as a ULB Employee in mSeva Portal with Hindi language 2.Navigate to FSM 3.Go to employee inbox 4.Validate "Disposed" application status is added in filter 5. Validate "Disposed" under “Application Status” and show “-” under “SLA Days Remaining” 6)Status should also reflect on application Timeline when user click on application

tatus should also reflect on application Timeline when user click on application

PASSED

PASSED

PASSED

FSM/Emp/07

Employee

Employee - Slum area create application

Validate "Citizen Feedback Pending" application status is added in filter_Hindi

1.Login as a ULB Employee in mSeva Portal with Hindi language 2.Navigate to FSM 3.Go to employee inbox 4.Validate "Citizen Feedback Pending" application status isadded in filter 5. Validate "Citizen Feedback Pending" under “Application Status” and show “-” under “SLA Days Remaining” 6)Status should also reflect on application Timeline when user click on application

1. User should be able to Filter out the application on basis of "Citizen Feedback Pending" Filter. 2. User is able to show "Citizen Feedback Pending" under “Application Status” and see “-” under “SLA Days Remaining” 3.Status should also reflect on application Timeline when user click on application

1. User should be able to Filter out the application on basis of "Citizen Feedback Pending" Filter. 2. User is able to show "Citizen Feedback Pending" under “Application Status” and see “-” under “SLA Days Remaining” 3.Status should also reflect on application Timeline when user click on application

PASSED

PASSED

PASSED

FSM/Emp/08

Employee

Employee - Slum area create application

Validate Application Created, Pending DSO Assignment, Pending for Payment, Pending for DSO Approval, DSO Rejected, DSO InProgress application status is Present in filter_Hindi

1.Login as a ULB Employee in mSeva Portal with Hindi language 2.Navigate to FSM 3.Go to employee inbox 4.Validate Application Created, Pending DSO Assignment, Pending for Payment, Pending for DSO Approval, DSO Rejected, DSO InProgress application status is Present in filter 5. Validate "Application Created, Pending DSO Assignment, Pending for Payment, Pending for DSO Approval, DSO Rejected, DSO InProgress application status under “Application Status” and show “num of days” under “SLA Days Remaining”

1. User should be able to see Application Created, Pending DSO Assignment, Pending for Payment, Pending for DSO Approval, DSO Rejected, DSO InProgress application status in filter column 2. User is able to see above status under “Application Status” and see “num of days” under “SLA Days Remaining”

1. User should be able to see Application Created, Pending DSO Assignment, Pending for Payment, Pending for DSO Approval, DSO Rejected, DSO InProgress application status in filter column 2. User is able to see above status under “Application Status” and see “num of days” under “SLA Days Remaining”

PASSED

PASSED

PASSED

Citizen Flow

FSM/Citizen/01

Citizen

Add ULB contact in FSM application flow

Validate Citizen is able to see helpline numbe on hamburger menu_English

1.Login as a Citizen with English Language 2.Navigate to FSM 3.Validate Citizen is able to see helpline numbe on hamburger menu

Citizen should be able to see Helpline number on hamburger menu

Citizen should be able to see Helpline number on hamburger menu

PASSED

PASSED

PASSED

FSM/Citizen/02

Citizen

Add ULB contact in FSM application flow

Helpline link should be clickable and trigger call function for the entered number_English

1.Login as a Citizen with English Language 2.Navigate to FSM 3.Validate Citizen is able to see helpline numbe on hamburger menu 4.Helpline link should be clickable and trigger call function for the entered number

Citizen should be able to click Helpline link and trigger call function for the entered number

Citizen should be able to click Helpline link and trigger call function for the entered number

PASSED

PASSED

PASSED

FSM/Citizen/03

Citizen

Add ULB contact in FSM application flow

Validate Citizen is able to see helpline numbe on hamburger menu_Hindi

1.Login as a Citizen with Hindi Language 2.Navigate to FSM 3.Validate Citizen is able to see helpline numbe on hamburger menu

Citizen should be able to see Helpline number on hamburger menu

Citizen should be able to see Helpline number on hamburger menu

PASSED

PASSED

PASSED

FSM/Citizen/04

Citizen

Add ULB contact in FSM application flow

Helpline link should be clickable and trigger call function for the entered number_Hindi

1.Login as a Citizen with Hindi Language 2.Navigate to FSM 3.Validate Citizen is able to see helpline numbe on hamburger menu 4.Helpline link should be clickable and trigger call function for the entered number

Citizen should be able to click Helpline link and trigger call function for the entered number

Citizen should be able to click Helpline link and trigger call function for the entered number

PASSED

PASSED

PASSED

FSTPO Specific Test Cases

FSTPO Flow

FSM/FSTPO/01

FSTPO

FSTPO can decline the vehicle trip

Validate Decline Vehicle action should be added for FSTPO,with predefined reasons and conditional comment option

1.Login as a FSTPO 2.Navigate to FSM 3.Search for application and Click on Take action 4.Validate Decline Vehicle action with predefined reasons and conditional comment option is added for FSTPO

User should be able to Validate Decline Vehicle action with predefined reasons and conditional comment option is added for FSTPO

User should be able to Validate Decline Vehicle action with predefined reasons and conditional comment option is added for FSTPO

PASSED

PASSED

PASSED

FSM/FSTPO/02

FSTPO

FSTPO can decline the vehicle trip

Validate Reason for Declining is a mandatory Field

1.Login as a FSTPO with English/Hindi language 2.Navigate to FSM 3.Search for application and Click on Take action 4.FSTPO clicks on Decline Vehicle button without choosing Reason for Declining 5.Validate error msg: This field cannot be empty

Reason for Declining is a Mandatory Field

Reason for Declining is a Mandatory Field

PASSED

PASSED

PASSED

FSM/FSTPO/03

FSTPO

FSTPO can decline the vehicle trip

Validate when "others" is selected as Reason for Declining then "Comments" input box appear which is mandatory field

1.Login as a FSTPO with English/Hindi language 2.Navigate to FSM 3.Search for application and Click on Take action 4.FSTPO choose "Others" in Reason for Declining Field 5.Validate "Comments" input box appear 6.FSTPO clicks on Decline Vehicle button without entering anything in "comment" input box 7.Validate error msg: This field cannot be empty

If "others" is selected as Reason for Declining then "Comments" input box appear which is mandatory field

If "others" is selected as Reason for Declining then "Comments" input box appear which is mandatory field

PASSED

PASSED

PASSED

FSM/FSTPO/04

FSTPO

FSTPO can decline the vehicle trip

Validate After declining from FSTPO, the vehicle trip will be in “TRIP DECLINED” status

1.Login as a FSTPO with English/Hindi language 2.Navigate to FSM 3.Search for application and Click on Take action 4.FSTPO choose Reason for Declining and clicks on "Decline Vehicle" Button. 5.Validate the vehicle trip will be in “TRIP DECLINED” status

Validate After declining from FSTPO, the vehicle trip should be in “TRIP DECLINED” status

Validate After declining from FSTPO, the vehicle trip should be in “TRIP DECLINED” status

PASSED

PASSED

PASSED

FSM/FSTPO/05

FSTPO

FSTPO can decline the vehicle trip

Validate Declining a vehicle will not require Vehicle Out time

1.Login as a FSTPO with English/Hindi language 2.Navigate to FSM 3.Search for application and Click on Take action 4.FSTPO choose Reason for Declining and clicks on "Decline Vehicle" Button. 5.Validate the vehicle trip will be in “TRIP DECLINED” status

Validate Declining vehicle should not require Vehicle Out time

Validate Declining vehicle should not require Vehicle Out time

PASSED

PASSED

PASSED

Dashboard Specific Test Cases

FSM/DSS/01

Dashboard

Dashboard

Validate a pie-chart for Request by gender in FSM Dashboard in Desktop

1.Login as a FSM DSS in mSeva Portal in Desktop 2.Navigate to Dashboard and then in FSM 3.Validate a pie-chart for Request by gender in FSM DSS Dashboard is Present

It is Validated a pie-chart for Request by gender in FSM DSS Dashboard is Present in Desktop version

It is Validated a pie-chart for Request by gender in FSM DSS Dashboard is Present in Desktop version

PASSED

PASSED

PASSED

FSM/DSS/02

Dashboard

Dashboard

Validate that the view of DSS Dashbord is in 2x2 ( ColumnxRow)

1.Login as a FSM DSS in mSeva Portal 2.Navigate to Dashboard and then in FSM 3.Validate that the view of DSS Dashbord is in 2x2 ( ColumnxRow)

It is Validated that the view of DSS Dashbord is in 2x2 ( ColumnxRow)

It is Validated that the view of DSS Dashbord is in 2x2 ( ColumnxRow)

PASSED

PASSED

PASSED

FSM/DSS/03

Dashboard

Dashboard

Validate the DSS Dashboard is seen with gender info in Mobile Version

1.Login as a FSM DSS in mSeva Portal in Mobile 2.Navigate to Dashboard and then in FSM 3.Validate the DSS Dashboard is seen with gender info in Mobile Version

It is Validated that DSS Dashboard is seen with gender info in Mobile Version

It is Validated that DSS Dashboard is seen with gender info in Mobile Version

PASSED

PASSED

PASSED

FSM/DSS/04

Dashboard

Dashboard

Validate the FSM Dashboard is Shareable and can be downloaded in PDF

1.Login as a FSM DSS in mSeva Portal in Mobile 2.Navigate to Dashboard and then in FSM 3.Validate the DSS Dashboard is sharable 4.Validate the DSS Dashboard can be Downloaded in PDF

It is Validated that DSS Dashboard is Shareable and can be downloaded as well

It is Validated that DSS Dashboard is Shareable and can be downloaded as well

PASSED

PASSED

PASSED

PASSED

PASSED

PASSED

FSM/FSM-CREATOR_EMP_01

Employee Creator

Creator- Application creation

Check whether FSM-CREATOR can Create an application request with property type institutional , with capacity of vehicle as 5000 litres and number os trips 3 - the auto calculated amount should be = 2400 * 3 = Rs.7200/- -- ENGLISH

1. Login as citizen/creator and create an application 2. Login as editor and check if you are able toedit the application 3. Check if the number of trips is editable by selecting INSTITUTIONAL 4. Total Price calculated should be no of trips * price for each price

Calculated amount should display = 2400 * 3 = Rs.7200/-

Calculated amount should display = 2400 * 3 = Rs.7200/-

FSM/FSM-CREATOR_EMP_03

Employee Creator

Creator- Application creation

Check whether FSM-CREATOR can Create an application request with property type commercial ,with capacity as 1000 and number of trips 1 - the auto calculated amount should be = 1000*1 = Rs.1000/- -- ENGLISH

1. Login as FSM-CREATOR_EMP 2. FSM-CREATOR enter login ID and password, choosing city as Amritsar 3. Navigte to application creation page 4. Entr all the required fields, make sure to select COMMERCIAL , with capacity as 1000 and number of trips 1 5. Auto Calculated amount should display = 1000*1 = Rs.1000/-

calculated amount should be = 1000*1 = Rs.1000/-

calculated amount should be = 1000*1 = Rs.1000/-

PASSED

PASSED

PASSED

FSM/FSM-CREATOR_EMP_05

Employee Creator

Creator- Application creation

Check whether FSM-CREATOR can Create an application request with property type residential , with capacity of vehicle as 5000 litres with slum data and number os trips 3 - the auto calculated amount should be = 1500 * 3 = Rs.4500/- -- ENGLISH

1. Login as FSM-CREATOR_EMP 2. FSM-CREATOR enter login ID and password, choosing city as Amritsar 3. Navigte to application creation page 4. Entr all the required fields, make sure to select RESIDENTIAL , with capacity of vehicle as 5000 litres with slum data and number os trips 3 5. Auto calculated amount should be = 1500 * 3 = Rs.4500/-

calculated amount should be = 1500 * 3 = Rs.4500/-

calculated amount should be = 1500 * 3 = Rs.4500/-

PASSED

PASSED

PASSED

FSM/FSM-CREATOR_EMP_07

Employee Creator

Creator- Application creation

Check whether FSM-CREATOR can Create an application request with property type institutional , with capacity of vehicle as 5000 litres and number os trips 3 - the auto calculated amount should be = 2400 * 3 = Rs.7200/- -- HINDI

1. Login as FSM-CREATOR_EMP 2. FSM-CREATOR enter login ID and password, choosing city as Amritsar 3. Navigte to application creation page 4. Entr all the required fields, make sure to select INSTITUTIONAL , with capacity of vehicle as 5000 litres and number os trips 3 5. Auto calculated amount should display = 2400 * 3 = Rs.7200/-

Calculated amount should display = 2400 * 3 = Rs.7200/-

Calculated amount should display = 2400 * 3 = Rs.7200/-

PASSED

PASSED

PASSED

FSM/FSM-CREATOR_EMP_09

Employee Creator

Creator- Application creation

Check whether FSM-CREATOR can Create an application request with property type commercial ,with capacity as 1000 and number of trips 1 - the auto calculated amount should be = 1000*1 = Rs.1000/- -- HINDI

1. Login as FSM-CREATOR_EMP 2. FSM-CREATOR enter login ID and password, choosing city as Amritsar 3. Navigte to application creation page 4. Entr all the required fields, make sure to select COMMERCIAL , with capacity as 1000 and number of trips 1 5. Auto Calculated amount should display = 1000*1 = Rs.1000/-

calculated amount should be = 1000*1 = Rs.1000/-

calculated amount should be = 1000*1 = Rs.1000/-

PASSED

PASSED

PASSED

PASSED

PASSED

PASSED

FSM-EDITOR_Waiting_For_Dsiposal_Disposed_01

Employee

Show vehicle trip status in employee inbox along with fsm application

Check whther below status is updated 1. Waiting for disposal 2. Disposed 3. Customer Fedback Rating-- Existing functionality --ENGLISH

1. Login as a FSM-CREATOR 2. Creatte an applciation and submit 3. Login as FSM-EDITOR and go to inbox and look for the application created above 4. complete the DSO assignment process 5. Login with DSO and complete DSO process 6. Now the application status should be waiting for disposal since FSTPO is yet to be acted upon this 7. Login with FSM-EDITOR and go to inbox and check the status of the application and it should show as "Waiting for Disposal" 8. Now login with FSM-FSTPO and complete the application process 9. Now login with FSM-EDITOR and check the status under inbox it should as "Disposed" 10. Once the status is chagned to disposed, verify if the status is changed to "customer feedback pending" on the applcition--existing functionality

FSM-EDITOR All the 3 below status should be updated accordingly 1. Waiting for disposal 2. Disposed 3. Customer Fedback Rating-- Existing functionality

FSM-EDITOR All the 3 below status should be updated accordingly 1. Waiting for disposal 2. Disposed 3. Customer Fedback Rating-- Existing functionality

PASSED

PASSED

PASSED

FSM-EDITOR_SLA_for_Waiting_For_Dsiposal_Disposed_02

Employee

Show vehicle trip status in employee inbox along with fsm application

Check for SLA column for below status is present as - (No value) 1. Waiting for disposal 2. Disposed --ENGLISH

"1. Login as a FSM-CREATOR 2. Creatte an applciation and submit 3. Login as FSM-EDITOR and go to inbox and look for the application created above 4. complete the DSO assignment process 5. Login with DSO and complete DSO process 6. Now the application status should be waiting for disposal since FSTPO is yet to be acted upon this 7. Login with FSM-EDITOR and go to inbox and check the SLA status oshould be displayed as - (no value) for app status as ""Waiting for Disposal"" 8. Now login with FSM-FSTPO and complete the application process 9. Now login with FSM-EDITOR and check the status under inbox it should as SLA status should be displayed as - (no value) for applicationstatus as "disposed"

FSM-EDITOR SLA should be displayed as - for both the status of application

FSM-EDITOR SLA should be displayed as - for both the status of application

PASSED

PASSED

PASSED

FSM-EMP_FSTPO_Waiting_For_Dsiposal_Disposed_03

Employee

Show vehicle trip status in employee inbox along with fsm application

Check whther below status is updated 1. Waiting for disposal 2. Disposed 3. Customer Fedback Rating-- Existing functionality --ENGLISH

1. Login as a FSM-CREATOR 2. Creatte an applciation and submit 3. Login as FSM-EMP_FSTPO and go to inbox and look for the application created above 4. complete the DSO assignment process 5. Login with DSO and complete DSO process 6. Now the application status should be waiting for disposal since FSTPO is yet to be acted upon this 7. Login with FSM-EMP_FSTPO and go to inbox and check the status of the application and it should show as "Waiting for Disposal" 8. Now login with FSM-FSTPO and complete the application process 9. Now login with FSM-EMP_FSTPO and check the status under inbox it should as "Disposed" 10. Once the status is chagned to disposed, verify if the status is changed to "customer feedback pending" on the applcition--existing functionality

FSM-EMP_FSTPO All the 3 below status should be updated accordingly 1. Waiting for disposal 2. Disposed 3. Customer Fedback Rating-- Existing functionality

FSM-EMP_FSTPO All the 3 below status should be updated accordingly 1. Waiting for disposal 2. Disposed 3. Customer Fedback Rating-- Existing functionality

PASSED

PASSED

PASSED

FSM-EMP_FSTPO_SLA_for_Waiting_For_Dsiposal_Disposed_04

Employee

Show vehicle trip status in employee inbox along with fsm application

Check for SLA column for below status is present as - (No value) 1. Waiting for disposal 2. Disposed --ENGLISH

"1. Login as a FSM-CREATOR 2. Creatte an applciation and submit 3. Login as FSM-EMP_FSTPO and go to inbox and look for the application created above 4. complete the DSO assignment process 5. Login with DSO and complete DSO process 6. Now the application status should be waiting for disposal since FSTPO is yet to be acted upon this 7. Login with FSM-EMP_FSTPO and go to inbox and check the SLA status of the application vehcile trip status as ""Waiting for Disposal"" should be displayed as - (no value) 8. Now login with FSM-FSTPO and complete the application process 9. Now login with FSM-EMP_FSTPO and check the status under inbox it should as SLA status should be displayed as - (no value) for applicationstatus as "disposed"

FSM-EMP_FSTPO SLA should be displayed as - for both the status of application

FSM-EMP_FSTPO SLA should be displayed as - for both the status of application

PASSED

PASSED

PASSED

FSM-EDITOR_Waiting_For_Dsiposal_Disposed_HINDI_05

Employee

Show vehicle trip status in employee inbox along with fsm application

Check whther below status is updated 1. Waiting for disposal 2. Disposed 3. Customer Fedback Rating-- Existing functionality --HINDI

1. Login as a FSM-CREATOR 2. Creatte an applciation and submit 3. Login as FSM-EDITOR and go to inbox and look for the application created above 4. complete the DSO assignment process 5. Login with DSO and complete DSO process 6. Now the application status should be waiting for disposal since FSTPO is yet to be acted upon this 7. Login with FSM-EDITOR and go to inbox and check the status of the application and it should show as "Waiting for Disposal" 8. Now login with FSM-FSTPO and complete the application process 9. Now login with FSM-EDITOR and check the status under inbox it should as "Disposed" 10. Once the status is chagned to disposed, verify if the status is changed to "customer feedback pending" on the applcition--existing functionality

FSM-EDITOR All the 3 below status should be updated accordingly 1. Waiting for disposal 2. Disposed 3. Customer Fedback Rating-- Existing functionality

FSM-EDITOR All the 3 below status should be updated accordingly 1. Waiting for disposal 2. Disposed 3. Customer Fedback Rating-- Existing functionality

PASSED

PASSED

PASSED

FSM-EDITOR_SLA_for_Waiting_For_Dsiposal_Disposed_HINDI_06

Employee

Show vehicle trip status in employee inbox along with fsm application

Check for SLA column for below status is present as - (No value) 1. Waiting for disposal 2. Disposed --HINDI

"1. Login as a FSM-CREATOR 2. Creatte an applciation and submit 3. Login as FSM-EDITOR and go to inbox and look for the application created above 4. complete the DSO assignment process 5. Login with DSO and complete DSO process 6. Now the application status should be waiting for disposal since FSTPO is yet to be acted upon this 7. Login with FSM-EDITOR and go to inbox and check the SLA status oshould be displayed as - (no value) for app status as ""Waiting for Disposal"" 8. Now login with FSM-FSTPO and complete the application process 9. Now login with FSM-EDITOR and check the status under inbox it should as SLA status should be displayed as - (no value) for applicationstatus as "disposed"

FSM-EDITOR SLA should be displayed as - for both the status of application

FSM-EDITOR SLA should be displayed as - for both the status of application

PASSED

PASSED

PASSED

FSM-EMP_FSTPO_Waiting_For_Dsiposal_Disposed_HINDI_07

Employee

Show vehicle trip status in employee inbox along with fsm application

Check whther below status is updated 1. Waiting for disposal 2. Disposed 3. Customer Fedback Rating-- Existing functionality --HINDI

1. Login as a FSM-CREATOR 2. Creatte an applciation and submit 3. Login as FSM-EMP_FSTPO and go to inbox and look for the application created above 4. complete the DSO assignment process 5. Login with DSO and complete DSO process 6. Now the application status should be waiting for disposal since FSTPO is yet to be acted upon this 7. Login with FSM-EMP_FSTPO and go to inbox and check the status of the application and it should show as "Waiting for Disposal" 8. Now login with FSM-FSTPO and complete the application process 9. Now login with FSM-EMP_FSTPO and check the status under inbox it should as "Disposed" 10. Once the status is chagned to disposed, verify if the status is changed to "customer feedback pending" on the applcition--existing functionality

FSM-EMP_FSTPO All the 3 below status should be updated accordingly 1. Waiting for disposal 2. Disposed 3. Customer Fedback Rating-- Existing functionality

FSM-EMP_FSTPO All the 3 below status should be updated accordingly 1. Waiting for disposal 2. Disposed 3. Customer Fedback Rating-- Existing functionality

PASSED

PASSED

PASSED

FSM/Emp/01

Employee

Show vehicle trip status in employee inbox along with fsm application

Check for SLA column for below status is present as - (No value) 1. Waiting for disposal 2. Disposed --HINDI

"1. Login as a FSM-CREATOR 2. Creatte an applciation and submit 3. Login as FSM-EMP_FSTPO and go to inbox and look for the application created above 4. complete the DSO assignment process 5. Login with DSO and complete DSO process 6. Now the application status should be waiting for disposal since FSTPO is yet to be acted upon this 7. Login with FSM-EMP_FSTPO and go to inbox and check the SLA status of the application vehcile trip status as ""Waiting for Disposal"" should be displayed as - (no value) 8. Now login with FSM-FSTPO and complete the application process 9. Now login with FSM-EMP_FSTPO and check the status under inbox it should as SLA status should be displayed as - (no value) for applicationstatus as "disposed"

FSM-EMP_FSTPO SLA should be displayed as - for both the status of application

FSM-EMP_FSTPO SLA should be displayed as - for both the status of application

PASSED

PASSED

PASSED

FSM/Emp/02

Employee

Show vehicle trip status in employee inbox along with fsm application

Validate "Waiting for disposal" application status is added in filter _English

1. User should be able to Filter out the application on basis of "Waiting for disposal" Filter. 2. User is able to see "Waiting for disposal" under “Application Status” and see “-” under “SLA Days Remaining” 3)Status should also reflect on application Timeline when user click on application

1. User should be able to Filter out the application on basis of "Waiting for disposal" Filter. 2. User is able to see "Waiting for disposal" under “Application Status” and see “-” under “SLA Days Remaining” 3)Status should also reflect on application Timeline when user click on application

1. User should be able to Filter out the application on basis of "Waiting for disposal" Filter. 2. User is able to see "Waiting for disposal" under “Application Status” and see “-” under “SLA Days Remaining” 3)Status should also reflect on application Timeline when user click on application

PASSED

PASSED

PASSED

FSM/Emp/03

Employee

Show vehicle trip status in employee inbox along with fsm application

Validate "Disposed" application status is added in filter_English

1. User should be able to Filter out the application on basis of "Disposed" Filter. 2. User is able to see"Disposed" under “Application Status” and see “-” under “SLA Days Remaining” 3)Status should also reflect on application Timeline when user click on application

1. User should be able to Filter out the application on basis of "Disposed" Filter. 2. User is able to see"Disposed" under “Application Status” and see “-” under “SLA Days Remaining” 3)Status should also reflect on application Timeline when user click on application

1. User should be able to Filter out the application on basis of "Disposed" Filter. 2. User is able to see"Disposed" under “Application Status” and see “-” under “SLA Days Remaining” 3)Status should also reflect on application Timeline when user click on application

PASSED

PASSED

PASSED

FSM/Emp/04

Employee

Show vehicle trip status in employee inbox along with fsm application

Validate "Citizen Feedback Pending" application status is added in filter _English

1. User should be able to Filter out the application on basis of "Citizen Feedback Pending" Filter. 2. User is able to show "Citizen Feedback Pending" under “Application Status” and see “-” under “SLA Days Remaining” 3)Status should also reflect on application Timeline when user click on application

1. User should be able to Filter out the application on basis of "Citizen Feedback Pending" Filter. 2. User is able to show "Citizen Feedback Pending" under “Application Status” and see “-” under “SLA Days Remaining” 3)Status should also reflect on application Timeline when user click on application

1. User should be able to Filter out the application on basis of "Citizen Feedback Pending" Filter. 2. User is able to show "Citizen Feedback Pending" under “Application Status” and see “-” under “SLA Days Remaining” 3)Status should also reflect on application Timeline when user click on application

PASSED

PASSED

PASSED

FSM/Emp/05

Employee

Show vehicle trip status in employee inbox along with fsm application

Validate Application Created, Pending DSO Assignment, Pending for Payment, Pending for DSO Approval, DSO Rejected, DSO InProgress application status is Present in filter_English

1. User should be able to see Application Created, Pending DSO Assignment, Pending for Payment, Pending for DSO Approval, DSO Rejected, DSO InProgress application status in filter column 2. User is able to see above status under “Application Status” and see “num of days” under “SLA Days Remaining” 3.Status should also reflect on application Timeline when user click on application

1. User should be able to see Application Created, Pending DSO Assignment, Pending for Payment, Pending for DSO Approval, DSO Rejected, DSO InProgress application status in filter column 2. User is able to see above status under “Application Status” and see “num of days” under “SLA Days Remaining” 3.Status should also reflect on application Timeline when user click on application

1. User should be able to see Application Created, Pending DSO Assignment, Pending for Payment, Pending for DSO Approval, DSO Rejected, DSO InProgress application status in filter column 2. User is able to see above status under “Application Status” and see “num of days” under “SLA Days Remaining” 3.Status should also reflect on application Timeline when user click on application

PASSED

PASSED

PASSED

FSM/Emp/06

Employee

Show vehicle trip status in employee inbox along with fsm application

Validate "Waiting for disposal" application status is added in filter_Hindi

1. User should be able to Filter out the application on basis of "Waiting for disposal" Filter. 2. User is able to see "Waiting for disposal" under “Application Status” and see “-” under “SLA Days Remaining”

1. User should be able to Filter out the application on basis of "Waiting for disposal" Filter. 2. User is able to see "Waiting for disposal" under “Application Status” and see “-” under “SLA Days Remaining”

1. User should be able to Filter out the application on basis of "Waiting for disposal" Filter. 2. User is able to see "Waiting for disposal" under “Application Status” and see “-” under “SLA Days Remaining”

PASSED

PASSED

PASSED

FSM/Emp/07

Employee

Show vehicle trip status in employee inbox along with fsm application

Validate "Disposed" application status is added in filter_Hindi

3. atus should also reflect on application Timeline when user click on application

3. atus should also reflect on application Timeline when user click on application

PASSED

PASSED

PASSED

FSM/Emp/08

Employee

Show vehicle trip status in employee inbox along with fsm application

Validate "Citizen Feedback Pending" application status is added in filter_Hindi

1. User should be able to Filter out the application on basis of "Citizen Feedback Pending" Filter. 2. User is able to show "Citizen Feedback Pending" under “Application Status” and see “-” under “SLA Days Remaining” 3.Status should also reflect on application Timeline when user click on application

1. User should be able to Filter out the application on basis of "Citizen Feedback Pending" Filter. 2. User is able to show "Citizen Feedback Pending" under “Application Status” and see “-” under “SLA Days Remaining” 3.Status should also reflect on application Timeline when user click on application

1. User should be able to Filter out the application on basis of "Citizen Feedback Pending" Filter. 2. User is able to show "Citizen Feedback Pending" under “Application Status” and see “-” under “SLA Days Remaining” 3.Status should also reflect on application Timeline when user click on application

PASSED

PASSED

PASSED

FSM/Emp/09

Employee

Show vehicle trip status in employee inbox along with fsm application

Validate Application Created, Pending DSO Assignment, Pending for Payment, Pending for DSO Approval, DSO Rejected, DSO InProgress application status is Present in filter_Hindi

1. User should be able to see Application Created, Pending DSO Assignment, Pending for Payment, Pending for DSO Approval, DSO Rejected, DSO InProgress application status in filter column 2. User is able to see above status under “Application Status” and see “num of days” under “SLA Days Remaining”

1. User should be able to see Application Created, Pending DSO Assignment, Pending for Payment, Pending for DSO Approval, DSO Rejected, DSO InProgress application status in filter column 2. User is able to see above status under “Application Status” and see “num of days” under “SLA Days Remaining”

1. User should be able to see Application Created, Pending DSO Assignment, Pending for Payment, Pending for DSO Approval, DSO Rejected, DSO InProgress application status in filter column 2. User is able to see above status under “Application Status” and see “num of days” under “SLA Days Remaining”

PASSED

PASSED

PASSED

FSTPO_01

FSTPO

FSTPO Vehicle Log Inbox

Check whther "Application number for each vehicle log for each trip should be shown in the inbox"

1. Login as FSTPO 2. Click on Inbox 3. Check whther "Application number for each vehicle log for each trip should be shown in the inbox"

Application number for each vehicle log for each trip should be shown in the inbox

Application number for each vehicle log for each trip should be shown in the inbox

PASSED

PASSED

PASSED

FSTPO_02

FSTPO

FSTPO Vehicle Log Inbox

Check whether "Search criteria via Application umber must be made available to view all the trips taken in that application."

1. Login as FSTPO 2. Click on Inbox 3. Check whther "Search criteria via Application umber must be made available to view all the trips taken in that application."

Search criteria via Application umber must be made available to view all the trips taken in that application.

Search criteria via Application umber must be made available to view all the trips taken in that application.

PASSED

PASSED

PASSED

FSTPO_FLOW_01

FSTPO

FSTPO - View error message

check whtether "FSTPO must have number of cards generated for each disposal based on the number of trips entered."

1. Login as citizen/Creator and create the application 2. Login as Editor and update applciation 3. Login as collector and complete payment 4. Login as Editor and assign DSO 5. Login as DSO and assignvehicle with 2 or 3 trips 6. Now login as FSTPO and check "FSTPO must have number of cards generated for each disposal based on the number of trips entered."

FSTPO must have number of cards generated for each disposal based on the number of trips entered.

FSTPO must have number of cards generated for each disposal based on the number of trips entered.

PASSED

PASSED

PASSED

FSTPO_FLOW_02

FSTPO

FSTPO - View error message

Check whether "User must not be allowed to enter the Trip No: (should not be user selection)"

1. Login as citizen/Creator and create the application 2. Login as Editor and update applciation 3. Login as collector and complete payment 4. Login as Editor and assign DSO 5. Login as DSO and assignvehicle with 2 or 3 trips 6. Now login as FSTPO and check "User must not be allowed to enter the Trip No: (should not be user selection)."

User must not be allowed to enter the Trip No: (should not be user selection)

User must not be allowed to enter the Trip No: (should not be user selection)

PASSED

PASSED

PASSED

FSTPO_FLOW_03

FSTPO

FSTPO - View error message

Check whether"Trip must be provided with “_of (no of trips entered by the DSO) eg: 2 of 3 in each screen each time."

1. Login as citizen/Creator and create the application 2. Login as Editor and update applciation 3. Login as collector and complete payment 4. Login as Editor and assign DSO 5. Login as DSO and assignvehicle with 2 or 3 trips 6. Now login as and check whether "Trip must be provided with “_of (no of trips entered by the DSO) eg: 2 of 3 in each screen each time.."

Trip must be provided with “_of (no of trips entered by the DSO) eg: 2 of 3 in each screen each time.

Trip must be provided with “_of (no of trips entered by the DSO) eg: 2 of 3 in each screen each time.

PASSED

PASSED

PASSED

FSTPO_FLOW_04

FSTPO

FSTPO - View error message

Check whether "Take action and submit screen must be shown only after FSTP operator has entered the last screen with in and out time and the Trip number is for eg, 4 of 4 trips."

1. Login as citizen/Creator and create the application 2. Login as Editor and update applciation 3. Login as collector and complete payment 4. Login as Editor and assign DSO 5. Login as DSO and assignvehicle with 2 or 3 trips 6. Now login as and check whether "Take action and submit screen must be shown only after FSTP operator has entered the last screen with in and out time and the Trip number is for eg, 4 of 4 trips..."

Take action and submit screen must be shown only after FSTP operator has entered the last screen with in and out time and the Trip number is for eg, 4 of 4 trips.

Take action and submit screen must be shown only after FSTP operator has entered the last screen with in and out time and the Trip number is for eg, 4 of 4 trips.

PASSED

PASSED

PASSED

FSTPO_FLOW_05

FSTPO

FSTPO - View error message

Check whether "After using the previous option, that option must be removed and cannot be used the next time."

1. Login as citizen/Creator and create the application 2. Login as Editor and update applciation 3. Login as collector and complete payment 4. Login as Editor and assign DSO 5. Login as DSO and assignvehicle with 2 or 3 trips 6. Now login as and check whether "After using the previous option, that option must be removed and cannot be used the next time...."

After using the previous option, that option must be removed and cannot be used the next time.

After using the previous option, that option must be removed and cannot be used the next time.

PASSED

PASSED

PASSED

FSTPO_FLOW_06

FSTPO

FSTPO - View error message

Check whether "API Validation : the in time for the next team should not be before the out time of the previous trip."

1. Login as citizen/Creator and create the application 2. Login as Editor and update applciation 3. Login as collector and complete payment 4. Login as Editor and assign DSO 5. Login as DSO and assignvehicle with 2 or 3 trips 6. Now login as and check whether "API Validation : the in time for the next team should not be before the out time of the previous trip.."

API Validation : the in time for the next team should not be before the out time of the previous trip.

API Validation : the in time for the next team should not be before the out time of the previous trip.

PASSED

PASSED

PASSED

FSM Dashboard View_01

Dashboad

FSM Dashboard View

Check whether under dashboard view user is able to see " pie chart for gender data"

1. Login as FSM Dashboard ViewER QADV/eGov@123 https://qa.digit.org/employee/user/login 2. Go to Dashboard on left hand side 3. Click on FSM 4. Validte if pie chart is available for gender data

Show pie chart for gender data

Show pie chart for gender data

PASSED

PASSED

PASSED

FSM Dashboard View_02

Dashboad

FSM Dashboard View

Check if drill-down (by Date, ULB) on payment chart is available

1. Login as FSM Dashboard ViewER QADV/eGov@123 https://qa.digit.org/employee/user/login 2. Go to Dashboard on left hand side 3. Click on FSM 4. Check if drill-down (by Date, ULB) on payment chart is available

Check if drill-down (by Date, ULB) on payment chart is available

Check if drill-down (by Date, ULB) on payment chart is available

PASSED

PASSED

PASSED

FSM Dashboard View_03

Dashboad

FSM Dashboard View

Check above charts on mobile and desktop versions

1. Login as FSM Dashboard ViewER QADV/eGov@123 https://qa.digit.org/employee/user/login 2. Go to Dashboard on left hand side 3. Click on FSM 4. Check above graphs on mobile and desktop versions

Check above two graphs on mobile and desktop versions

Check above two graphs on mobile and desktop versions

PASSED

PASSED

PASSED

FSM Dashboard View_04

Dashboad

FSM Dashboard View

Check if chart should be shareable and downloadable

1. Login as FSM Dashboard ViewER QADV/eGov@123 https://qa.digit.org/employee/user/login 2. Go to Dashboard on left hand side 3. Click on FSM 4. check if chart should be shareable and downloadable

check if chart should be shareable and downloadable

check if chart should be shareable and downloadable

PASSED

PASSED

PASSED

https://digit-discuss.atlassian.net/browse/SM-1282
https://digit-discuss.atlassian.net/browse/SM-1281
https://digit-discuss.atlassian.net/browse/SM-1273
https://digit-discuss.atlassian.net/browse/SM-1980
https://digit-discuss.atlassian.net/browse/SM-1980
https://digit-discuss.atlassian.net/browse/SM-1982
https://digit-discuss.atlassian.net/browse/SM-1981
https://digit-discuss.atlassian.net/browse/SM-493
https://digit-discuss.atlassian.net/browse/SM-508
https://digit-discuss.atlassian.net/browse/SM-50
https://digit-discuss.atlassian.net/browse/SM-495
https://digit-discuss.atlassian.net/browse/SM-512
https://digit-discuss.atlassian.net/browse/SM-51
https://digit-discuss.atlassian.net/browse/SM-507
https://digit-discuss.atlassian.net/browse/SM-510
https://digit-discuss.atlassian.net/browse/SM-51
https://digit-discuss.atlassian.net/browse/SM-491
https://digit-discuss.atlassian.net/browse/SM-498
https://digit-discuss.atlassian.net/browse/SM-500
https://digit-discuss.atlassian.net/browse/SM-800
https://digit-discuss.atlassian.net/browse/SM-497
https://digit-discuss.atlassian.net/browse/SM-830
https://digit-discuss.atlassian.net/browse/SM-858
https://digit-discuss.atlassian.net/browse/SM-496
https://digit-discuss.atlassian.net/browse/SM-806
https://digit-discuss.atlassian.net/browse/SM-490
https://digit-discuss.atlassian.net/browse/SM-828
https://digit-discuss.atlassian.net/browse/SM-829
To verify that Editor can able to
increase or de
ease
the trips when citizen has paid some advance
https://digit-discuss.atlassian.net/browse/SM-504
https://digit-discuss.atlassian.net/browse/SM-528
https://digit-discuss.atlassian.net/browse/SM-1329
https://digit-discuss.atlassian.net/browse/SM-1333 https://digit-discuss.atlassian.net/browse/SM-1378
https://digit-discuss.atlassian.net/browse/SM-1427
https://digit-discuss.atlassian.net/browse/SM-1701
https://digit-discuss.atlassian.net/browse/SM-1700
https://digit-discuss.atlassian.net/browse/SM-1752
https://digit-discuss.atlassian.net/browse/SM-1727
https://digit-discuss.atlassian.net/browse/SAN-1024
https://digit-discuss.atlassian.net/browse/SAN-848
https://digit-discuss.atlassian.net/browse/SAN-116
https://digit-discuss.atlassian.net/browse/SAN-795
https://digit-discuss.atlassian.net/browse/SAN-736
https://digit-discuss.atlassian.net/browse/SAN-802
https://digit-discuss.atlassian.net/browse/SAN-817
https://digit-discuss.atlassian.net/browse/SAN-818
https://digit-discuss.atlassian.net/browse/SAN-790
https://digit-discuss.atlassian.net/browse/SAN-790
https://digit-discuss.atlassian.net/browse/SAN-823
https://digit-discuss.atlassian.net/browse/SAN-829
https://digit-discuss.atlassian.net/browse/SAN-803
1. User should be able to Filter out the application on basis of "Disposed" Filter. 2. User is able to see"Disposed" under “Application Status” and see “-” under “SLA Days Remaining”
3.S
1. User should be able to Filter out the application on basis of "Disposed" Filter. 2. User is able to see"Disposed" under “Application Status” and see “-” under “SLA Days Remaining” 3.Status should also reflect on application Timeline when user click on application
https://digit-discuss.atlassian.net/browse/SAN-688
https://digit-discuss.atlassian.net/browse/SAN-800
https://digit-discuss.atlassian.net/browse/SAN-785
https://digit-discuss.atlassian.net/browse/SAN-840
https://digit-discuss.atlassian.net/browse/SAN-803
1. User should be able to Filter out the application on basis of "Disposed" Filter. 2. User is able to see"Disposed" under “Application Status” and see “-” under “SLA Days Remaining”
1. User should be able to Filter out the application on basis of "Disposed" Filter. 2. User is able to see"Disposed" under “Application Status” and see “-” under “SLA Days Remaining”
1. User should be able to Filter out the application on basis of "Disposed" Filter. 2. User is able to see"Disposed" under “Application Status” and see “-” under “SLA Days Remaining” 3. atus should also reflect on application Timeline when user click on application
https://digit-discuss.atlassian.net/browse/SAN-891
https://digit-discuss.atlassian.net/browse/SAN-854
https://digit-discuss.atlassian.net/browse/SAN-848
egov-mdms-data/CronJobAPIConfig.json at DEV · egovernments/egov-mdms-dataGitHub
Logo
Logo