diff --git a/.gitbook/assets/digit-_-indias-largest-open-source-platform-for-e.png b/.gitbook/assets/digit-_-indias-largest-open-source-platform-for-e.png new file mode 100644 index 00000000..3a7c63b4 Binary files /dev/null and b/.gitbook/assets/digit-_-indias-largest-open-source-platform-for-e.png differ diff --git a/.gitbook/assets/egov-docs-01.png b/.gitbook/assets/egov-docs-01.png new file mode 100644 index 00000000..b2e4dfec Binary files /dev/null and b/.gitbook/assets/egov-docs-01.png differ diff --git a/.gitbook/assets/image (84).png b/.gitbook/assets/image (84).png new file mode 100644 index 00000000..6b52e9d7 Binary files /dev/null and b/.gitbook/assets/image (84).png differ diff --git a/.gitbook/assets/image (85).png b/.gitbook/assets/image (85).png new file mode 100644 index 00000000..7275c2e5 Binary files /dev/null and b/.gitbook/assets/image (85).png differ diff --git a/.gitbook/assets/image (86).png b/.gitbook/assets/image (86).png new file mode 100644 index 00000000..a693e1a1 Binary files /dev/null and b/.gitbook/assets/image (86).png differ diff --git a/.gitbook/assets/image (87).png b/.gitbook/assets/image (87).png new file mode 100644 index 00000000..d25180b6 Binary files /dev/null and b/.gitbook/assets/image (87).png differ diff --git a/.gitbook/assets/pgr (1).pdf b/.gitbook/assets/pgr (1).pdf new file mode 100644 index 00000000..581c1b64 Binary files /dev/null and b/.gitbook/assets/pgr (1).pdf differ diff --git a/.gitbook/assets/pgr-user-manual-1.png b/.gitbook/assets/pgr-user-manual-1.png new file mode 100644 index 00000000..c884ec08 Binary files /dev/null and b/.gitbook/assets/pgr-user-manual-1.png differ diff --git a/.gitbook/assets/property_tax_brochure.pdf b/.gitbook/assets/property_tax_brochure.pdf new file mode 100644 index 00000000..a1b5713b Binary files /dev/null and b/.gitbook/assets/property_tax_brochure.pdf differ diff --git a/README.md b/README.md index 0e083802..27dad364 100644 --- a/README.md +++ b/README.md @@ -1,19 +1,32 @@ ---- -description: 'Digital Infrastructure for Governance, Impact & Transformation' ---- +# DIGIT Docs -# DIGIT +![](.gitbook/assets/egov-docs-01.png) -### Welcome to DIGIT +DIGIT is an open-source and open API powered platform for developers, enterprises and citizens to build new applications and solutions. The platform facilitates local governments to achieve quicker implementation time-frames, process improvements, accountability and transparency at various levels of administration. -Digit is an open-source and open API powered platform for developers, enterprises and citizens to build new applications and solutions. The platform facilitates local governments to achieve quicker implementation time-frames, process improvements, accountability and transparency at various levels of administration. +{% hint style="success" %} +[Latest Release Notes](modules-features/release-notes/) - Versioned docs for effective support +{% endhint %} +{% hint style="success" %} +[Configure DIGIT](install-digit/) - Setting up the platform and configuring key usage parameters +{% endhint %} -Urban Governance Transformation at Scale and Speed +{% hint style="success" %} +[Deploy DIGIT](deploy-flow/) - Concept, Architecture, Infrastructure Requirements, and Deployment +{% endhint %} -![](.gitbook/assets/image%20%285%29.png) +{% hint style="success" %} +[Product Brochures](modules-features/product-brochures.md) - Download our informative brochures +{% endhint %} + +{% hint style="success" %} +[Product User Manuals](modules-features/user-guides/) - Access illustrative help docs for modules and features +{% endhint %} + +{% hint style="success" %} +[Training Resources](training-and-demo/) - Access PDF files, watch product training videos +{% endhint %} -![](.gitbook/assets/image%20%282%29.png) -![](.gitbook/assets/image%20%287%29.png) diff --git a/SUMMARY.md b/SUMMARY.md index 52cb962d..2df7c6fd 100644 --- a/SUMMARY.md +++ b/SUMMARY.md @@ -1,81 +1,95 @@ # Table of contents -* [DIGIT](README.md) -* [Getting Started](getting-started/README.md) - * [Digit Overview](getting-started/digit-overview.md) - * [DIGIT Architecture](getting-started/architecture.md) -* [Modules & Features](modules-features/README.md) - * [Product Brochures](modules-features/product-brochures/README.md) - * [Property Tax](modules-features/product-brochures/brochure-pt.md) - * [PGR](modules-features/product-brochures/brochure-pgr.md) - * [Modules & User Manuals](modules-features/user-guides/README.md) - * [Logging In To DIGIT](modules-features/user-guides/guide-login.md) - * [mCollect](modules-features/user-guides/guide-mcollect.md) - * [Finance](modules-features/user-guides/guide-finance/README.md) - * [Citizen User Manual](modules-features/user-guides/guide-finance/citizen-user-manual.md) - * [Employee User Manual](modules-features/user-guides/guide-finance/employee-user-manual.md) - * [Trade License](modules-features/user-guides/guide-tl.md) +* [DIGIT Docs](README.md) +* [DIGIT Concepts](digit-overview/README.md) + * [DIGIT Architecture](digit-overview/architecture.md) +* [Product And Modules](modules-features/README.md) + * [Brochures](modules-features/product-brochures.md) + * [User Manuals](modules-features/user-guides/README.md) + * [Logging Into DIGIT](modules-features/user-guides/guide-login.md) + * [mCollect](modules-features/user-guides/guide-mcollect/README.md) + * [Citizen User Manual](modules-features/user-guides/guide-mcollect/citizen-user-manual.md) + * [Employee User Manual](modules-features/user-guides/guide-mcollect/employee-user-manual.md) + * [Trade License](modules-features/user-guides/guide-tl/README.md) + * [Citizen User Manual](modules-features/user-guides/guide-tl/citizen-user-manual.md) + * [Employee User Manual](modules-features/user-guides/guide-tl/employee-user-manual.md) * [Public Grievance & Redressal](modules-features/user-guides/guide-pgr/README.md) * [Citizen User Manual](modules-features/user-guides/guide-pgr/citizen-guide.md) * [Employee User Manual](modules-features/user-guides/guide-pgr/employee-guide.md) - * [Property Tax](modules-features/user-guides/guide-pt.md) - * [Release Notes](modules-features/release-notes/README.md) - * [DIGIT 2.0 \(30.07.2020\)](modules-features/release-notes/release-2.0/README.md) - * [Release Summary](modules-features/release-notes/release-2.0/2.0-summary.md) - * [Upgrades and Patches](modules-features/release-notes/release-2.0/2.0-upgrades-summary.md) - * [Changelog](modules-features/release-notes/release-2.0/2.0-changelog.md) - * [Localisation](modules-features/release-notes/release-2.0/2.0-localisation.md) - * [API Contracts](modules-features/release-notes/release-2.0/2.0-api-contracts/README.md) - * [WS Contracts](modules-features/release-notes/release-2.0/2.0-api-contracts/ws-contracts.md) - * [Build Artefacts](modules-features/release-notes/release-2.0/service-build-updates.md) - * [MDMS & Config Changes](modules-features/release-notes/release-2.0/2.0-mdms-config-change.md) - * [What's Next](modules-features/release-notes/release-2.0/2.0-whats-next.md) - * [DIGIT Roadmap](modules-features/roadmap.md) - * [Product FAQs](modules-features/product-faqs.md) - * [DIGIT Services](modules-features/technical-documentation/README.md) + * [Complaint Types List](modules-features/user-guides/guide-pgr/complaint-types-list.md) + * [Property Tax](modules-features/user-guides/guide-pt/README.md) + * [Citizen User Manual](modules-features/user-guides/guide-pt/citizen-user-manual.md) + * [Employee User Manual](modules-features/user-guides/guide-pt/employee-user-manual.md) + * [Services Overview](modules-features/technical-documentation/README.md) * [Core Services](modules-features/technical-documentation/core-service/README.md) - * [Access Control Service](modules-features/technical-documentation/core-service/access-control-service.md) - * [User Service](modules-features/technical-documentation/core-service/user-service.md) - * [Location Service](modules-features/technical-documentation/core-service/location-service.md) - * [Workflow Service](modules-features/technical-documentation/core-service/workflow-service.md) + * [Workflow Services](modules-features/technical-documentation/core-service/workflow-service.md) + * [Location Services](modules-features/technical-documentation/core-service/location-service.md) + * [User Services](modules-features/technical-documentation/core-service/user-service.md) + * [Access Control Services](modules-features/technical-documentation/core-service/access-control-service.md) * [MDMS](modules-features/technical-documentation/mdms.md) - * [Business Service](modules-features/technical-documentation/business-service/README.md) - * [Workflow Service](modules-features/technical-documentation/business-service/workflow-service.md) + * [Business Service](modules-features/technical-documentation/business-service.md) * [Municipal Service](modules-features/technical-documentation/municipal-service/README.md) - * [pgr-services](modules-features/technical-documentation/municipal-service/pgr-services.md) + * [PGR Services](modules-features/technical-documentation/municipal-service/pgr-services.md) * [Trade-License Service](modules-features/technical-documentation/municipal-service/trade-license-service.md) * [Utilities](modules-features/technical-documentation/utilities.md) + * [Release Notes](modules-features/release-notes/README.md) + * [Configuration Changes](modules-features/release-notes/configuration-changes.md) + * [Product Release Notes](modules-features/release-notes/product-release-notes/README.md) + * [BPA Release Notes](modules-features/release-notes/product-release-notes/bpa-release-notes.md) + * [Trade License Release Notes](modules-features/release-notes/product-release-notes/trade-license-release-notes.md) + * [Property Tax Release Notes](modules-features/release-notes/product-release-notes/property-tax-release-notes.md) + * [Public Grievance & Redressal Release Notes](modules-features/release-notes/product-release-notes/public-grievance-and-redressal-release-notes.md) + * [Water & Sewerage Release Notes](modules-features/release-notes/product-release-notes/water-and-sewerage-release-notes.md) + * [Advance Payments Release Notes](modules-features/release-notes/product-release-notes/advance-payments-release-notes.md) + * [DIGIT Roadmap](modules-features/roadmap.md) + * [Product FAQs](modules-features/product-faqs.md) * [Quality Assurance](modules-features/testcases.md) -* [Install DIGIT](install-digit/README.md) +* [Deploy DIGIT](deploy-flow/README.md) + * [Infra Requirements](deploy-flow/cluster-requirements.md) + * [Why Kubernetes for DIGIT](deploy-flow/why-kubernetes-for-digit.md) + * [Supported Clouds](deploy-flow/infra-structure-overview/README.md) + * [Google Cloud](deploy-flow/infra-structure-overview/google-cloud-platform.md) + * [Azure](deploy-flow/infra-structure-overview/azure.md) + * [AWS](deploy-flow/infra-structure-overview/infra-provisioning-aws.md) + * [VSphere](deploy-flow/infra-structure-overview/vsphere.md) + * [SDC](deploy-flow/infra-structure-overview/sdc-state-data-center.md) + * [NIC](deploy-flow/infra-structure-overview/nic-national-informatica-cloud.md) + * [Infra Sizing](deploy-flow/estimating-infra.md) + * [Infra Best Practices](deploy-flow/devops.md) + * [Deployment Architecture](deploy-flow/deployment-architecture.md) + * [Deploy DIGIT](deploy-flow/digit-deployment-on-aws/README.md) + * [Routing Traffic](deploy-flow/digit-deployment-on-aws/routing-traffic.md) + * [Backbone Deployment](deploy-flow/digit-deployment-on-aws/backbone-deployment.md) +* [Configure DIGIT](install-digit/README.md) * [Git Repos](install-digit/open-source-git-repos.md) * [Setting up DIGIT](install-digit/setting-up-digit/README.md) * [Configuring InfraOps](install-digit/setting-up-digit/configuring-infraops.md) * [Setting up DIGIT Environment](install-digit/setting-up-digit/setting-up-digit-environment.md) - * [Email and SMS set up](install-digit/setting-up-digit/email-and-sms-set-up.md) - * [FileStore set up](install-digit/setting-up-digit/filestore-set-up.md) - * [Setting up SSL Certificate](install-digit/setting-up-digit/setting-up-ssl-certificate.md) + * [Email And SMS Setup](install-digit/setting-up-digit/email-and-sms-set-up.md) + * [FileStore Setup](install-digit/setting-up-digit/filestore-set-up.md) + * [Setting Up SSL Certificate](install-digit/setting-up-digit/setting-up-ssl-certificate.md) * [Periodic Log Cleanup](install-digit/setting-up-digit/periodic-log-cleanup.md) * [Setting up Master Data](install-digit/setting-up-master-data/README.md) * [MDMS Overview](install-digit/setting-up-master-data/mdms-overview.md) * [Configuring Master Data](install-digit/setting-up-master-data/configuring-master-data.md) - * [Adding new Master](install-digit/setting-up-master-data/adding-new-master.md) + * [Adding New Master](install-digit/setting-up-master-data/adding-new-master.md) * [Configuring Tenants](install-digit/setting-up-master-data/configuring-tenants.md) * [State Level Vs City Level Master](install-digit/setting-up-master-data/state-level-vs-city-level-master.md) * [Configuring Services](install-digit/configuring-digit-services/README.md) * [API Dos and Don'ts](install-digit/configuring-digit-services/api-dos-and-donts.md) - * [Setting up Service Locally](install-digit/configuring-digit-services/setting-up-service-locally.md) + * [Setting Up Service Locally](install-digit/configuring-digit-services/setting-up-service-locally.md) * [Configuring Reports](install-digit/configuring-digit-services/configuring-reports.md) - * [Customizing PDF Notices and Certificates](install-digit/configuring-digit-services/customizing-pdf-notices-and-certificates.md) + * [Customizing PDF Notices And Certificates](install-digit/configuring-digit-services/customizing-pdf-notices-and-certificates.md) * [Configuring Workflows](install-digit/configuring-workflows/README.md) - * [Setting up Workflow](install-digit/configuring-workflows/setting-up-workflow.md) - * [Configuring workflow for an entity](install-digit/configuring-workflows/configuring-workflow-for-an-entity.md) + * [Setting Up Workflows](install-digit/configuring-workflows/setting-up-workflow.md) + * [Configuring Workflows For An Entity](install-digit/configuring-workflows/configuring-workflow-for-an-entity.md) * [Configuring Localization](install-digit/configuring-localization.md) * [Setting Up eDCR Service](install-digit/setting-up-edcr-service.md) * [Configuration FAQs](install-digit/configuration-faqs.md) * [Setting up a Language](install-digit/setting-up-a-language/README.md) * [Adding New Language](install-digit/setting-up-a-language/adding-a-language.md) * [Setting Up Default Language For SMS & Emails](install-digit/setting-up-a-language/setting-a-default-language-for-sms-and-email.md) -* [Customizing DIGIT](customizing-digit/README.md) +* [Customize DIGIT](customizing-digit/README.md) * [Frontend/UI](customizing-digit/customizing-frontend.md) * [Services](customizing-digit/customizing-services/README.md) * [Core Services](customizing-digit/customizing-services/core-services.md) @@ -87,26 +101,8 @@ * [Data Migration Principles](customizing-digit/data-migration/data-migration-principles.md) * [Data Templates](customizing-digit/data-migration/data-templates.md) * [Data Migration Kit](customizing-digit/data-migration/data-migration-kit.md) -* [Infra Specifications](infra-specifications/README.md) - * [Infra Requirements](infra-specifications/cluster-requirements.md) - * [Why Kubernetes for DIGIT](infra-specifications/why-kubernetes-for-digit.md) - * [Supported Clouds](infra-specifications/infra-structure-overview/README.md) - * [Google Cloud](infra-specifications/infra-structure-overview/google-cloud-platform.md) - * [Azure](infra-specifications/infra-structure-overview/azure/README.md) - * [Provision Infra](infra-specifications/infra-structure-overview/azure/infra-provisioning-azure.md) - * [AWS](infra-specifications/infra-structure-overview/infra-provisioning-aws.md) - * [VSphere](infra-specifications/infra-structure-overview/vsphere.md) - * [SDC](infra-specifications/infra-structure-overview/sdc-state-data-center.md) - * [NIC](infra-specifications/infra-structure-overview/nic-national-informatica-cloud.md) - * [Infra Sizing](infra-specifications/estimating-infra.md) - * [Infra Best Practices](infra-specifications/devops.md) -* [DIGIT Deployment](deploy-flow/README.md) - * [Deployment Architecture](deploy-flow/deployment-architecture.md) - * [Deployment](deploy-flow/deployment/README.md) - * [Deploy DIGIT](deploy-flow/deployment/digit-deployment-on-aws/README.md) - * [Routing Traffic](deploy-flow/deployment/digit-deployment-on-aws/routing-traffic.md) - * [Backbone Deployment](deploy-flow/deployment/digit-deployment-on-aws/backbone-deployment.md) * [DIGIT DevOps](devops/README.md) + * [Skills Needed](devops/devops-skills.md) * [Resource Requests & Limits](devops/resource-requests-and-limits.md) * [Readiness & Liveness](devops/probes.md) * [Troubleshooting](devops/troubleshooting/README.md) @@ -117,7 +113,7 @@ * [Security Practices](devops/security-practices.md) * [Training & Demos](training-and-demo/README.md) * [Training Calendar](training-and-demo/training-calendar.md) - * [Videos](training-and-demo/videos.md) + * [Training Videos](training-and-demo/videos.md) * [DIGIT Support](digit-support/README.md) * [Support Process](digit-support/support-process.md) * [Standard Operating Procedure](digit-support/standard-operating-procedure.md) diff --git a/customizing-digit/README.md b/customizing-digit/README.md index 7e5306f4..3839b6d6 100644 --- a/customizing-digit/README.md +++ b/customizing-digit/README.md @@ -1,2 +1,11 @@ -# Customizing DIGIT +# Customize DIGIT + +This section contains details on how to customize the DIGIT user interface and services to meet the local government or user requirements effectively. + +* [Frontend/UI](customizing-frontend.md) +* [Services](customizing-services/) +* [Master & Configuration Data Load Kit](master-and-configuration-data-load-kit.md) +* [Data Migration](data-migration/) + + diff --git a/customizing-digit/customizing-frontend.md b/customizing-digit/customizing-frontend.md index f84d3f08..a4f17f62 100644 --- a/customizing-digit/customizing-frontend.md +++ b/customizing-digit/customizing-frontend.md @@ -1,2 +1,4 @@ # Frontend/UI +Details coming soon... + diff --git a/customizing-digit/customizing-services/README.md b/customizing-digit/customizing-services/README.md index 55f5101d..c9b115b6 100644 --- a/customizing-digit/customizing-services/README.md +++ b/customizing-digit/customizing-services/README.md @@ -1,2 +1,4 @@ # Services +Details coming soon... + diff --git a/customizing-digit/customizing-services/business-services.md b/customizing-digit/customizing-services/business-services.md index 7d2b9a2d..fda017ea 100644 --- a/customizing-digit/customizing-services/business-services.md +++ b/customizing-digit/customizing-services/business-services.md @@ -1,2 +1,4 @@ # Business Services +Details coming soon... + diff --git a/customizing-digit/customizing-services/core-services.md b/customizing-digit/customizing-services/core-services.md index 62b013f2..cb7c5822 100644 --- a/customizing-digit/customizing-services/core-services.md +++ b/customizing-digit/customizing-services/core-services.md @@ -1,2 +1,4 @@ # Core Services +Details coming soon... + diff --git a/customizing-digit/customizing-services/infra-services.md b/customizing-digit/customizing-services/infra-services.md index ab2f9634..3eda0216 100644 --- a/customizing-digit/customizing-services/infra-services.md +++ b/customizing-digit/customizing-services/infra-services.md @@ -1,2 +1,4 @@ # Infra Services +Details coming soon... + diff --git a/customizing-digit/customizing-services/municipal-services.md b/customizing-digit/customizing-services/municipal-services.md index ed467248..59fad30f 100644 --- a/customizing-digit/customizing-services/municipal-services.md +++ b/customizing-digit/customizing-services/municipal-services.md @@ -1,2 +1,4 @@ # Municipal Services +Details coming soon... + diff --git a/customizing-digit/data-migration/README.md b/customizing-digit/data-migration/README.md index 64d40ec7..d2a09913 100644 --- a/customizing-digit/data-migration/README.md +++ b/customizing-digit/data-migration/README.md @@ -1,2 +1,4 @@ # Data Migration +Details coming soon... + diff --git a/customizing-digit/data-migration/data-migration-kit.md b/customizing-digit/data-migration/data-migration-kit.md index 10894e89..4e4c5a48 100644 --- a/customizing-digit/data-migration/data-migration-kit.md +++ b/customizing-digit/data-migration/data-migration-kit.md @@ -1,2 +1,4 @@ # Data Migration Kit +Details coming soon... + diff --git a/customizing-digit/data-migration/data-migration-principles.md b/customizing-digit/data-migration/data-migration-principles.md index 3b70d2a4..4453d05d 100644 --- a/customizing-digit/data-migration/data-migration-principles.md +++ b/customizing-digit/data-migration/data-migration-principles.md @@ -1,2 +1,4 @@ # Data Migration Principles +Details coming soon... + diff --git a/customizing-digit/data-migration/data-templates.md b/customizing-digit/data-migration/data-templates.md index aab27b92..b4da7766 100644 --- a/customizing-digit/data-migration/data-templates.md +++ b/customizing-digit/data-migration/data-templates.md @@ -1,2 +1,4 @@ # Data Templates +Details coming soon... + diff --git a/customizing-digit/master-and-configuration-data-load-kit.md b/customizing-digit/master-and-configuration-data-load-kit.md index 7a3dc56b..b21deb5c 100644 --- a/customizing-digit/master-and-configuration-data-load-kit.md +++ b/customizing-digit/master-and-configuration-data-load-kit.md @@ -1,2 +1,4 @@ # Master & Configuration data load kit +Details coming soon... + diff --git a/deploy-flow/README.md b/deploy-flow/README.md index 4dcc80cf..a44b5250 100644 --- a/deploy-flow/README.md +++ b/deploy-flow/README.md @@ -1,18 +1,14 @@ ---- -description: >- - Gives an overview of the Infra requirements, how to deploy DIGIT on various - cloud infrastructure. ---- - -# DIGIT Deployment +# Deploy DIGIT ### Overview DIGIT is the largest urban governance platform built for billions of transactions between citizens and the state govt. The platform is built with key capabilities like scale, speed, integration, configurable, customizable, extendable, multi-tenanted, security, etc. -### Why microservice architecture +This page discusses the key infrastructural requirements and deploying DIGIT on various cloud environment. + +### Why Microservice Architecture -To fulfil these demands it is designed as a microservice architecture where services are categorized based on the function and deployed as a layered stack that gives better control over each component of an application that exist in its own container, independently managed and updated. This means that developers can build applications from multiple components and program each component in the language best suited to its function, rather than having to choose a single less-than-ideal language to use for everything. Optimizing software all the way down to the components of the application helps you increase the quality of your products. No time and resources are wasted managing the effects updating one application has on another. +To fulfil these demands it is designed as a microservice architecture where services are categorized based on the function and deployed as a layered stack that gives better control over each component of an application that exists in its own container, independently managed and updated. This means that developers can build applications from multiple components and program each component in the language best suited to its function, rather than having to choose a single less-than-ideal language to use for everything. Optimizing software all the way down to the components of the application helps you increase the quality of your products. No time and resources are wasted managing the effects updating one application have on another. For being successful in the Microservices journey, here are certain requirements that need to be ascertained: @@ -24,34 +20,26 @@ For being successful in the Microservices journey, here are certain requirements | Configuration Management | Service Discovery | CI / CD | | Virtualization | Hardware & Storage | OS & Networking | - - -### - -### - -### - -### Pre-Requisites: +### Pre-Requisites * On-premise/private cloud accounts * Interface to access and provision required infra - * In case of SDC, NIC or private DC, it'll be VPN to a allocated vLan. - * SSH access to the VMs/machines. + * In the case of SDC, NIC or private DC, it'll be VPN to an allocated VLAN + * SSH access to the VMs/machines * Infra Requirements * Public cloud - * Managed kubernetes service like AKS or EKS or GKE on Azure, AWS and GCP respectively + * Managed Kubernetes service like AKS or EKS or GKE on Azure, AWS and GCP respectively * Private Clouds \(SDC, NIC\) - * Clouds like VMware, OpenStack, Nutanix and more, may or may not have kubernetes as a managed service. If yes we may have to estimate only the worker nodes depending on number of ULBs and DIGIT's municipal services that you opt. - * In the absence of the above, you have to provision kubernetes cluster from the plain VMs as per the general kubernetes setup instruction and add worker nodes. + * Clouds like VMware, OpenStack, Nutanix and more, may or may not have Kubernetes as a managed service. If yes we may have to estimate only the worker nodes depending on the number of ULBs and DIGIT's municipal services that you opt. + * In the absence of the above, you have to provision Kubernetes cluster from the plain VMs as per the general Kubernetes setup instruction and add worker nodes. * Skills - * Understanding of Linux, containers, VM Instances, Load Balancers, Security Groups/Firewalls, nginx, DB Instance, Data Volumes. - * Experience of kubernetes, docker, jenkins, helm, Infra-as-code, Terraform. - * Experience on DevOps/SRE practice on a Microservices and modern infrastructure. + * Understanding of Linux, containers, VM Instances, Load Balancers, Security Groups/Firewalls, nginx, DB Instance, Data Volumes + * Experience of Kubernetes, Docker, Jenkins, Helm, Infra-as-code, Terraform + * Experience on DevOps/SRE practice on a Microservices and modern infrastructure -### High level action to deploy DIGIT +### High-level Action To Deploy DIGIT -1. [Provisioning the kubernetes Cluster](https://medium.com/better-programming/build-your-own-multi-node-kubernetes-cluster-with-monitoring-346a7e2ef6e2) in any of the +1. [Provisioning the Kubernetes Cluster](https://medium.com/better-programming/build-your-own-multi-node-kubernetes-cluster-with-monitoring-346a7e2ef6e2) in any of the * [Commercial cloud](https://learn.hashicorp.com/terraform?track=kubernetes#kubernetes) or * [Private State datacenter](https://medium.com/faun/10-useful-kubernetes-tools-ddffa62089cc) \(SDC\) or * [National Cloud](https://cloud.gov.in/services.php) \(NIC\) @@ -59,15 +47,15 @@ For being successful in the Microservices journey, here are certain requirements * ZooKeeper * Kafka * Elastic Search -3. Setting up the PostGres DB +3. Setting up the Postgres DB * On a public cloud, provision a Postgres RDS like instance. - * Private cloud, provision a postgres DB on a VM with the backup, HA/DRS. + * Private cloud, provision a Postgres DB on a VM with the backup, HA/DRS 4. Preparing Deployment configuration for required DIGIT services using [Helm](https://medium.com/better-programming/docker-kubernetes-and-helm-4b5a5a87bc8f) Templates from the [InfraOps](https://github.com/egovernments/Train-InfraOps) like the following - * Preparing DIGIT Service [helm templates](https://medium.com/ingeniouslysimple/deploying-kubernetes-applications-with-helm-81c9c931f9d3) to deploy on kubernetes cluster + * Preparing DIGIT Service [helm templates](https://medium.com/ingeniouslysimple/deploying-kubernetes-applications-with-helm-81c9c931f9d3) to deploy on Kubernetes cluster * K8s Secrets * K8s ConfigMaps * Environment variables of each microservices 5. Deploy the stable released version of DIGIT and Required services -6. Setting up Jenkins Job to build, bake images and deploy the components for the rolling updates. +6. Setting up Jenkins Job to build, bake images and deploy the components for the rolling updates 7. Setup [Application monitoring](https://medium.com/@Alibaba_Cloud/system-monitoring-using-prometheus-and-grafana-8007d3aaf400), [Distributed Tracing](https://medium.com/velotio-perspectives/a-comprehensive-tutorial-to-implementing-opentracing-with-jaeger-a01752e1a8ce), [Alert management](https://medium.com/@abhishekbhardwaj510/alertmanager-integration-in-prometheus-197e03bfabdf) diff --git a/infra-specifications/cluster-requirements.md b/deploy-flow/cluster-requirements.md similarity index 71% rename from infra-specifications/cluster-requirements.md rename to deploy-flow/cluster-requirements.md index f198514f..45c5ea16 100644 --- a/infra-specifications/cluster-requirements.md +++ b/deploy-flow/cluster-requirements.md @@ -1,16 +1,14 @@ ---- -description: >- - Infra requirements to provision DIGIT and why digit services containerised and - deployed on Kubernetes. ---- - # Infra Requirements +### Overview + +This page discusses the infrastructure requirements for DIGIT services. It also explains why DIGIT services are containerised and deployed on Kubernetes. + ### Requirements -DIGIT Infra is abstracted to ****[**kubernetes**](https://kubernetes.io/docs/concepts/overview/what-is-kubernetes/) which is an open source containers orchestration platform that helps abstracting variety of infra types that are being available across each state, like Physical, VMs, on-premisis clouds\(**VMware, OpenStack, Nutanix**, etc.\), commercial clouds \(**Google, AWS, Azure, etc**.\), SDC and NIC into a standard infra type. Essentially it unifies various infra types into a standard and single type of infrastructure and thus DIGIT becomes **multi-cloud supported, portable, extensible, high-performant and scalable** containerized workloads and services. This facilitates both declarative configuration and automation. Kubernetes services, eco-system, support and tools are widely available. +DIGIT Infra is abstracted to ****[**Kubernetes**](https://kubernetes.io/docs/concepts/overview/what-is-kubernetes/) which is an open-source containers orchestration platform that helps in abstracting variety of infra types that are being available across each state, like Physical, VMs, on-premises clouds\(**VMware, OpenStack, Nutanix**, etc.\), commercial clouds \(**Google, AWS, Azure, etc**.\), SDC and NIC into a standard infra type. Essentially it unifies various infra types into a standard and single type of infrastructure and thus DIGIT becomes **multi-cloud supported, portable, extensible, high-performant and scalable** containerized workloads and services. This facilitates both declarative configuration and automation. Kubernetes services, eco-system, support and tools are widely available. -### Basic need to provision Kubernetes Cluster +### The basic need to provision Kubernetes Cluster Kubernetes as such is a set of components that designated jobs of scheduling, controlling, monitoring @@ -36,9 +34,9 @@ Kubernetes as such is a set of components that designated jobs of scheduling, co * 2 GB or more of RAM per machine \(any less will leave little room for your apps\) * 2 CPUs or more * Full network connectivity between all machines in the cluster \(public or private network is fine\) -* Unique hostname, MAC address, and product\_uuid for every node. See [here](cluster-requirements.md#verify-the-mac-address-and-product-uuid-are-unique-for-every-node) for more details. -* Certain ports are open on your machines. See below for more details. -* Swap disabled. You **MUST** disable swap in order for the kubelet to work properly. +* Unique hostname, MAC address, and product\_uuid for every node. Click [here](cluster-requirements.md#verify-the-mac-address-and-product-uuid-are-unique-for-every-node) for more details. +* Certain ports are open on your machines. See below for more details +* Swap disabled. You **MUST** disable swap in order for the Kubelet to work properly #### Verify the MAC Address and `product_uuid` Are Unique for Every Node diff --git a/deploy-flow/deployment-architecture.md b/deploy-flow/deployment-architecture.md index 33ab711c..d1a98a61 100644 --- a/deploy-flow/deployment-architecture.md +++ b/deploy-flow/deployment-architecture.md @@ -1,11 +1,7 @@ ---- -description: >- - How DIGIT deployment is architected. What are the various activities in - sequence of action to provision required infra and deploy DIGIT ---- - # Deployment Architecture +This section contains architectural details about DIGIT deployment. It discusses the various activities in a sequence of steps to provision required infra and deploy DIGIT. + ### Sample Kubernetes Architecture ![](../.gitbook/assets/image%20%289%29.png) @@ -18,16 +14,16 @@ description: >- ### The CI/CD Flow -* Every codecommit is well reviewed and squash merge to branches through Pull Requests. +* Every code commit is well-reviewed and squash merge to branches through Pull Requests. * Trigger the CI Pipeline that ensures code quality, vulnerability assessments, CI tests before building the artefacts. -* Artefact are version controlled based on Semantic versioning based on the nature of the change. +* Artefact is version controlled based on Semantic versioning based on the nature of the change. * After successful CI, Jenkins bakes the Docker Images with the versioned artefacts and pushes the baked docker image to Docker Registry. * Deployment Pipeline pulls the built Image and pushes to the corresponding Env. -### Deployment Scripts: +### Deployment Scripts -* As all the DIGIT services that are containerized and deployed on kubernetes, we need to prepare deployment manifests. The same can be found [here](https://github.com/egovernments/Train-InfraOps). -* DIGIT has built helm charts to using the standard helm approach to ease managing the service specific configs, customisations, switch/toggle, secrets, etc. +* As all the DIGIT services that are containerized and deployed on Kubernetes, we need to prepare deployment manifests. The same can be found [here](https://github.com/egovernments/Train-InfraOps). +* DIGIT has built helm charts to using the standard helm approach to ease managing the service-specific configs, customisations, switch/toggle, secrets, etc. * Golang base Deployment script that reads the values from the helm charts template and deploys into the cluster. * Each env will have one master yaml template that will have the definition of all the services to be deployed, their dependencies like Config, Env, Secrets, DB Credentials, Persistent Volumes, Manifest, Routing Rules, etc.. diff --git a/deploy-flow/deployment/README.md b/deploy-flow/deployment/README.md deleted file mode 100644 index ed3c9a4c..00000000 --- a/deploy-flow/deployment/README.md +++ /dev/null @@ -1,2 +0,0 @@ -# Deployment - diff --git a/deploy-flow/deployment/digit-deployment-on-aws/README.md b/deploy-flow/deployment/digit-deployment-on-aws/README.md deleted file mode 100644 index c8869e24..00000000 --- a/deploy-flow/deployment/digit-deployment-on-aws/README.md +++ /dev/null @@ -1,15 +0,0 @@ ---- -description: >- - What does it take to deploy DIGIT services on kubernetes, how to prepare - deployment manifests for various services along with its configs, secrets, - etc. Also how to maintain env specific changes. ---- - -# Deploy DIGIT - - - -{% embed url="https://www.youtube.com/watch?v=zKBo2oDMNNc" %} - - - diff --git a/infra-specifications/devops.md b/deploy-flow/devops.md similarity index 88% rename from infra-specifications/devops.md rename to deploy-flow/devops.md index 65bc5498..a73fbf22 100644 --- a/infra-specifications/devops.md +++ b/deploy-flow/devops.md @@ -1,6 +1,6 @@ # Infra Best Practices -## Best practices for securing your Kubernetes cluster +### Best practices for securing your Kubernetes cluster Kubernetes has changed the way organizations deploy and run their applications, and it has created a significant shift in mindsets. While it has already gained a lot of popularity and more and more organizations are embracing the change, running Kubernetes in production requires care. @@ -16,45 +16,45 @@ There are a massive number of configurations in K8s, and while you can configure I will describe a few best practices that you can adopt if you are running Kubernetes in production. Let’s find out. -## Use a Managed Kubernetes Service if Possible +### Use a Managed Kubernetes Service if Possible If you are running your Kubernetes cluster in the cloud, consider using a managed Kubernetes cluster such as [Google Kubernetes Engine](https://cloud.google.com/kubernetes-engine) or [Azure Kubernetes Service](https://azure.microsoft.com/en-us/services/kubernetes-service/). A managed cluster comes with some level of hardening already in place, and, therefore, there are fewer chances to misconfigure things. A managed cluster also makes upgrades easy, and sometimes automatic. It helps you manage your cluster with ease and provides monitoring and alerting out of the box. -## Upgrade Kubernetes Frequently +### Upgrade Kubernetes Frequently Since Kubernetes is open source, vulnerabilities appear quickly and security patches are released regularly. You need to ensure that your cluster is up to date with the latest security patches and for that, add an upgrade schedule in your standard operating procedure. Having a CI/CD pipeline that runs periodically for executing rolling updates for your cluster is a plus. You would not need to check for upgrades manually, and rolling updates would cause minimal disruption and downtime; also, there would be fewer chances to make mistakes. -That would make upgrades less of a pain. If you are using a managed kubernetes cluster, your cloud provider can cover this aspect for you. +That would make upgrades less of a pain. If you are using a managed Kubernetes cluster, your cloud provider can cover this aspect for you. -## Patch and Harden Your OS +### Patch and Harden Your OS It goes without saying that you should patch and harden the operating system of your Kubernetes nodes. This would ensure that an attacker would have the least attack surface possible. You should upgrade your OS regularly and ensure that it is up to date. -## Enforce RBAC +### Enforce RBAC Kubernetes post version 1.6 has role-based access control \(RBAC\) enabled by default. Ensure that your cluster has this enabled. You also need to ensure that legacy attribute-based access control \(ABAC\) is disabled. Enforcing RBAC gives you several advantages as you can now control who can access your cluster and ensure that the right people have the right set of permissions. -RBAC does not end with securing access to the cluster by kubectl clients but also by pods running within the cluster, nodes, proxies, scheduler, and volume plugins. +RBAC does not end with securing access to the cluster by Kubectl clients but also by pods running within the cluster, nodes, proxies, scheduler, and volume plugins. Only provide the required access to service accounts and ensure that the API server authenticates and authorizes them every time they make a request. -## Use TLS +### Use TLS Running your API server on plain HTTP in production is a terrible idea. It opens your cluster to a man in the middle attack and would open up multiple security holes. -Always use transport layer security \(TLS\) to ensure that communication between kubectl clients and the API server is secure and encrypted. +Always use transport layer security \(TLS\) to ensure that communication between Kubectl clients and the API server is secure and encrypted. Be aware of any non-TLS ports you expose for managing your cluster. Also ensure that internal clients such as pods running within the cluster, nodes, proxies, scheduler, and volume plugins use TLS to interact with the API server. -## Segregate Resources in Namespaces +### Segregate Resources in Namespaces While it might be tempting to create all resources within your default namespace, it would give you tons of advantages if you use namespaces. Not only will it be able to segregate your resources in logical groups but it will also enable you to define security boundaries to resources in namespaces. @@ -64,11 +64,9 @@ After that, you can do clever stuff like defining resource quotas, limit ranges, Avoid binding ClusterRoles to users and service accounts, instead provide them namespace roles so that users have access only to their namespace and do not unintentionally misconfigure someone else’s resources. - - Cluster Role and Namespace Role Bindings -## Control Pod to Pod Traffic +### Control Pod to Pod Traffic You can use Kubernetes network policies that work as firewalls within your cluster. That would ensure that an attacker who gained access to a pod \(especially the ones exposed externally\) would not be able to access other pods from it. @@ -78,7 +76,7 @@ You can create Ingress and Egress rules to allow traffic from the desired source Kubernetes Network Policy -## Create Separate User Accounts +### Create Separate User Accounts By default, when you boot your cluster through [kubeadm](https://kubernetes.io/docs/reference/setup-tools/kubeadm/kubeadm/), you get access to the `kubernetes-admin` config file which is the superuser for performing all activities within your cluster. @@ -92,7 +90,7 @@ You can then securely share the CA certificate with the user. The user can then Configuring User Accounts -## Follow the Principle of Least Privilege +### Follow the Principle of Least Privilege You can provide granular access to user and service accounts with RBAC. Let us consider a typical organization where you can have multiple roles, such as: @@ -104,7 +102,7 @@ The above is not etched in stone, and you can have a different organization poli That means that individuals and teams should have only the right amount of access they need to perform their job, nothing less and nothing more. -## Frequently Rotate Infrastructure Credentials +### Frequently Rotate Infrastructure Credentials It does not stop with just issuing separate user accounts and using TLS to authenticate with the API server. It is an absolute must that you frequently rotate and issue credentials to your users. @@ -112,7 +110,7 @@ Set up an automated system that periodically revokes the old TLS certificates an A bootstrap token, for example, needs to be revoked as soon as you finish with your activity. You can also make use of a credential management system such as [HashiCorp Vault](https://www.vaultproject.io/) which can issue you with credentials when you need them and revoke them when you finish with your work. -## Use a Partitioned Approach to Secure Secrets +### Use a Partitioned Approach to Secure Secrets Imagine a scenario where an externally exposed web application is compromised, and someone has gained access to the pod. In that scenario, they would be able to access the secrets \(such as private keys\) and target the entire system. @@ -124,7 +122,7 @@ In case someone gets access to your login microservice, they would not be able t Partitioned Approach -## Limit Resource Usage +### Limit Resource Usage The last thing you would want as a cluster-admin is a situation where a poorly written microservice code that has a memory leak can take over a cluster node causing the Kubernetes cluster to crash. That is an extremely important and generally ignored area. @@ -136,31 +134,31 @@ That will limit users from seeking an unusually large amount of resources such a Specifying a default resource limit and request on a namespace level is generally a good idea as developers aren’t perfect. If they forget to specify a limit, then the default limit and requests would protect you from resource overrun. -## Protect Your etcd Cluster Like a Treasure Vault +### Protect Your ETCD Cluster Like a Treasure Vault -The etcd datastore is the primary source of data for your Kubernetes cluster. That is where all cluster information and the expected configuration is stored. +The ETCD datastore is the primary source of data for your Kubernetes cluster. That is where all cluster information and the expected configuration is stored. -If someone gains access to your etcd database, all security measures will go down the drain. They will have full control of your cluster, and they can do what they want by modifying state in your etcd datastore. +If someone gains access to your ETCD database, all security measures will go down the drain. They will have full control of your cluster, and they can do what they want by modifying state in your ETCD datastore. -You should always ensure that only the API server can communicate with the etcd datastore and only through TLS using a secure mutual auth. You can put your etcd nodes behind a firewall and block all traffic except the ones originating from the API server. +You should always ensure that only the API server can communicate with the ETCD datastore and only through TLS using a secure mutual auth. You can put your ETCD nodes behind a firewall and block all traffic except the ones originating from the API server. -Do not use the master etcd for any other purpose but for managing your Kubernetes cluster and do not provide any other component any access to the etcd cluster. +Do not use the master ETCD for any other purpose but for managing your Kubernetes cluster and do not provide any other component access to the ETCD cluster. -Enable encryption of your secret data at rest. That is extremely important so that if someone gets access to your etcd cluster, they should not be able to view your secrets by just doing a hex dump of your secrets. +Enable encryption of your secret data at rest. That is extremely important so that if someone gets access to your ETCD cluster, they should not be able to view your secrets by just doing a hex dump of your secrets. -## Control Container Privileges +### Control Container Privileges Containers run on nodes and therefore have some level of access to the host file system, however, the best way to reduce the attack surface is to architect your application in such a way that containers do not need to run as root. Use pod security policies to restrict the pod to access HostPath volumes as that might result in getting access to the host filesystem. Administrators can use a restrictive pod policy so that anyone who gained access to one pod should not be able to access another pod from there. -## Enable Auditing +### Enable Auditing Audit loggers are now a beta feature in Kubernetes, and I recommend you make use of it. That would help you troubleshoot and investigate what happened in case of an attack. As a cluster-admin dealing with a security incident, the last thing you would want is that you are unaware of what exactly happened with your cluster and who has done what. -## Conclusion +### Conclusion Thank you for reading. I hope you enjoyed the story. diff --git a/deploy-flow/digit-deployment-on-aws/README.md b/deploy-flow/digit-deployment-on-aws/README.md new file mode 100644 index 00000000..a9b0d3fa --- /dev/null +++ b/deploy-flow/digit-deployment-on-aws/README.md @@ -0,0 +1,8 @@ +# Deploy DIGIT + +This page provides information on how to deploy DIGIT services on Kubernetes, prepare deployment manifests for various services along with its configurations, secrets. etc. It also discusses the maintenance of environment-specific changes. + +{% embed url="https://www.youtube.com/watch?v=zKBo2oDMNNc" %} + + + diff --git a/deploy-flow/deployment/digit-deployment-on-aws/backbone-deployment.md b/deploy-flow/digit-deployment-on-aws/backbone-deployment.md similarity index 92% rename from deploy-flow/deployment/digit-deployment-on-aws/backbone-deployment.md rename to deploy-flow/digit-deployment-on-aws/backbone-deployment.md index c0ed3d99..f34905ec 100644 --- a/deploy-flow/deployment/digit-deployment-on-aws/backbone-deployment.md +++ b/deploy-flow/digit-deployment-on-aws/backbone-deployment.md @@ -1,5 +1,7 @@ # Backbone Deployment +### Overview + Once the cluster is ready and healthy you can start deploying backbones services. Deploy configuration and deployment in the following Services Lists @@ -7,19 +9,19 @@ Once the cluster is ready and healthy you can start deploying backbones services 1. Backbone \(Redis, ZooKeeper-v2, Kafka-v2,elasticsearch-data-v1, elasticsearch-client-v1, elasticsearch-master-v1\) 2. Gateway \(Zuul, nginx-ingress-controller\) -## Prerequisites +### Pre-requisites * Understanding of VM Instances, LoadBalancers, SecurityGroups/Firewalls, nginx, DB Instance, Data Volumes. -* Experience of kubernetes, docker, jenkins, helm, golang, Infra-as-code. -* - Deploy configuration and deployment backbone services: +* Experience of Kubernetes, Docker, Jenkins, helm, golang, Infra-as-code. + +Deploy configuration and deployment backbone services: 1. Clone the git repo[ ![](https://github.githubassets.com/favicon.ico)https://github.com/egovernments/eGov-infraOps](https://github.com/egovernments/eGov-infraOps) . Copy existing [dev.yaml](https://github.com/egovernments/eGov-infraOps/blob/master/helm/environments/dev.yaml) and [dev-secrets.yaml](https://github.com/egovernments/eGov-infraOps/blob/master/helm/environments/dev-secrets.yaml) with new environment name \(eg..yaml and-secrets.yaml\) 2. Modify the global domain and set namespaces create to true ![](https://gblobscdn.gitbook.com/assets%2F-MERG_iQW5oN4ukgXP8K%2F-MGrj6BrCyQtBc7G4ijs%2F-MGrupRtrQfYiFoTL3XU%2Fimage.png?alt=media&token=8a640c33-f38c-4580-bf8c-caa157f34b6b) -3. Modify the below mentioned changes for each backbone services: +3. Modify the below-mentioned changes for each backbone services: Eg. For Kafka-v2 If you are using **AWS as cloud provider,** change the respective volume id’s and zone’s diff --git a/deploy-flow/deployment/digit-deployment-on-aws/routing-traffic.md b/deploy-flow/digit-deployment-on-aws/routing-traffic.md similarity index 95% rename from deploy-flow/deployment/digit-deployment-on-aws/routing-traffic.md rename to deploy-flow/digit-deployment-on-aws/routing-traffic.md index 9faa9db7..761dd1f3 100644 --- a/deploy-flow/deployment/digit-deployment-on-aws/routing-traffic.md +++ b/deploy-flow/digit-deployment-on-aws/routing-traffic.md @@ -1,5 +1,7 @@ # Routing Traffic +### Overview + In Kubernetes, an Ingress is an object that allows access to your Kubernetes services from outside the Kubernetes cluster. You configure access by creating a collection of rules that define which inbound connections reach which services. This lets you consolidate your routing rules into a single resource. For example, you might want to send requests to example.com/api/v1/ to an api-v1 service, and requests to example.com/api/v2/ to the api-v2 service. With an Ingress, you can easily set this up without creating a bunch of LoadBalancers or exposing each service on the Node. @@ -10,7 +12,7 @@ An API object that manages external access to the services in a cluster, typical Ingress may provide load balancing, SSL termination and name-based virtual hosting. -## Terminology +### Terminology For clarity, this guide defines the following terms: @@ -20,7 +22,7 @@ For clarity, this guide defines the following terms: * Cluster network: A set of links, logical or physical, that facilitate communication within a cluster according to the Kubernetes [networking model](https://kubernetes.io/docs/concepts/cluster-administration/networking/). * Service: A Kubernetes [Service](https://kubernetes.io/docs/concepts/services-networking/service/) that identifies a set of Pods using [label](https://kubernetes.io/docs/concepts/overview/working-with-objects/labels) selectors. Unless mentioned otherwise, Services are assumed to have virtual IPs only routable within the cluster network. -## What is Ingress? +### What is Ingress? ​[Ingress](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.19/#ingress-v1-networking-k8s-io) exposes HTTP and HTTPS routes from outside the cluster to [services](https://kubernetes.io/docs/concepts/services-networking/service/) within the cluster. Traffic routing is controlled by rules defined on the Ingress resource. @@ -32,7 +34,7 @@ An Ingress may be configured to give Services externally-reachable URLs, load ba An Ingress does not expose arbitrary ports or protocols. Exposing services other than HTTP and HTTPS to the internet typically uses a service of type [Service.Type=NodePort](https://kubernetes.io/docs/concepts/services-networking/service/#nodeport) or [Service.Type=LoadBalancer](https://kubernetes.io/docs/concepts/services-networking/service/#loadbalancer). -## Prerequisites +### Prerequisites You must have an [ingress controller](https://kubernetes.io/docs/concepts/services-networking/ingress-controllers) to satisfy an Ingress. Only creating an Ingress resource has no effect. @@ -40,7 +42,7 @@ You may need to deploy an Ingress controller such as [ingress-nginx](https://kub Ideally, all Ingress controllers should fit the reference specification. In reality, the various Ingress controllers operate slightly differently. -## The Ingress resource +### The Ingress resource An Ingress resource example: @@ -54,7 +56,7 @@ As with all other Kubernetes resources, an Ingress needs apiVersion, kind, and m The Ingress [spec](https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status) has all the information needed to configure a load balancer or proxy server. Most importantly, it contains a list of rules matched against all incoming requests. Ingress resource only supports rules for directing HTTP\(S\) traffic. -### Ingress rules +### Ingress rules Each HTTP rule contains the following information: @@ -65,5 +67,5 @@ Each HTTP rule contains the following information: A defaultBackend is often configured in an Ingress controller to service any requests that do not match a path in the spec. * Learn about the [Ingress API](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.19/#ingress-v1beta1-networking-k8s-io)​ -* * Learn about [Cert-manager](https://cert-manager.io/docs/)​ +* Learn about [Cert-manager](https://cert-manager.io/docs/)​ diff --git a/deploy-flow/estimating-infra.md b/deploy-flow/estimating-infra.md new file mode 100644 index 00000000..6adfcf53 --- /dev/null +++ b/deploy-flow/estimating-infra.md @@ -0,0 +1,4 @@ +# Infra Sizing + +Details coming soon... + diff --git a/deploy-flow/infra-structure-overview/README.md b/deploy-flow/infra-structure-overview/README.md new file mode 100644 index 00000000..cd923255 --- /dev/null +++ b/deploy-flow/infra-structure-overview/README.md @@ -0,0 +1,17 @@ +# Supported Clouds + +This section discusses the supported cloud environment for DIGIT services. It provides information on where and how DIGIT is deployed. Further, it offers guidelines on estimating the infrastructural requirements for cloud support. + +Supported Cloud List + +* [Google Cloud](google-cloud-platform.md) +* [Azure](azure.md) +* [AWS](infra-provisioning-aws.md) +* [VSphere](vsphere.md) +* [SDC](sdc-state-data-center.md) +* [NIC](nic-national-informatica-cloud.md) + + + + + diff --git a/infra-specifications/infra-structure-overview/azure/README.md b/deploy-flow/infra-structure-overview/azure.md similarity index 77% rename from infra-specifications/infra-structure-overview/azure/README.md rename to deploy-flow/infra-structure-overview/azure.md index 272b3a3d..25f5441b 100644 --- a/infra-specifications/infra-structure-overview/azure/README.md +++ b/deploy-flow/infra-structure-overview/azure.md @@ -1,16 +1,14 @@ # Azure -## Azure +### Prepare Azure Environment -### Prepare Azure Environment +For provisioning Kubernetes clusters with the [Azure cloud provider](https://github.com/kubermatic/machine-controller/tree/master/pkg/cloudprovider/provider/azure) Kubermatic needs a service account with \(at least\) the Azure role `Contributor`. Please follow the following steps to create a matching service account. -For provisioning Kubernetes clusters with the [Azure cloud provider](https://github.com/kubermatic/machine-controller/tree/master/pkg/cloudprovider/provider/azure) Kubermatic needs a service account with \(at least\) the the Azure role `Contributor`. Please follow the following steps to create an matching service account: - -#### Login to Azure and Get Basic Information +### Login to Azure and Get Basic Information Login to Azure with [Azure CLI](https://docs.microsoft.com/en-us/cli/azure/?view=azure-cli-latest) `az`. -This command will open in your default browser a window where you can authenticate. After you succefull logged in get your subscription ID. +This command will open in your default browser a window where you can authenticate. After you succefully logged in get your subscription ID. ```text az account show --query id -o json diff --git a/infra-specifications/infra-structure-overview/google-cloud-platform.md b/deploy-flow/infra-structure-overview/google-cloud-platform.md similarity index 72% rename from infra-specifications/infra-structure-overview/google-cloud-platform.md rename to deploy-flow/infra-structure-overview/google-cloud-platform.md index ed1b4cbf..4b6fa9a2 100644 --- a/infra-specifications/infra-structure-overview/google-cloud-platform.md +++ b/deploy-flow/infra-structure-overview/google-cloud-platform.md @@ -1,14 +1,10 @@ # Google Cloud -## Google Cloud Platform +### Compute Engine API -### Google Cloud Platform +For access to the Compute Engine API, it has to be enabled at the [Google APIs console](https://console.developers.google.com/apis/dashboard). -#### Compute Engine API - -For the access to the Compute Engine API it has to be enabled at the [Google APIs console](https://console.developers.google.com/apis/dashboard). - -#### User Roles +### User Roles The user for the _Google Service Account_ that has to be created has to have three roles: @@ -33,7 +29,7 @@ gcloud projects add-iam-policy-binding YOUR_PROJECT_ID --member 'serviceAccount: gcloud projects add-iam-policy-binding YOUR_PROJECT_ID --member 'serviceAccount:YOUR_SERVICE_ACCOUNT_ID' --role='roles/viewer' ``` -#### Google Service Account +### Google Service Account A _Google Service Account_ for the platform has to be created, see [Creating and managing service accounts](https://cloud.google.com/iam/docs/creating-managing-service-accounts). The result is a JSON file containing the fields @@ -57,7 +53,7 @@ gcloud iam service-accounts keys create --iam-account YOUR_SERVICE_ACCOUNT k8c-c base64 -w 0 ./k8c-cluster-provisioner-sa-key.json ``` -#### Passing the Google Service Account +### Passing the Google Service Account -The base64 encoded secret of the service account will passed in the field `serviceAccount` of the `cloudProviderSpec` of the machine deployment. The encoded secret can be entered in the UI field `Service Account`: +The base64 encoded secret of the service account will be passed in the field `serviceAccount` of the `cloudProviderSpec` of the machine deployment. The encoded secret can be entered in the UI field `Service Account`: diff --git a/infra-specifications/infra-structure-overview/infra-provisioning-aws.md b/deploy-flow/infra-structure-overview/infra-provisioning-aws.md similarity index 93% rename from infra-specifications/infra-structure-overview/infra-provisioning-aws.md rename to deploy-flow/infra-structure-overview/infra-provisioning-aws.md index 5ff22932..b975a9ee 100644 --- a/infra-specifications/infra-structure-overview/infra-provisioning-aws.md +++ b/deploy-flow/infra-structure-overview/infra-provisioning-aws.md @@ -1,12 +1,9 @@ ---- -description: >- - Provisioning kubernetes cluster which is an abstracted infrastructure - requirement for DIGIT to be deployed. Here we'll provision infra-as-code on - AWS using terraform. ---- - # AWS +### Overview + +This page discusses the provisioning of the Kubernetes cluster which is an abstracted infrastructure requirement for DIGIT to be deployed. Learn how to provision infra-as-code on AWS using terraform. + {% embed url="https://www.youtube.com/watch?v=moW4bZhdQIk" %} ```text diff --git a/infra-specifications/infra-structure-overview/nic-national-informatica-cloud.md b/deploy-flow/infra-structure-overview/nic-national-informatica-cloud.md similarity index 70% rename from infra-specifications/infra-structure-overview/nic-national-informatica-cloud.md rename to deploy-flow/infra-structure-overview/nic-national-informatica-cloud.md index d467ae67..18913645 100644 --- a/infra-specifications/infra-structure-overview/nic-national-informatica-cloud.md +++ b/deploy-flow/infra-structure-overview/nic-national-informatica-cloud.md @@ -4,3 +4,5 @@ description: National Informatica Cloud # NIC +Details coming soon... + diff --git a/infra-specifications/infra-structure-overview/sdc-state-data-center.md b/deploy-flow/infra-structure-overview/sdc-state-data-center.md similarity index 73% rename from infra-specifications/infra-structure-overview/sdc-state-data-center.md rename to deploy-flow/infra-structure-overview/sdc-state-data-center.md index 292a277f..bc3f54c7 100644 --- a/infra-specifications/infra-structure-overview/sdc-state-data-center.md +++ b/deploy-flow/infra-structure-overview/sdc-state-data-center.md @@ -4,13 +4,13 @@ description: State Data Centres with On-Premise Kubernetes Clusters # SDC -## What to know when deploying Kubernetes on SDC +### What to know when deploying Kubernetes on SDC Running Kubernetes on-premise gives a cloud-native experience or SDC becomes cloud-agnostic when it comes to the experience of Deploying DIGIT. -Whether States have their own on-premise data center, have decided to forego the various managed cloud solutions, there’s a few things one should know when getting started with on-premise K8s. +Whether States have their own on-premise data centre, have decided to forego the various managed cloud solutions, there are few things one should know when getting started with on-premise K8s. -One should be familiar with Kubernetes and one should know that the [control plane](https://kubernetes.io/docs/concepts/overview/components/#master-components) consists of the kube-apiserver, kube-scheduler, kube-controller-manager and an etcd datastore. For managed cloud solutions like [Google’s Kubernetes Engine \(GKE\)](https://cloud.google.com/kubernetes-engine/) or [Azure’s Kubernetes Service \(AKS\)](https://azure.microsoft.com/en-us/services/kubernetes-service/) it also includes the cloud-controller-manager. This is the component that connects the cluster to the external cloud services to provide networking, storage, authentication, and other feature support. +One should be familiar with Kubernetes and one should know that the [control plane](https://kubernetes.io/docs/concepts/overview/components/#master-components) consists of the Kube-apiserver, Kube-scheduler, Kube-controller-manager and an ETCD datastore. For managed cloud solutions like [Google’s Kubernetes Engine \(GKE\)](https://cloud.google.com/kubernetes-engine/) or [Azure’s Kubernetes Service \(AKS\)](https://azure.microsoft.com/en-us/services/kubernetes-service/) it also includes the cloud-controller-manager. This is the component that connects the cluster to the external cloud services to provide networking, storage, authentication, and other feature support. To successfully deploy a bespoke Kubernetes cluster and achieve a cloud-like experience on SDC, one need to replicate all the same features you get with a managed solution. At a high-level this means that we probably want to: @@ -19,40 +19,40 @@ To successfully deploy a bespoke Kubernetes cluster and achieve a cloud-like exp * Choose a storage solution * Handle security and authentication -Lets look at each of these challenges individually, and we’ll try to provide enough of an overview to aid you in get started. +Let us look at each of these challenges individually, and we’ll try to provide enough of an overview to aid you in getting started. -## Automating the deployment process +### Automating the deployment process -Using a tool like ansible can make deploying Kubernetes clusters on-premise trivial. +Using a tool like an ansible can make deploying Kubernetes clusters on-premise trivial. -When deciding to manage your own Kubernetes clusters, we need to setup a few proof-of-concept \(PoC\) clusters to learn how everything works, perform performance and conformance tests, and try out different configuration options. +When deciding to manage your own Kubernetes clusters, we need to set up a few proof-of-concept \(PoC\) clusters to learn how everything works, perform performance and conformance tests, and try out different configuration options. -After this phase, automating the deployment process is an important if not necessary step to ensure consistency across any clusters you build. For this you have a few options, but the most popular are: +After this phase, automating the deployment process is an important if not necessary step to ensure consistency across any clusters you build. For this, you have a few options, but the most popular are: * \*\*\*\*[**kubeadm**](https://kubernetes.io/docs/reference/setup-tools/kubeadm/kubeadm/): a low-level tool that helps you bootstrap a minimum viable Kubernetes cluster that conforms to best practices -* [**kubespray**](https://github.com/kubernetes-sigs/kubespray): an ansible playbook that helps deploy production ready clusters +* [**kubespray**](https://github.com/kubernetes-sigs/kubespray): an ansible playbook that helps deploy production- ready clusters If you already using ansible, kubespray is a great option otherwise we recommend writing automation around kubeadm using your preferred playbook tool after using it a few times. This will also increase your confidence and knowledge in the tooling surrounding Kubernetes. -## Choosing a network solution +### Choosing a network solution When designing clusters, choosing the right container networking interface \(CNI\) plugin can be the hardest part. This is because choosing a CNI that will work well with an existing network topology can be tough. Do you need BGP peering capabilities? Do you want an overlay network using vxlan? How close to bare-metal performance are you trying to get? -There are a lot of articles that compare the various CNI provider solutions \(calico, weave, flannel, kube-router, etc.\) that are must-reads like the [_benchmark results of Kubernetes network plugins_](https://itnext.io/benchmark-results-of-kubernetes-network-plugins-cni-over-10gbit-s-network-updated-april-2019-4a9886efe9c4) article. We usually recommend Project Calico for its maturity, continued support, and large feature set or flannel for it’s simplicity. +There are a lot of articles that compare the various CNI provider solutions \(calico, weave, flannel, kube-router, etc.\) that are must-reads like the [_benchmark results of Kubernetes network plugins_](https://itnext.io/benchmark-results-of-kubernetes-network-plugins-cni-over-10gbit-s-network-updated-april-2019-4a9886efe9c4) article. We usually recommend Project Calico for its maturity, continued support, and large feature set or flannel for its simplicity. -For ingress traffic you’ll need to pick a load-balancer solution. For a simple configuration you can use MetalLB, but if you’re lucky enough to have F5 hardware load-balancers available we recommend checking out the [K8s F5 BIG-IP Controller](https://clouddocs.f5.com/containers/v2/kubernetes/). The controller supports connecting your network plugin to the F5 either through either vxlan or BGP peering. This gives the controller full visibility into pod health and provides the best performance. +For ingress traffic, you’ll need to pick a load-balancer solution. For a simple configuration, you can use MetalLB, but if you’re lucky enough to have F5 hardware load-balancers available we recommend checking out the [K8s F5 BIG-IP Controller](https://clouddocs.f5.com/containers/v2/kubernetes/). The controller supports connecting your network plugin to the F5 either through either vxlan or BGP peering. This gives the controller full visibility into pod health and provides the best performance. -## Choosing a storage solution +### Choosing a storage solution -Kubernetes provides a number of [included storage volume plugins](https://kubernetes.io/docs/concepts/storage/storage-classes/#provisioner). If you’re going on-premise you’ll probably want to use a network-attached storage \(NAS\) option to avoid forcing pods to be pinned to specific nodes. +Kubernetes provides a number of [included storage volume plugins](https://kubernetes.io/docs/concepts/storage/storage-classes/#provisioner). If you’re going on-premise you’ll probably want to use network-attached storage \(NAS\) option to avoid forcing pods to be pinned to specific nodes. For a cloud-like experience, you’ll need to add a plugin to dynamically create persistent volume objects that match the user’s persistent volume claims. You can use dynamic provisioning to reclaim these volume objects after a resource has been deleted. Pure Storage has a great example helm chart, the [_Pure Service Orchestrator_ \(PSO\)](https://github.com/purestorage/helm-charts), that provides smart provisioning although it only works for Pure Storage products. -## Handle security and authentication +### Handle security and authentication -As anyone familiar with security knows, this is a rabbit-hole. You can always make your infrastructure more secure, and should be investing in continual improvements. +As anyone familiar with security knows, this is a rabbit-hole. You can always make your infrastructure more secure and should be investing in continual improvements. Including different Kubernetes plugins can help build a secure, cloud-like experience for your users @@ -64,7 +64,7 @@ When designing on-premise clusters you’ll have to decide where to draw the lin For user authentication, we recommend checking out [guard](https://github.com/appscode/guard) which will integrate with an existing authentication provider. If you’re already using Github teams to then this could be a no-brainer. -## Other Considerations +### Other Considerations Hope this has given you a good idea of deploying, networking, storage, and security for you to take the leap into deploying your own on-premise Kubernetes clusters. Like we mentioned above, the team will want to build proof-of-concept clusters, run conformance and performance tests, and really become experts on Kubernetes if you’re going to be using it to run DIGIT on production. diff --git a/infra-specifications/infra-structure-overview/vsphere.md b/deploy-flow/infra-structure-overview/vsphere.md similarity index 72% rename from infra-specifications/infra-structure-overview/vsphere.md rename to deploy-flow/infra-structure-overview/vsphere.md index 07bac109..43656702 100644 --- a/infra-specifications/infra-structure-overview/vsphere.md +++ b/deploy-flow/infra-structure-overview/vsphere.md @@ -1,12 +1,10 @@ # VSphere -## VSphere - -### VSphere +### Overview The Kubernetes vSphere driver contains bugs related to detaching volumes from offline nodes. See the [**Volume detach bug**](vsphere.md#volume-detach-bug) section for more details. -#### VM Images +### VM Images When creating worker nodes for a user cluster, the user can specify an existing image. Defaults may be set in the [datacenters.yaml](https://docs.kubermatic.io/installation/install_kubermatic/#defining-the-datacenters). @@ -16,46 +14,46 @@ Supported operating systems * CoreOS [ova](https://stable.release.core-os.net/amd64-usr/current/coreos_production_vmware_ova.ova) * CentOS 7 [qcow2](https://cloud.centos.org/centos/7/images/CentOS-7-x86_64-GenericCloud.qcow2) -**Importing the OVA** +### **Importing the OVA** -1. Go into the VSphere WebUI, select your datacenter, right click onto it and choose “Deploy OVF Template” -2. Fill in the “URL” field with the appropriate url -3. Click through the dialog until “Select storage” +1. Go into the VSphere WebUI, select your data centre, right-click onto it and choose “Deploy OVF Template” +2. Fill in the “URL” field with the appropriate URL +3. Click through the dialogue until “Select storage” 4. Select the same storage you want to use for your machines 5. Select the same network you want to use for your machines -6. Leave everyhting in the “Customize Template” and “Ready to complete” dialog as it is -7. Wait until the VM got fully imported and the “Snapshots” => “Create Snapshot” button is not grayed out anymore -8. The template VM must have the disk.enableUUID flag set to 1, this can be done using the [govc tool](https://github.com/vmware/govmomi/tree/master/govc) with the following command: +6. Leave everything in the “Customize Template” and “Ready to complete” dialogue as it is +7. Wait until the VM got fully imported and the “Snapshots” => “Create Snapshot” button is not greyed out anymore. +8. The template VM must have the disk.enable UUID flag set to 1, this can be done using the [govc tool](https://github.com/vmware/govmomi/tree/master/govc) with the following command: ```text govc vm.change -e="disk.enableUUID=1" -vm='/PATH/TO/VM' ``` -**Importing the QCOW2** +### **Importing the QCOW2** 1. Convert it to vmdk: `qemu-img convert -f qcow2 -O vmdk CentOS-7-x86_64-GenericCloud.qcow2 CentOS-7-x86_64-GenericCloud.vmdk` 2. Upload it to a Datastore of your vSphere installation -3. Create a new virtual machine that uses the uploaded vmdk as rootdisk +3. Create a new virtual machine that uses the uploaded vmdk as rootdisk. -**Modifications** +### **Modifications** -Modifications like Network, disk size, etc. must be done in the ova template before creating a worker node from it. If user clusters have dedicated networks, all user clusters therefore need a custom template. +Modifications like Network, disk size, etc. must be done in the ova template before creating a worker node from it. If user clusters have dedicated networks, all user clusters, therefore, need a custom template. -#### VM Folder +### VM Folder -During creation of a user cluster Kubermatic creates a dedicated VM folder in the root path on the Datastore \(Defined in the [datacenters.yaml](https://docs.kubermatic.io/installation/install_kubermatic/#defining-the-datacenters)\). That folder will contain all worker nodes of a user cluster. +During the creation of a user cluster Kubermatic creates a dedicated VM folder in the root path on the Datastore \(Defined in the [datacenters.yaml](https://docs.kubermatic.io/installation/install_kubermatic/#defining-the-datacenters)\). That folder will contain all worker nodes of a user cluster. -#### Credentials / Cloud-Config +### Credentials / Cloud-Config Kubernetes needs to talk to the vSphere to enable Storage inside the cluster. For this, kubernetes needs a config called `cloud-config`. This config contains all details to connect to a vCenter installation, including credentials. As this Config must also be deployed onto each worker node of a user cluster, its recommended to have individual credentials for each user cluster. -#### Permissions +### Permissions -The vsphere user has to have to following permissions on the correct resources: +The VSphere user must have the following permissions on the correct resources -**Seed Cluster** +### **Seed Cluster** * Role `k8c-storage-vmfolder-propagate` * Granted at **VM Folder** and **Template Folder**, propagated @@ -64,25 +62,25 @@ The vsphere user has to have to following permissions on the correct resources: * Change Configuration * Add existing disk * Add new disk - * Add or remove device + * Add or remove the device * Remove disk * Folder * Create folder - * Delete dolder + * Delete folder * Role `k8c-storage-datastore-propagate` * Granted at **Datastore**, propagated * Permissions * Datastore * Allocate space - * Low level file operations + * Low-level file operations * Role `Read-only` \(predefined\) * Granted at …, **not** propagated * Datacenter -**User Cluster** +### **User Cluster** * Role `k8c-user-vcenter` - * Granted at **vcenter** level, **not** propagated + * Granted at **vcentre** level, **not** propagated * Needed to customize VM during provisioning * Permissions * VirtualMachine @@ -90,13 +88,13 @@ The vsphere user has to have to following permissions on the correct resources: * Modify customization specification * Read customization specifications * Role `k8c-user-datacenter` - * Granted at **datacenter** level, **not** propagated + * Granted at **datacentre** level, **not** propagated * Needed for cloning the template VM \(obviously this is not done in a folder at this time\) * Permissions * Datastore * Allocate space * Browse datastore - * Low level file operations + * Low-level file operations * Remove file * vApp * vApp application configuration @@ -108,7 +106,7 @@ The vsphere user has to have to following permissions on the correct resources: * Inventory * Create from existing * Role `k8c-user-cluster-propagate` - * Granted at **cluster** level, propagated + * Granted at the **cluster** level, propagated * Needed for upload of `cloud-init.iso` \(Ubuntu and CentOS\) or defining the Ignition config into Guestinfo \(CoreOS\) * Permissions * Host @@ -117,9 +115,9 @@ The vsphere user has to have to following permissions on the correct resources: * Local operations * Reconfigure virtual machine * Resource - * Assign virtual machine to resource pool - * Migrate powered off virtual machine - * Migrate powered on virtual machine + * Assign virtual machine to the resource pool + * Migrate powered off the virtual machine + * Migrate powered-on virtual machine * vApp * vApp application configuration * vApp instance configuration @@ -129,12 +127,12 @@ The vsphere user has to have to following permissions on the correct resources: * Network * Assign network * Role `k8c-user-datastore-propagate` - * Granted at **datastore / datastore cluster** level, propagated + * Granted at **datastore/datastore cluster** level, propagated * Permissions * Datastore * Allocate space * Browse datastore - * Low level file operations + * Low-level file operations * Role `k8c-user-folder-propagate` * Granted at **VM Folder** and **Template Folder** level, propagated * Needed for managing the node VMs @@ -154,7 +152,7 @@ The vsphere user has to have to following permissions on the correct resources: The described permissions have been tested with vSphere 6.7 and might be different for other vSphere versions. -**Volume Detach Bug** +### **Volume Detach Bug** After a node is powered-off, the Kubernetes vSphere driver doesn’t detach disks associated with PVCs mounted on that node. This makes it impossible to reschedule pods using these PVCs until the disks are manually detached in vCenter. diff --git a/infra-specifications/why-kubernetes-for-digit.md b/deploy-flow/why-kubernetes-for-digit.md similarity index 77% rename from infra-specifications/why-kubernetes-for-digit.md rename to deploy-flow/why-kubernetes-for-digit.md index 62546855..b41a2926 100644 --- a/infra-specifications/why-kubernetes-for-digit.md +++ b/deploy-flow/why-kubernetes-for-digit.md @@ -1,30 +1,28 @@ ---- -description: >- - Why kubernetes is required and what are the key advantages that it brings to - run a large containerised platform like DIGIT in production environments. ---- - # Why Kubernetes for DIGIT -## The Big Why +### Overview + +This page explains why Kubernetes is required. It deep dives into the key benefits of using Kubernetes to run a large containerized platform like DIGIT in production environments. + +### The Big Why -Kubernetes project started in year the 2014 with [more than a decade of experience of running production workloads at Google](https://queue.acm.org/detail.cfm?id=2898444). Kubernetes has now become the de facto standard for deploying containerized applications at scale in private, public and hybrid cloud environments. The largest public cloud platforms [AWS](https://aws.amazon.com/ecs/), [Google Cloud](https://cloud.google.com/kubernetes-engine/), [Azure](https://azure.microsoft.com/en-us/services/container-service/), [IBM Cloud](https://www.ibm.com/cloud/container-service) and [Oracle Cloud](https://cloud.oracle.com/containers) now provide managed services for Kubernetes. A few years back RedHat, Mesosphere, Pivotal, VMware, Nutanix completely redesigned their implementation with Kubernetes and collaborated with the Kubernetes community for implementing the next generation container platform with incorporated key features of Kubernetes such as container grouping, overlay networking, layer 4 routing, secrets, etc. Today many organizations & technology providers adapting kubernetes at a rapid phase. +Kubernetes project started in the year 2014 with [more than a decade of experience of running production workloads at Google](https://queue.acm.org/detail.cfm?id=2898444). Kubernetes has now become the de facto standard for deploying containerized applications at scale in private, public and hybrid cloud environments. The largest public cloud platforms [AWS](https://aws.amazon.com/ecs/), [Google Cloud](https://cloud.google.com/kubernetes-engine/), [Azure](https://azure.microsoft.com/en-us/services/container-service/), [IBM Cloud](https://www.ibm.com/cloud/container-service) and [Oracle Cloud](https://cloud.oracle.com/containers) now provide managed services for Kubernetes. A few years back RedHat, Mesosphere, Pivotal, VMware, Nutanix completely redesigned their implementation with Kubernetes and collaborated with the Kubernetes community for implementing the next generation container platform with incorporated key features of Kubernetes such as container grouping, overlay networking, layer 4 routing, secrets, etc. Today many organizations & technology providers adapting kubernetes at a rapid phase. -## Kubernetes Architecture +### Kubernetes Architecture ![Figure 1: Kubernetes Architecture](../.gitbook/assets/image%20%2865%29.png) One of the fundamental design decisions which have been taken by this impeccable cluster manager is its ability to deploy existing applications that run on VMs without any changes to the application code. On the high level, any application that runs on VMs can be deployed on Kubernetes by simply containerizing its components. This is achieved by its core features; container grouping, container orchestration, overlay networking, container-to-container routing with layer 4 virtual IP based routing system, service discovery, support for running daemons, deploying stateful application components, and most importantly the ability to extend the container orchestrator for supporting complex orchestration requirements. -On very high level Kubernetes provides a set of dynamically scalable hosts for running workloads using containers and uses a set of management hosts called masters for providing an API for managing the entire container infrastructure. +On very high-level Kubernetes provides a set of dynamically scalable hosts for running workloads using containers and uses a set of management hosts called masters for providing an API for managing the entire container infrastructure. That's just a glimpse of what Kubernetes provides out of the box. In the next few sections will go through its core features and explain how it can help applications to be deployed on it in no time. -## Application Deployment Model +### Application Deployment Model ![Figure 2: Kubernetes Application Deployment Model](../.gitbook/assets/image%20%2867%29.png) -The above figure illustrates the high level application deployment model on Kubernetes. It uses a resource called [ReplicaSet](https://kubernetes.io/docs/concepts/workloads/controllers/replicaset/) for orchestrating containers. A ReplicaSet can be considered as a YAML or a JSON based metadata file which defines the container images, ports, the number of replicas, activation health checks, liveness health checks, environment variables, volume mounts, security rules, etc required for creating and managing the containers. Containers are always created on Kubernetes as groups called [Pods](https://kubernetes.io/docs/concepts/workloads/pods/pod/) which is again a Kubernetes metadata definition or a resource. Each pod allows sharing the file system, network interfaces, operating system users, etc among the containers using Linux namespaces, cgroups, and other kernel features. The ReplicaSets can be managed by another high level resource called [Deployments](https://kubernetes.io/docs/concepts/workloads/controllers/deployment/) for providing features for rolling out updates and handling their rollbacks. +The above figure illustrates the high-level application deployment model on Kubernetes. It uses a resource called [ReplicaSet](https://kubernetes.io/docs/concepts/workloads/controllers/replicaset/) for orchestrating containers. A ReplicaSet can be considered as a YAML or a JSON based metadata file which defines the container images, ports, the number of replicas, activation health checks, liveness health checks, environment variables, volume mounts, security rules, etc required for creating and managing the containers. Containers are always created on Kubernetes as groups called [Pods](https://kubernetes.io/docs/concepts/workloads/pods/pod/) which is again a Kubernetes metadata definition or a resource. Each pod allows sharing the file system, network interfaces, operating system users, etc among the containers using Linux namespaces, cgroups, and other kernel features. The ReplicaSets can be managed by another high-level resource called [Deployments](https://kubernetes.io/docs/concepts/workloads/controllers/deployment/) for providing features for rolling out updates and handling their rollbacks. A containerized application can be deployed on Kubernetes using a deployment definition by executing a simple CLI command as follows: @@ -32,11 +30,11 @@ A containerized application can be deployed on Kubernetes using a deployment def kubectl run --image= --port= ``` -## Service Discovery & Load Balancing +### Service Discovery & Load Balancing ![Figure 3: Kubernetes Service Discovery & Load Balancing Model](../.gitbook/assets/image%20%2866%29.png) -One of the key features of Kubernetes is its service discovery and internal routing model provided using SkyDNS and layer 4 virtual IP based routing system. These features provide internal routing for application requests using services. A set of pods created via a replica set can be load balanced using a service within the cluster network. The services get connected to pods using selector labels. Each service will get assigned a unique IP address, a hostname derived from its name and route requests among the pods in round robin manner. The services will even provide IP-hash based routing mechanism for applications which may require session affinity. A service can define a collection of ports and the properties defined for the given service will apply to all the ports in the same way. Therefore, in a scenario where session affinity is only needed for a given port where all the other ports required to use round robin based routing, multiple services may need to be used. +One of the key features of Kubernetes is its service discovery and internal routing model provided using SkyDNS and layer 4 virtual IP based routing system. These features provide internal routing for application requests using services. A set of pods created via a replica set can be load balanced using a service within the cluster network. The services get connected to pods using selector labels. Each service will get assigned a unique IP address, a hostname derived from its name and route requests among the pods in round-robin manner. The services will even provide IP-hash based routing mechanism for applications which may require session affinity. A service can define a collection of ports and the properties defined for the given service will apply to all the ports in the same way. Therefore, in a scenario where session affinity is only needed for a given port where all the other ports required to use round-robin based routing, multiple services may need to be used. ### How Services Internally Work @@ -44,17 +42,17 @@ One of the key features of Kubernetes is its service discovery and internal rout Kubernetes services have been implemented using a component called kube-proxy. A kube-proxy instance runs in each node and provides three proxy modes: Userspace, iptables and IPVS. The current default is iptables. -In the first proxy mode: userspace, kube-proxy itself will act as a proxy server and delegate requests accepted by an iptable rule to the backend pods. In this mode kube-proxy will operate in the userspace and will add an additional hop to the message flow. +In the first proxy mode: userspace, kube-proxy itself will act as a proxy server and delegate requests accepted by an iptable rule to the backend pods. In this mode, kube-proxy will operate in the userspace and will add an additional hop to the message flow. In the second proxy mode: iptables, the kube-proxy will create a collection of iptable rules for forwarding incoming requests from the clients directly to the ports of backend pods on the network layer without adding an additional hop in the middle. This proxy mode is much faster than the first mode because of operating in the kernel space and not adding an additional proxy server in the middle. -The third proxy mode was [added in Kubernetes v1.8](https://github.com/kubernetes/kubernetes/issues/44063) which is much similar to the second proxy mode and it makes use of an [IPVS](http://www.linuxvirtualserver.org/software/ipvs.html) based virtual server for routing requests without using iptable rules. IPVS is a transport layer load balancing feature which is available in the Linux kernel based on Netfilter and provides a collection of load balancing algorithms. The main reason for using IPVS over iptables is the performance overhead of syncing proxy rules when using iptables. When thousands of services are created, updating iptable rules takes a considerable amount of time compared to few milliseconds with IPVS. Moreover, IPVS uses a hash table for looking up the proxy rules over sequential scans with iptables. More information on introduction of IPVS proxy mode can be found in “[Scaling Kubernetes to Support 50,000 Services](https://docs.google.com/presentation/d/1BaIAywY2qqeHtyGZtlyAp89JIZs59MZLKcFLxKE6LyM/edit#slide=id.p3)” presentation done by Huawei at KubeCon 2017. +The third proxy mode was [added in Kubernetes v1.8](https://github.com/kubernetes/kubernetes/issues/44063) which is much similar to the second proxy mode and it makes use of an [IPVS](http://www.linuxvirtualserver.org/software/ipvs.html) based virtual server for routing requests without using iptable rules. IPVS is a transport layer load balancing feature which is available in the Linux kernel based on Netfilter and provides a collection of load balancing algorithms. The main reason for using IPVS over iptables is the performance overhead of syncing proxy rules when using iptables. When thousands of services are created, updating iptable rules takes a considerable amount of time compared to a few milliseconds with IPVS. Moreover, IPVS uses a hash table for looking up the proxy rules over sequential scans with iptables. More information on the introduction of IPVS proxy mode can be found in “[Scaling Kubernetes to Support 50,000 Services](https://docs.google.com/presentation/d/1BaIAywY2qqeHtyGZtlyAp89JIZs59MZLKcFLxKE6LyM/edit#slide=id.p3)” presentation done by Huawei at KubeCon 2017. -## Internal/External Routing Separation +### Internal/External Routing Separation ![Figure 5: Kubernetes Internal/External Routing Separation](../.gitbook/assets/image%20%2871%29.png) -Kubernetes services can be exposed to the external networks in two main ways. The first is using node ports by exposing dynamic ports on the nodes that forward traffic to the service ports. The second is using a load balancer configured via an ingress controller which can delegate requests to the services by connecting to the same overlay network. An ingress controller is a background process which may run in a container which listens to the Kubernetes API, dynamically configure and reloads a given load balancer according to a given set of ingresses. An ingress defines the routing rules based on hostnames and context paths using services. +Kubernetes services can be exposed to external networks in two main ways. The first is using node ports by exposing dynamic ports on the nodes that forward traffic to the service ports. The second is using a load balancer configured via an ingress controller which can delegate requests to the services by connecting to the same overlay network. An ingress controller is a background process which may run in a container which listens to the Kubernetes API, dynamically configure and reloads a given load balancer according to a given set of ingresses. An ingress defines the routing rules based on hostnames and context paths using services. Once an application is deployed on Kubernetes using `kubectl run` command, it can be exposed to the external network via a load balancer as follows: @@ -64,15 +62,15 @@ kubectl expose deployment --type=LoadBalancer --name= The above command will create a service of load balancer type and map it to the pods using the same selector label created when the pods were created. As a result, depending on how the Kubernetes cluster has been configured a load balancer service on the underlying infrastructure will get created for routing requests for the given pods either via the service or directly. -## Usage of Persistent Volumes +### Usage of Persistent Volumes ![Figure 6: Kubernetes Persistent Volume Binding Models](../.gitbook/assets/image%20%2870%29.png) -Applications that require persisting data on the filesystem may use volumes for mounting storage devices to ephemeral containers similar to how volumes are used with VMs. Kubernetes has properly designed this concept by loosely coupling physical storage devices with containers by introducing an intermediate resource called persistent volume claims \(PVCs\). A PVC defines the disk size, disk type \(ReadWriteOnce, ReadOnlyMany, ReadWriteMany\) and dynamically links a storage device to a volume defined against a pod. The binding process can either be done in a static way using PVs or dynamically be using a persistent storage provider. In both approaches, a volume will get linked to a PV one to one and depend on the configuration given data will be preserved even if the pods get terminated. According to the disk type used multiple pods will be able to connect to the same disk and read/write. +Applications that require persisting data on the filesystem may use volumes for mounting storage devices to ephemeral containers similar to how volumes are used with VMs. Kubernetes has properly designed this concept by loosely coupling physical storage devices with containers by introducing an intermediate resource called persistent volume claims \(PVCs\). A PVC defines the disk size, disk type \(ReadWriteOnce, ReadOnlyMany, ReadWriteMany\) and dynamically links a storage device to a volume defined against a pod. The binding process can either be done in a static way using PVs or dynamically by using a persistent storage provider. In both approaches, a volume will get linked to a PV one to one and depend on the configuration given data will be preserved even if the pods get terminated. According to the disk type used multiple pods will be able to connect to the same disk and read/write. -Disks that support ReadWriteOnce will only be able to connect to a single pod and will not be able to share among multiple pods at the same time. However, disks that support ReadOnlyMany will be able to share among multiple pods at the same time in read only mode. In contrast, as the name implies disks with ReadWriteMany support can be connected to multiple pods for sharing data in read and write mode. Kubernetes provides [a collection of volume plugins](https://kubernetes.io/docs/concepts/storage/persistent-volumes/#types-of-persistent-volumes) for supporting storage services available on public cloud platforms such as AWS EBS, GCE Persistent Disk, Azure File, Azure Disk and many other well-known storage systems such as NFS, Glusterfs, iSCSI, Cinder, etc. +Disks that support ReadWriteOnce will only be able to connect to a single pod and will not be able to share among multiple pods at the same time. However, disks that support ReadOnlyMany will be able to share among multiple pods at the same time in read-only mode. In contrast, as the name implies disks with ReadWriteMany support can be connected to multiple pods for sharing data in read and write mode. Kubernetes provides [a collection of volume plugins](https://kubernetes.io/docs/concepts/storage/persistent-volumes/#types-of-persistent-volumes) for supporting storage services available on public cloud platforms such as AWS EBS, GCE Persistent Disk, Azure File, Azure Disk and many other well-known storage systems such as NFS, Glusterfs, iSCSI, Cinder, etc. -## Deploying Daemons on Nodes +### Deploying Daemons on Nodes ![Figure 7: Deploying Daemons on Kubernetes Nodes](../.gitbook/assets/image%20%2872%29.png) @@ -83,13 +81,13 @@ Kubernetes provides a resource called DaemonSets for running a copy of a pod in * A log collection daemon such as `fluentd` or `logstash` to be run on every node for collecting container and Kubernetes component logs. * An ingress controller pod to be run on a collection of nodes for providing external routing. -## Deploying Stateful Distributed Systems +### Deploying Stateful Distributed Systems ![Figure 8: Stateful Component Deployment Model](../.gitbook/assets/image%20%2873%29.png) One of the most difficult tasks of containerizing applications is the process of designing the deployment architecture of stateful distributed components. Stateless components can be easily containerized as they may not have a predefined startup sequence, clustering requirements, point to point TCP connections, unique network identifiers, graceful startup and termination requirements, etc. Systems such as databases, big data analysis systems, distributed key/value stores, and message brokers, may have complex distributed architectures that may require above features. Kubernetes introduced StatefulSets resource for supporting such complex requirements. -On high level StatefulSets are similar to ReplicaSets except that it provides the ability to handle the startup sequence of pods, uniquely identify each pod for preserving its state while providing following characteristics: +On high-level StatefulSets are similar to ReplicaSets except that it provides the ability to handle the startup sequence of pods, uniquely identify each pod for preserving its state while providing the following characteristics: * Stable, unique network identifiers. * Stable, persistent storage. @@ -99,15 +97,15 @@ On high level StatefulSets are similar to ReplicaSets except that it provides th In the above, stable refers to preserving the network identifiers and persistent storage across pod rescheduling. Unique network identifiers are provided by using headless services as shown in the above figure. Kubernetes has provided examples of StatefulSets for deploying [Cassandra](https://kubernetes.io/docs/tutorials/stateful-application/cassandra/), and [Zookeeper](https://kubernetes.io/docs/tutorials/stateful-application/zookeeper/) in a distributed manner. -## Running Background Jobs +### Running Background Jobs In addition to ReplicaSets and StatefulSets Kubernetes provides two additional controllers for running workloads in the background called [Jobs](https://kubernetes.io/docs/concepts/workloads/controllers/jobs-run-to-completion/) and [CronJobs](https://kubernetes.io/docs/concepts/workloads/controllers/cron-jobs/). The difference between Jobs and CronJobs is that Jobs execute once and terminates whereas CronJobs get executed periodically by a given time interval similar to standard Linux cron jobs. -## Deploying Databases +### Deploying Databases -Deploying databases on container platforms for production usage would be a slightly difficult task than deploying applications due to their requirements for clustering, point to point connections, replication, shading, managing backups, etc. As mentioned previously StatefulSets have been designed specifically for supporting such complex requirements and there are a couple of options for running [PostgreSQL](https://kubernetes.io/blog/2017/02/postgresql-clusters-kubernetes-statefulsets/), and [MongoDB](https://kubernetes.io/blog/2017/01/running-mongodb-on-kubernetes-with-statefulsets/) clusters on Kubernetes today. YouTube’s database clustering system [Vitess](https://vitess.io/getting-started/) which is now a CNCF project would be a great option for running MySQL at scale on Kubernetes with shading. By saying that it would be better to note that those options are still at very early stages and if an existing production grade database system is available on the given infrastructure such as RDS on AWS, Cloud SQL on GCP, or on-premise database cluster it might be better to choose one of those options considering the installation complexity and maintenance overhead. +Deploying databases on container platforms for production usage would be a slightly difficult task than deploying applications due to their requirements for clustering, point to point connections, replication, shading, managing backups, etc. As mentioned previously StatefulSets has been designed specifically for supporting such complex requirements and there are a couple of options for running [PostgreSQL](https://kubernetes.io/blog/2017/02/postgresql-clusters-kubernetes-statefulsets/), and [MongoDB](https://kubernetes.io/blog/2017/01/running-mongodb-on-kubernetes-with-statefulsets/) clusters on Kubernetes today. YouTube’s database clustering system [Vitess](https://vitess.io/getting-started/) which is now a CNCF project would be a great option for running MySQL at scale on Kubernetes with shading. By saying that it would be better to note that those options are still at very early stages and if an existing production-grade database system is available on the given infrastructure such as RDS on AWS, Cloud SQL on GCP, or on-premise database cluster it might be better to choose one of those options considering the installation complexity and maintenance overhead. -## Configurations Management +### Configurations Management Containers generally use environment variables for parameterizing their runtime configurations. However, typical enterprise applications use a considerable amount of configuration files for providing static configurations required for a given deployment. Kubernetes provides a fabulous way of managing such configuration files using a simple resource called ConfigMaps without bundling them into the container images. ConfigMaps can be created using directories, files or literal values using following CLI command: @@ -116,9 +114,9 @@ kubectl create configmap # map-name: name of the config map # data-source: directory, file or literal value ``` -Once a ConfigMap is created, it can be mounted to a pod using a volume mount. With this loosely coupled architecture, configurations of an already running system can be updated seamlessly just by updating the relevant ConfigMap and executing a rolling update process which I will explain in one of the next sections. I might be important to note that currently ConfigMaps do not support nested folders, therefore if there are configuration files available in a nested directory structure of the application, a ConfigMap would need to be created for each directory level. +Once a ConfigMap is created, it can be mounted to a pod using a volume mount. With this loosely coupled architecture, configurations of an already running system can be updated seamlessly just by updating the relevant ConfigMap and executing a rolling update process which I will explain in one of the next sections. I might be important to note that currently ConfigMaps does not support nested folders, therefore if there are configuration files available in a nested directory structure of the application, a ConfigMap would need to be created for each directory level. -## Credentials Management +### Credentials Management Similar to ConfigMaps Kubernetes provides another valuable resource called Secrets for managing sensitive information such as passwords, OAuth tokens, and ssh keys. Otherwise updating that information on an already running system might require rebuilding the container images. @@ -133,11 +131,11 @@ $ kubectl create secret generic app-credentials --from-file=./username.txt --fro Once a secret is created, it can be read by a pod either using environment variables or volume mounts. Similarly, any other type of sensitive information can be injected into pods using the same approach. -## Rolling Out Updates +### Rolling Out Updates ![Figure 9: Kubernetes Rolling Update Process](https://storage.googleapis.com/cdn.thenewstack.io/media/2017/11/5bddc931-ramped.gif) -The above animated-image illustrates how application updates can be rolled out for an already running application using blue/green deployment method without having to take a system downtime. This is another invaluable feature of Kubernetes which allows applications to seamlessly roll out security updates and backward compatible changes without much effort. If the changes are not backward compatible, a manual blue/green deployment might need to be executed using a separate deployment definition. +The above animated-image illustrates how application updates can be rolled out for an already running application using blue/green deployment method without having to take a system downtime. This is another invaluable feature of Kubernetes which allows applications to seamlessly roll out security updates and backwards compatible changes without much effort. If the changes are not backwards compatible, a manual blue/green deployment might need to be executed using a separate deployment definition. This approach allows a rollout to be executed for updating a container image using a simple CLI command: @@ -155,7 +153,7 @@ deployment "" successfully rolled out Using the same CLI command `kubectl set image deployment` an update can be rolled back to a previous state. -## Autoscaling +### Autoscaling ![Image for post](https://miro.medium.com/max/60/1*MdH5uByqV1uZmH-9qF-L1Q.png?q=20) @@ -169,7 +167,7 @@ kubectl scale --replicas= deployment/ As shown in the above figure this functionality can be extended by adding another resource called [Horizontal Pod Autoscaler \(HPA\)](https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale/) against a deployment for dynamically scaling the pods based on their actual resource usage. The HPA will monitor the resource usage of each pod via the resource metrics API and inform the deployment to change the replica count of the ReplicaSet accordingly. Kubernetes uses an upscale delay and a downscale delay for avoiding thrashing which could occur due to frequent resource usage fluctuations in some situations. Currently, HPA only provides support for scaling based on CPU usage. If needed custom metrics can also be plugged in via the [Custom Metrics API](https://github.com/kubernetes/community/blob/master/contributors/design-proposals/instrumentation/custom-metrics-api.md) depending on the nature of the application. -## Package Management +### Package Management ![Image for post](https://miro.medium.com/max/60/1*47vHS7ZkOF7tp-hRBp3A-w.png?q=20) @@ -177,15 +175,15 @@ As shown in the above figure this functionality can be extended by adding anothe Figure 11: Helm and Kubeapps Hub -The Kubernetes community initiated a separate project for implementing a package manager for Kubernetes called Helm. This allows Kubernetes resources such as deployments, services, configmaps, ingresses, etc to be templated and packaged using a resource called chart and allow them to be configured at the installation time using input parameters. More importantly, it allows existing charts to be reused when implementing installation packages using dependencies. Helm repositories can be hosted in public and private cloud environments for managing application charts. Helm provides a CLI for installing applications from a given Helm repository into a selected Kubernetes environment. +The Kubernetes community initiated a separate project for implementing a package manager for Kubernetes called Helm. This allows Kubernetes resources such as deployments, services, config maps, ingresses, etc to be templated and packaged using a resource called chart and allow them to be configured at the installation time using input parameters. More importantly, it allows existing charts to be reused when implementing installation packages using dependencies. Helm repositories can be hosted in public and private cloud environments for managing application charts. Helm provides a CLI for installing applications from a given Helm repository into a selected Kubernetes environment. A wide range of stable Helm charts for well-known software applications can be found in it’s [Github repository](https://github.com/kubernetes/charts/tree/master/stable) and also in the central Helm server: [Kubeapps Hub](https://hub.kubeapps.com/). -## Conclusion +### Conclusion -Kubernetes has been designed with over a decade of experience on running containerized applications at scale at Google. It has been already adopted by the largest public cloud vendors, technology providers and currently being embraced by most of the software vendors and enterprises as this article being written. It has even lead to the inception of the Cloud Native Computing Foundation \(CNCF\) in the year 2015, was the first project to graduate under CNCF, and started streamlining the container ecosystem together with other container related projects such as CNI, Containerd, Envoy, Fluentd, gRPC, Jagger, Linkerd, Promethesus, rkt and Vitess. The key reasons for its popularity and to be endorsed at such level might be its flawless design, collaborations with industry leaders, making it open source, always being open to ideas and contributions. +Kubernetes has been designed with over a decade of experience on running containerized applications at scale at Google. It has been already adopted by the largest public cloud vendors, technology providers and currently being embraced by most of the software vendors and enterprises as this article is written. It has even lead to the inception of the Cloud Native Computing Foundation \(CNCF\) in the year 2015, was the first project to graduate under CNCF, and started streamlining the container ecosystem together with other container-related projects such as CNI, Containers, Envoy, Fluentd, gRPC, Jagger, Linkerd, Prometheus, RKT and Vitess. The key reasons for its popularity and to be endorsed at such level might be its flawless design, collaborations with industry leaders, making it open-source, always being open to ideas and contributions. -## References +### References \[1\] What is Kubernetes: [https://kubernetes.io/docs/concepts/overview/what-is-kubernetes/](https://kubernetes.io/docs/concepts/overview/what-is-kubernetes/) diff --git a/devops/README.md b/devops/README.md index 669551b7..b00224e8 100644 --- a/devops/README.md +++ b/devops/README.md @@ -1,6 +1,13 @@ # DIGIT DevOps -[Sources/resources](cicd.md)/ +This section contains docs and information resources that guide you through the key DevOps concepts and its role in managing the DIGIT platform. + +* [Skills Needed](devops-skills.md) +* [Resource Requests & Limits](resource-requests-and-limits.md) +* [Readiness & Liveness](probes.md) +* [Troubleshooting](troubleshooting/) +* [CI/CD](cicd.md) +* [Security Practices](security-practices.md) /Install DIGIT diff --git a/devops/cicd.md b/devops/cicd.md index 126f7f25..612a4277 100644 --- a/devops/cicd.md +++ b/devops/cicd.md @@ -1,15 +1,10 @@ ---- -description: >- - While there are many DIGIT services and the development code is part of - various git repos, how to create a CI/CD pipeline. Here you also understand - **cicd-as-service** which is open sourced. ---- - # CI/CD -{% embed url="https://www.youtube.com/watch?v=87RWvE4Jgpw" %} +### Overview +Since there are many DIGIT services and the development code is part of various git repos, you need to understand the concept of **cicd-as-service** which is open sourced. This page also guides you through the process of creating a CI/CD pipeline. +{% embed url="https://www.youtube.com/watch?v=87RWvE4Jgpw" %} **As a developer -** To integrate any new service/app to the CI/CD below is the starting point: @@ -21,8 +16,6 @@ Once the desired service is ready for the integration: decide the service name, https://github.com/egovernments/core-services/blob/master/build/build-config.yml ``` -\`\` - This file contains the below details which are used for creating the automated Jenkins pipeline job for your newly created service. ```text @@ -34,8 +27,6 @@ This file contains the below details which are used for creating the automated J # image-name: < Docker image name > ``` - - While integrating a new service/app, the above content needs to be added in the build-config.yml file of that app repository. For example: If we are on-boarding a new service called **egov-test,** then the build-config.yml should be added as mentioned below. ```text @@ -61,25 +52,23 @@ config: image-name: egov-test-db ``` -**Note -** **If a new repository is created then the build-config.yml should be created under build folder and then the config values are added to it.** +**Note -** **If a new repository is created then the build-config.yml should be created under the build folder and then the config values are added to it.** **The git repository URL is then added to the Job Builder parameters** When the Jenkins Job => job builder is executed the CI Pipeline gets created automatically based on the above details in build-config.yml. Eg: **egov-test** job will be created under **core-services** folder in Jenkins because the “build-config was edited under core-services” And it should be the “master” branch only. Once the pipeline job is created, it can be executed for any feature branch with build parameters \(Specifying which branch to be built – master or any feature branch\). -As a result of the pipeline execution the respective app/service docker image will be built and pushed to the docker repository. +As a result of the pipeline execution, the respective app/service docker image will be built and pushed to the Docker repository. -**Continuous Integration \(CI\)** +### **Continuous Integration \(CI\)** The Jenkins CI pipeline is configured and managed 'as code'. [New Service Integration - Example](https://digit-discuss.atlassian.net/wiki/spaces/DOPS/pages/111673399/New+Service+Integration+-+Example) URL - [https://builds.egovernments.org/](https://builds.egovernments.org/) -**Job Builder** – Job Builder is a Generic Jenkins job which creates the Jenkins pipeline automatically which are then used to build the application, create the docker image of it and push the image to docker repository. The Job Builder job require the git repository URL as a parameter. It clones the respective git repository and reads the **build/**[**build-config.yml**](https://github.com/egovernments/core-services/blob/master/build/build-config.yml) file for each git repository and uses it to create the service build job. +**Job Builder** – Job Builder is a Generic Jenkins job which creates the Jenkins pipeline automatically which are then used to build the application, create the docker image of it and push the image to docker repository. The Job Builder job requires the git repository URL as a parameter. It clones the respective git repository and reads the **build/**[**build-config.yml**](https://github.com/egovernments/core-services/blob/master/build/build-config.yml) file for each git repository and uses it to create the service build job. -‌ - -**Check git repository URL is available in** [**ci.yaml**](https://github.com/egovernments/eGov-infraOps/blob/master/helm/environments/ci.yaml)[‌](https://github.com/egovernments/eGov-infraOps/blob/master/helm/environments/ci.yaml)‌ +‌**Check git repository URL is available in** [**ci.yaml**](https://github.com/egovernments/eGov-infraOps/blob/master/helm/environments/ci.yaml)[‌](https://github.com/egovernments/eGov-infraOps/blob/master/helm/environments/ci.yaml)‌ ![](../.gitbook/assets/0%20%281%29.png) @@ -87,11 +76,9 @@ If git repository URL is available build the Job-Builder Job ![](../.gitbook/assets/1%20%281%29.png) -If git repository URL is not available ask devops team to add. - -\*\*\*\* +If git repository URL is not available ask the devops team to add. -**Continuous Deployment \(CD\):**‌ +### **Continuous Deployment \(CD\)**‌ The services deployed and managed **on a Kubernetes cluster** in cloud platforms like **AWS, Azure, GCP, OpenStack, etc.** Here, we use **helm charts** to manage and generate the **Kubernetes manifest files** and use them for further deployment to respective **Kubernetes cluster**. Each service is created as charts which will have the below-mentioned files in it. @@ -104,8 +91,6 @@ values.yaml # The default configuration values for this chart templates/ # A directory of templates that, when combined with values, will generate valid Kubernetes manifest files. ``` - - To deploy a new service, we need to create the helm chart for it. The chart should be created under the **charts/helm** directory in **eGov-infraOps** repository. ```text @@ -114,15 +99,15 @@ Github repository https://github.com/egovernments/Train-InfraOps ``` -We have an automatic helm chart generator utility which needs to be installed on local machine, the utility will prompt for user inputs about the newly developed service\( app specifications\) for creating the helm chart. The requested chart with the configuration values \(created based on the inputs provided\) will be created for the user. +We have an automatic helm chart generator utility which needs to be installed on the local machine, the utility will prompt for user inputs about the newly developed service\( app specifications\) for creating the helm chart. The requested chart with the configuration values \(created based on the inputs provided\) will be created for the user. ‌ _**Name of the service? test-service Application Type? NA - Kubernetes health checks to be enabled ? Yes + Kubernetes health checks to be enabled? Yes Flyway DB migration container necessary? No Expose service to the internet? Yes - Route through API gateway \[zuul\] ? No - Context path ? hello**_‌ + Route through API gateway \[zuul\] No + Context path? hello**_‌ The generated chart will have the following files. @@ -134,11 +119,9 @@ create templates/service.yaml create templates/ingress.yaml ``` -\*\*\*\* - -This chart can also be modified further based on the user requirements. +This chart can also be modified further based on user requirements. -The Deployment of manifests to the Kubernetes cluster is made very simple and easy. We have Jenkins Jobs for each state and environment specific. We need to provide the image name or the service name in the respective Jenkins deployment job. +The Deployment of manifests to the Kubernetes cluster is made very simple and easy. We have Jenkins Jobs for each state and environment-specific. We need to provide the image name or the service name in the respective Jenkins deployment job. ![](../.gitbook/assets/2%20%281%29.png) @@ -148,13 +131,11 @@ Enter a caption for this image \(optional\) Enter a caption for this image \(optional\) -‌ - -The deployment Jenkins job internally performs the following operations,‌ +‌The deployment Jenkins job internally performs the following operations,‌ * Reads the image name or the service name given and finds the chart that is specific to it. * Generates the Kubernetes manifests files from the chart using helm template engine. -* Execute the deployment manifest with the specified docker image\(s\) to the Kubernetes cluster +* Execute the deployment manifest with the specified docker image\(s\) to the Kubernetes cluster. diff --git a/devops/devops-skills.md b/devops/devops-skills.md new file mode 100644 index 00000000..9c10a651 --- /dev/null +++ b/devops/devops-skills.md @@ -0,0 +1,313 @@ +--- +description: >- + Looking at these requirements for a DevOps engineer, it is pretty clear that + one should have a variety of skills to manage DIGIT DevOps. +--- + +# Skills Needed + +### Hiring DevOps Resources + +Anyone involved in hiring DevOps engineers will realize that it is hard to find prospective candidates who have all the skills listed in this section. + +Ultimately, the skill set needed for an incoming DevOps engineer would depend on the current and short-term focus of the operations team. A brand new team that is rolling out a new software service would require someone with good experience in infrastructure provisioning, deployment automation, and monitoring. A team that supports a stable product might require the service of an expert who could migrate home-grown automation projects to tools and processes around standard configuration management and continuous integration tools. + +DevOps practice is a glue between engineering disciplines. An experienced DevOps engineer would end up working in a very broad swath of technology landscapes that overlaps with software development, system integration, and operations engineering. + +An experienced DevOps engineer would be able to describe most of the technologies that is described in the following sections. This is a comprehensive list of DevOps skills for comparing one’s expertise and a reference template for acquiring new skills. + +In theory, a template like this should be used only for assessing the current experience of a prospective hire. The needed skills can be picked up on the jobs that demand deep knowledge in certain areas. Therefore, the focus should be to hire smart engineers who have a track record of picking up new skills, rolling out innovative projects at work, and contributing to reputed open-source projects. + +### 1. Knowledge of Infrastructure + +A DevOps engineer should have a good understanding of both classic \(data centre-based\) and cloud infrastructure components, even if the team has a dedicated infrastructure team. + +#### **A. Classic Infrastructure** + +This involves how real hardware \(servers and storage devices\) are racked, networked, and accessed from both the corporate network and the internet. It also involves the provisioning of shared storage to be used across multiple servers and the methods available for that, as well as infrastructure and methods for load balancing. + +#### **Virtualization Basics** + +* Hypervisors. +* Virtual machines. +* Object storage. +* Running virtual machines on PC and Mac \(Vagrant, VMWare, etc.\). + +### **B. Cloud Infrastructure** + +Cloud infrastructure has to do with core cloud computing and storage components as they are implemented in one of the popular virtualization technologies \(VMWare or OpenStack\). It also involves the idea of elastic infrastructure and options available to implement it. + +#### **Networking Basics** + +* Network layers +* Routers, domain controllers, etc. +* Networks and subnets +* IP address +* VPN +* DNS +* Firewall +* IP tables +* Network access between applications \(ACL\) +* Networking in the cloud \(i.e., Amazon AWS\) + +#### **Load Balancing** + +* Load balancing infrastructure and methods +* Geographical load balancing +* Understanding of CDN +* Load balancing in the cloud + +### 2. DevOps Toolchain + +A DevOps engineer should have experience using specialized tools for implementing various DevOps processes. While Jenkins, Dockers, Kubernetes, Terraform, Ansible, and the like are known to most DevOps guys, other tools might be obscure or not very obvious \(such as the importance of knowing one major monitoring tool in and out\). Some tools like, source code control systems, are shared with development teams. + +The list here has only examples of basic tools. An experienced DevOps engineer would have used some application or tool from all or most of these categories. + +### **Source Code Management \(SCM\) System** + +* Expert-level knowledge of an SCM system such as Git or Subversion. +* Knowledge of code branching best practices, such as Git-Flow. +* Knowledge of the importance of checking in Ops code to the SCM system. +* Experience using GitHub. + +### **Bug Management System** + +* Experience using a major bug management system such as Bugzilla or Jira. +* Ability to have a workflow related to the bug filing and resolution process. +* Experience integrating SCM systems with the bug resolution process and using triggers or REST APIs. + +### **Collaborative Documentation System** + +* Knowledge of Wiki basics. +* Experience using MediaWiki, Confluence, etc. +* Knowledge of why DevOps projects have to be documented. +* Knowledge of how documents were organized on a Wiki-based system. + +### **Build and CI** + +* Experience building on Jenkins standalone, or dockerized. +* Experience using Jenkins as a Continuous Integration \(CI\) platform. +* CI/CD pipeline scripting using groovy +* Experience with CI platform features such as: + * Integration with SCM systems. + * Secret management and SSH-based access management. + * Scheduling and chaining of build jobs. + * Source-code change based triggers. + * Worker and slave nodes. + * REST API support and Notification management. + +### **Artefacts Management** + +* Should know what artefacts are and why they have to be managed. +* Experience using a standard artefacts management system such as Artifactory. +* Experience caching third-party tools and dependencies in-house. + +### **Configuration Management** + +* Should be able to explain configuration management. +* Experience using any Configuration Management Database \(CMDB\) system. +* Experience using open-source tools such as Cobbler for inventory management. +* Ability to do both agent-less and agent-driven enforcement of configuration. +* Experience using Ansible, Puppet, Chef, Cobbler, etc. + +### **Orchestration and Deployment** + +* Knowledge of the workflow of released code getting into production. +* Ability to push code to production with the use of SSH-based tools such as Ansible. +* Ability to perform on-demand or Continuous Delivery \(CD\) of code from Jenkins. +* Ability to perform agent-driven code pull to update the production environment. +* Knowledge of deployment strategies, with or without an impact on the software service. +* Knowledge of code deployment in the cloud \(using auto-scaling groups, machine images, etc.\). + +### **Monitoring** + +* Knowledge of all monitoring categories: system, platform, application, business, last-mile, log management, and meta-monitoring. +* Status-based monitoring with Nagios. +* Data-driven monitoring with Zabbix. +* Experience with last-mile monitoring, as done by Pingdom or Catchpoint. +* Experience doing log management with ELK. +* Experience monitoring SaaS solutions \(i.e., Datadog and Loggly\). + +### 3. System Tools and Methods + +To get an automation project up and running, a DevOps engineer builds new things such as configuration objects in an application and code snippets of full-blown programs. However, a major part of the work is glueing many things together at the system level on the given infrastructure. Such efforts are not different from traditional system integration work and, in my opinion, the ingenuity of an engineer at this level determines his or her real value on the team. It is easy to find cookbooks, recipes, and best practices for vendor-supported tools, but it would take experience working on diverse projects to gain the necessary skill set to implement robust integrations that have to work reliably in production. + +Important system-level tools and techniques are listed here. The engineer should have knowledge about the following. + +### **Access Management** + +* Users and groups on Linux. +* Use of service accounts for automation. +* Sudo commands, /etc/sudoers files, and passwordless access. +* Using LDAP and AD for access management. +* Remote access using SSH. + * SSH keys and related topics. + * SCP, SFTP, and related tools. + * SSH key formats. +* Managing access using configuration management tools. + +### **Password Management** + +* Use of GPG for password encryption. +* Tools for password management such as KeePass. +* MD5, KMS for encryption/decryption. +* Remote access with authentication from automation scripts. +* Managing API keys. +* Jenkins plugins for password management. + +### **Build** + +* Basics of compilers such as node.js and Javac. +* Make and Makefile, npm, Maven, Gradle, etc. +* Code libraries in Node, Java, Python, React etc. +* Build artefacts such as JAR, WAR and node modules. +* Running builds from Jenkins. + +### **Packaging** + +* **Packaging files:** ZIP, TAR, GZIP, etc. +* **Packaging for deployment:** RPM, Debian, DNF, Zypper, etc. +* **Packaging for the cloud:** AWS AMI, VMWare template, etc. +* Use of Packer. +* Docker and containers for microservices. + +### **4. Artefacts Management** + +* **Use of artefacts repository:** Distribution and release of builds; meeting build and deployment dependencies +* Serving artefacts from a shared storage volume +* Mounting locations from cloud storage services such as AWS S3 +* Artifactory as artefacts server + +### **File Transfer** + +* SCP, Rsync, FTP, and SSL counterparts +* Via shared storage +* File transfer with cloud storage services such as AWS S3 + +### **Deployment** + +* Code pushing using system-level file transfer tools. +* Scripting using SSH libraries such as Paramiko. +* Orchestrating code pushes using configuration management tools. + +### **Job Management** + +* Use of crontab. +* Running jobs in the background; use of Nohup. +* Use of screen to launch long-running jobs. +* Jenkins as a process manager. + +### **Files and Storage** + +* Typical uses of the find, DF, DU, etc. + +### **Linux Distributions** + +* A comparison of popular distributions. +* Checking OS release and system info. +* Package management differences. +* OS Internals and Commands + +### **Text Processing** + +* Typical uses of SED, AWK, GREP, TR, etc. +* Scripting using Perl, Python. +* Regular expressions. +* Support for regular expressions in Perl and Python. + +### **Troubleshooting Toolkit** + +Sample usages and steps to install these tools: + +* NC +* Netstat +* Traceroute +* VMStat +* LSOF +* Top +* NSLookup +* Ping +* TCPDump +* Dig +* Sar +* Uptime +* IFConfig +* Route + +### Programming Primer for DevOps + +One of the attributes that helps differentiate a DevOps engineer from other members in the operations team, like sysadmins, DBAs, and operations support staff, is his or her ability to write code. The coding and scripting skill is just one of the tools in the DevOps toolbox, but it's a powerful one that a DevOps engineer would maintain as part of practising his or her trade. + +Coding is the last resort when things cannot be integrated by configuring and tweaking the applications and tools that are used in an automation project. + +### **Scripting** + +#### **Bash Scripting Essentials** + +Many times, a few lines of bash script could be the best glue code integrating two components in the whole software system. DevOps engineer should have basic shell scripting skills and Bash is the most popular right now. + +#### **Python** + +If a script has to deal with external systems and components or it's more than just a few lines of command-lines and dealing with fairly complex logic, it might be better to write that script in an advanced scripting language like Python, Perl, or Ruby. + +Knowledge of Python would make your life easier when dealing with DevOps applications such as Ansible, which uses Python syntax to define data structures and implement conditionals for defining configurations. + +#### **Web Programming** + +One of the categories of projects a DevOps engineer would end up doing is building dashboards. Though dashboarding features are found with most of the DevOps tools, those are specific to the application, and there will be a time when you may require to have a general-purpose dashboard with more dynamic content than just static links and text. + +Another requirement is to build web UI for provisioning tools to present those as self-service tools to user groups. + +In both these cases, deep web programming skills are not required. Knowledge of a web programming friendly language such as PHP and a JavaScript/CSS/HTML library like Composer would be enough to get things started. It is also important for the DevOps engineer to know the full-stack, in this case, LAMP, for building and running the web apps. + +#### **Configuration Languages** + +Almost every application and tool that is used for building, deploying, and maintaining software systems use configuration files. While manual reading of these files might not require any expertise, a DevOps engineer should know how config files in such formats are created and parsed programmatically. + +A DevOps engineer should have a good understanding of these formats: + +* INI. +* XML. +* JSON. +* YAML. + +The engineer should also know how these formats are parsed in his/her favourite scripting language. + +### **REST API** + +The wide acceptance of REST API as a standard to expose features that other applications can use for system integration made it a feature requirement for any application that wants to be taken seriously. The knowledge of using REST API has become an important skill for DevOps engineer. + +* **HTTP/HTTPS:** REST APIs are based on HTTP/HTTPS protocol and a solid understanding of its working is required. Knowledge of HTTP headers, status codes, and main verbs GET, POST, and PUT. +* **REST API basics:** Normal layout of APIs defined for an application. +* **Curl and Wget**: Command-line tools to access REST API and HTTP URLs. Some knowledge of the support available for HTTP protocol in scripting languages will be useful and that would be an indication of working with REST APIs. +* **Authentication methods:** Cookie-based and OAuth authentication; API keys; use of If-Match and If-None-Match set of HTTP headers for updates. +* **API management tools:** If the application you support provides an API for the users, most probably, its usage will be managed by some API Gateway tool. Though not an essential skill, experience in this area would be good if one works on the API provider side. + +### **Programming With Data Repositories** + +There was a time when mere knowledge of programming with RDBMS was enough for an application developer and system integrator to manage application data. Now with the wide adoption of Big Data platform like Hadoop and NOSQL systems to process and store data, a DevOps engineer needs varied requirements, from one project to another. Core skills are the following: + +* **RDBMS:** MySQL, Postgres, etc. knowledge of one or more is important. +* **Setting up and configuring PostGres:** As an open-source database used with many other tools in the DevOps toolchain, consider this as a basic requirement for a DevOps engineer. If one hasn’t done this, he or she might not have done enough yet. +* **Running queries from a Bash script:** How to run a database query via a database client from a Bash script and use the output. MySQL is a good example. +* **Database access from Perl/PHP/Python:** All the major scripting languages provide modules to access databases and that can be used to write robust automation scripts. Examples are Perl DBI and Python’s MySQLdb module. +* **DB Backups:** Migration, Logging, monitoring and cleanup. + +### **Programming for Cloud** + +Those who have built cloud infrastructure with a focus on automation and versioning should know some of these \(or similar\) tools: + +* **cloud-init:** Cloud-init can be used to configure a virtual machine when it is spun up. This is very useful when a node is spun up from a machine image with baseline or even application software already baked in. +* **AWS/Azure/GCloud CLI:** If the application runs on Commercial cloud, knowledge of CLI is needed, which would be handy to put together simple automation scripts. +* **Terraform:** HashiCorp’s Terraform is an important tool if the focus would be to provision infrastructure as code \(IaaS\). Using this, infrastructure can be configured independently of the target cloud or virtualization platform. +* **Ansible:** It can be used to build machine images for a variety of virtualization technologies and cloud platforms, it is useful if the infrastructure is provisioned in a mixed or hybrid cloud environment. + +### **Error Handling** + +In a rush to get things rolled out, one of the things left half-done is adding enough error handling in scripts. Automation scripts that are not robust can cause major production issues, which could impact the credibility of DevOps efforts itself. A DevOps engineer should be aware of the following best practices in error handling and logging: + +* The importance of error handling in automated scripts. +* Error handling in Bash. +* Error handling in Python. +* Logging errors in application and system logs. + diff --git a/devops/probes.md b/devops/probes.md index db12e077..c5050a3e 100644 --- a/devops/probes.md +++ b/devops/probes.md @@ -6,13 +6,13 @@ description: >- # Readiness & Liveness -## What is Probes +### What is Probes Determining the state of a service based on readiness, liveness, and startup to detect and deal with unhealthy situations. It may happen that if the application needs to initialize some state, make database connections, or load data before handling application logic. This gap in time between when the application is actually ready versus when Kubernetes thinks is ready becomes an issue when the deployment begins to scale and unready applications receive traffic and send back 500 errors. Many developers assume that when basic pod setup is adequate, especially when the application inside the pod is configured with daemon process managers \(e.g. PM2 for Node.js\). However, since Kubernetes deems a pod as healthy and ready for requests as soon as all the containers start, the application may receive traffic before it is actually ready. -## Kubernetes Probes +### Kubernetes Probes Kubernetes supports readiness and liveness probes for versions ≤ 1.15. Startup probes were added in 1.16 as an alpha feature and graduated to beta in 1.18 \(_WARNING: 1.16 deprecated several Kubernetes APIs. Use this_ [_migration guide_](https://medium.com/dev-genius/upgrading-to-kubernetes-1-16-ad977933694d) _to check for compatibility_\). @@ -24,7 +24,7 @@ All the probe have the following parameters: * `successThreshold` : minimum number of consecutive successful checks for the probe to pass * `failureThreshold` : number of retries before marking the probe as failed. For liveness probes, this will lead to the pod restarting. For readiness probes, this will mark the pod as unready. -### Readiness Probes +### Readiness Probes Readiness probes are used to let kubelet know when the application is ready to accept new traffic. If the application needs some time to initialize state after the process has started, configure the readiness probe to tell Kubernetes to wait before sending new traffic. A primary use case for readiness probes is directing traffic to deployments behind a service. @@ -40,13 +40,13 @@ On the other hand, liveness probes are used to restart unhealthy containers. The ### **Startup Probes** -Startup probes are similar to readiness probes but only executed at startup. They are optimized for slow starting containers or applications with unpredictable initialization processes. With readiness probes, we can configure the `initialDelaySeconds` to determine how long to wait before probing for readiness. Now consider an application where it occasionally needs to download large amounts of data or do an expensive operation at the start of the process. Since `initialDelaySeconds` is a static number, we are forced to always take the worst-case scenario \(or extend the `failureThreshold`that may affect long-running behavior\) and wait for a long time even when that application does not need to carry out long-running initialization steps. With startup probes, we can instead configure `failureThreshold` and `periodSeconds` to model this uncertainty better. For example, setting `failureThreshold` to 15 and `periodSeconds` to 5 means the application will get 10 x 5 = 75s to startup before it fails. +Startup probes are similar to readiness probes but only executed at startup. They are optimized for slow starting containers or applications with unpredictable initialization processes. With readiness probes, we can configure the `initialDelaySeconds` to determine how long to wait before probing for readiness. Now consider an application where it occasionally needs to download large amounts of data or do an expensive operation at the start of the process. Since `initialDelaySeconds` is a static number, we are forced to always take the worst-case scenario \(or extend the `failureThreshold`that may affect long-running behaviour\) and wait for a long time even when that application does not need to carry out long-running initialization steps. With startup probes, we can instead configure `failureThreshold` and `periodSeconds` to model this uncertainty better. For example, setting `failureThreshold` to 15 and `periodSeconds` to 5 means the application will get 10 x 5 = 75s to startup before it fails. -## Configuring Probe Actions +### Configuring Probe Actions Now that we understand the different types of probes, we can examine the three different ways to configure each probe. -### **HTTP** +### **HTTP** The kubelet sends an HTTP GET request to an endpoint and checks for a 2xx or 3xx response. You can reuse an existing HTTP endpoint or set up a lightweight HTTP server for probing purposes \(e.g. an Express server with `/healthz` endpoint\). @@ -85,22 +85,22 @@ readinessProbe: command: ["/bin/sh", "-ec", "vault status -tls-skip-verify"] ``` -## Best Practices +### Best Practices The exact parameters for the probes depend on your application, but here are some general best practices to get started: * For older \(≤ 1.15\) Kubernetes clusters, use a readiness probe with an initial delay to deal with the container startup phase \(use p99 times for this\). But make this check lightweight, since the readiness probe will execute throughout the entire lifecycle of the pod. We don’t want the probe to timeout because the readiness check takes a long time to compute. * For newer \(≥ 1.16\) Kubernetes clusters, use a startup probe for applications with unpredictable or variable startup times. The startup probe may share the same endpoint \(e.g. `/healthz` \) as the readiness and liveness probes, but set the `failureThreshold` higher than the other probes to account for longer start times, but more reasonable time to failure for liveness and readiness checks. -* Readiness and liveness probes may share the same endpoint if the readiness probes aren’t used for other signaling purposes. If there’s only one pod \(i.e. using a Vertical Pod Autoscaler\), set the readiness probe to address the startup behavior and use the liveness probe to determine health. In this case, marking the pod unhealthy means downtime. +* Readiness and liveness probes may share the same endpoint if the readiness probes aren’t used for other signalling purposes. If there’s only one pod \(i.e. using a Vertical Pod Autoscaler\), set the readiness probe to address the startup behaviour and use the liveness probe to determine health. In this case, marking the pod unhealthy means downtime. * Readiness checks can be used in various ways to signal system degradation. For example, if the application loses connection to the database, readiness probes may be used to temporarily block new requests and allow the system to reconnect. It can also be used to load balance work to other pods by marking busy pods as not ready. -In short, well-defined probes generally lead to better resilience and availability. Be sure to observe the startup times and system behavior to tweak the probe settings as the applications change. +In short, well-defined probes generally lead to better resilience and availability. Be sure to observe the startup times and system behaviour to tweak the probe settings as the applications change. -## Tools +### Tools Finally, given the importance of Kubernetes probes, you can use a Kubernetes resource analysis tool to detect missing probes. These tools can be run against existing clusters or be baked into the CI/CD process to automatically reject workloads without properly configured resources. -* [**polaris**](https://github.com/FairwindsOps/polaris): a resource analysis tool with a nice dashboard that can also be used as a validating webhook or CLI tool. -* [**kube-score**](https://github.com/zegl/kube-score): a static code analysis tool that works with Helm, Kustomize, and standard YAML files. -* [**popeye**](https://github.com/derailed/popeye)**:** read-only utility tool that scans Kubernetes clusters and reports potential issues with configurations. +* [**Polaris**](https://github.com/FairwindsOps/polaris): a resource analysis tool with a nice dashboard that can also be used as a validating webhook or CLI tool. +* [**Kube-score**](https://github.com/zegl/kube-score): a static code analysis tool that works with Helm, Kustomize, and standard YAML files. +* [**Popeye**](https://github.com/derailed/popeye)**:** read-only utility tool that scans Kubernetes clusters and reports potential issues with configurations. diff --git a/devops/resource-requests-and-limits.md b/devops/resource-requests-and-limits.md index d12e33e5..971cfd18 100644 --- a/devops/resource-requests-and-limits.md +++ b/devops/resource-requests-and-limits.md @@ -6,13 +6,13 @@ description: >- # Resource Requests & Limits -Containerising applications and running them on Kubernetes doesn’t mean we can forget all about resource utilization. Our thought process may have changed because we can much more easily scale-out our application as demand increases, but many times we need to consider how our containers might fight with each other for resources. Resource Requests and Limits can be used to help stop the “noisy neighbor” problem in a Kubernetes Cluster. +Containerising applications and running them on Kubernetes doesn’t mean we can forget all about resource utilization. Our thought process may have changed because we can much more easily scale-out our application as demand increases, but many times we need to consider how our containers might fight with each other for resources. Resource Requests and Limits can be used to help stop the “noisy neighbour” problem in a Kubernetes Cluster. ### Resource Requests To put things simply, a resource request specifies the minimum amount of resources a container needs to successfully run. Thought of in another way, this is a guarantee from Kubernetes that you’ll always have this amount of either CPU or Memory allocated to the container. -Why would you worry about the mimimum amount of resources guaranteed to a pod? Well, its to help prevent one container from using up all the node’s resources and starving the other containers from CPU or memory. For instance if I had two containers on a node, one container could request 100% of that nodes processor. Meanwhile the other container would likely not be working very well because the processor is being monopolized by its “noisy neighbour”. +Why would you worry about the minimum amount of resources guaranteed to a pod? Well, its to help prevent one container from using up all the node’s resources and starving the other containers from CPU or memory. For instance, if I had two containers on a node, one container could request 100% of that nodes processor. Meanwhile, the other container would likely not be working very well because the processor is being monopolized by its “noisy neighbour”. ![](https://theithollow.com/wp-content/uploads/2020/04/image-3.png) @@ -30,27 +30,27 @@ Limits prevent containers from taking up more resources on the cluster than you ### Common Practices -As a general rule, all containers should have a request for memory and cpu before deploying to a cluster. This will ensure that if resources are running low, your container can still do the minimum amount of work to stay in a healthy state until those resource free up again \(hopefully\). +As a general rule, all containers should have a request for memory and CPU before deploying to a cluster. This will ensure that if resources are running low, your container can still do the minimum amount of work to stay in a healthy state until those resource free up again \(hopefully\). Limits are often used in conjunction with requests to create a “guaranteed pod”. This is where the request and limit are set to the same value. In that situation, the container will always have the same amount of CPU available to it, no more or less. ![](https://documents.lucidchart.com/documents/85c359e4-da7c-4eca-8ed2-bfa90d599d5f/pages/FO6Qkj8_qSsz?a=3436&x=59&y=1069&w=1386&h=242&store=1&accept=image%2F*&auth=LCA%20a7431baf99afe49cb2ff25696b15d8495c7c1b01-ts%3D1587233233) -At this point you may be thinking about adding a high “request” value to make sure you have plenty of resource available for your container. This might sound like a good idea, but have dramatic consequences to scheduling on the Kubernetes cluster. If you set a high CPU request, for example 2 CPUs, then your pod will ONLY be able to be scheduled on Kubernetes nodes that have 2 full CPUs available that aren’t reserved by other pods’ requests. In the example below, the 2 vCPU pod couldn’t be scheduled on the cluster. However, if you were to lower the “request” amount to say 1 vCPU, it could. +At this point, you may be thinking about adding a high “request” value to make sure you have plenty of resources available for your container. This might sound like a good idea, but have dramatic consequences to scheduling on the Kubernetes cluster. If you set a high CPU request, for example, 2 CPUs, then your pod will ONLY be able to be scheduled on Kubernetes nodes that have 2 full CPUs available that aren’t reserved by other pods’ requests. In the example below, the 2 vCPU pods couldn’t be scheduled on the cluster. However, if you were to lower the “request” amount to say 1 vCPU, it could. ![](https://documents.lucidchart.com/documents/85c359e4-da7c-4eca-8ed2-bfa90d599d5f/pages/FO6Qkj8_qSsz?a=3687&x=1733&y=273&w=1045&h=1026&store=1&accept=image%2F*&auth=LCA%208947fe6e088cd6618338a5b630abff3858c6849f-ts%3D1587233233) -## Resource Requests and Limits – In Action +### Resource Requests and Limits – In Action -### CPU Limit Example +#### CPU Limit Example -Lets try out using a CPU limit on a pod and see what happens when we try to request more CPU than we’re allowed to have. Before we set the limit though, lets look at a pod with a single container under normal conditions. I’ve deployed a resource consumer container in my cluster and be default, you can see that I’m use 1m CPU\(cores\) and 6 Mi\(bytes\) of memory. +Let us try out using a CPU limit on a pod and see what happens when we try to request more CPU than we’re allowed to have. Before we set the limit though, let us look at a pod with a single container under normal conditions. I’ve deployed a resource consumer container in my cluster and by default, you can see that I am using 1m CPU\(cores\) and 6 Mi\(bytes\) of memory. NOTE: CPU is measured in millicores so 1000m = 1 CPU core. Memory is measured in Megabytes. ![](https://theithollow.com/wp-content/uploads/2020/04/k8s-podlimits-1.png) -Ok, now that we’ve seen the “no load” state, lets add some CPU load by making a request to the pod. Here, I’ve increased the CPU usage on the container to 400 millicores. +Ok, now that we have seen the “no-load” state, let us add some CPU load by making a request to the pod. Here, I’ve increased the CPU usage on the container to 400 millicores. ![](https://theithollow.com/wp-content/uploads/2020/04/k8s-podlimits-2-1024x59.png) @@ -105,7 +105,7 @@ spec: terminationGracePeriodSeconds: 30 ``` -| In the container resources section we’ve set a limit on CPU to 300m. Lets re-deploy this yaml manifest and then again increase our resource usage to 400m. | +| In the container resources section, we’ve set a limit on CPU to 300m. Let us re-deploy this yaml manifest and then again increase our resource usage to 400m. | | :--- | @@ -113,7 +113,7 @@ After redeploying the container and again increasing my CPU load to 400m, we can ![](https://theithollow.com/wp-content/uploads/2020/04/k8s-podlimits-3.png) -### CPU Requests Example +#### CPU Requests Example OK, next, I’ve deployed two pods into my Kubernetes cluster and those pods are on the same worker node for a simple example about contention. I’ve got a guaranteed pod that has 1000m CPU set as a limit but also as a request. The other pod is unbounded, meaning there is no limit on how much CPU it can utilize. @@ -127,11 +127,11 @@ We make a request to increase the load on my non-guaranteed pod. ![](https://theithollow.com/wp-content/uploads/2020/04/image-5-1024x52.png) -And if we look at the containers resources you can see that even though my container wants to use 2000m CPU, it’s only actually using 1000m CPU. The reason for this is because the guaranteed pod is guaranteed 1000m CPU, whether it is actively using that CPU or not. +And if we look at the container's resources you can see that even though my container wants to use 2000m CPU, it’s only actually using 1000m CPU. The reason for this is because the guaranteed pod is guaranteed 1000m CPU, whether it is actively using that CPU or not. ![](https://theithollow.com/wp-content/uploads/2020/04/image-6-1024x82.png) -## Summary +### Summary Kubernetes uses Resource Requests to set a minimum amount of resources for a given container so that it can be used if it needs it. You can also set a Resource Limit to set the maximum amount of resources a pod can utilize. diff --git a/devops/security-practices.md b/devops/security-practices.md index 91b9dd17..05b316ee 100644 --- a/devops/security-practices.md +++ b/devops/security-practices.md @@ -6,19 +6,19 @@ description: >- # Security Practices -## Introduction: +### Introduction Security is always a difficult subject to approach either by the lack of experience; either by the fact you should know when the level of security is right for what you have to secure. -Security is a major concern when it comes to government systems and infra. As an architect, we can consider that working with technical educated people \(engineers, experts\) and tools \(systems, frameworks, IDE\) should prevent the key VAPT issues. +Security is a major concern when it comes to government systems and infra. As an architect, we can consider that working with technically educated people \(engineers, experts\) and tools \(systems, frameworks, IDE\) should prevent key VAPT issues. However, it’s quite difficult to avoid, a certain infatuation from different categories of people to try to hack the systems. -## Infra Security +### Infra Security ### 1. Update to the latest version -There aren’t only bug fixes in each release but also new security measures . to require advantage of them, we recommend working with the newest stable version. +There aren’t only bug fixes in each release but also new security measures to require advantage of them, we recommend working with the newest stable version. Updates and support could also be harder than the new features offered in releases, so plan your updates a minimum of once a quarter. Significantly simplify updates can utilize the providers of managed Kubernetes-solutions. @@ -28,13 +28,13 @@ Use RBAC \(Role-Based Access Control\) to regulate who can access and what right However, enabling RBAC isn’t enough — it still must be used effectively. within the general case, the rights to the whole cluster \(cluster-wide\) should be avoided, giving preference to rights in certain namespaces. Avoid giving someone cluster administrator privileges even for debugging — it’s much safer to grant rights only necessary and from time to time. -If the appliance requires access to the Kubernetes API, create separate service accounts. and provides them the minimum set of rights required for every use case. This approach is far better than giving an excessive amount of privilege to the default account within the namespace. +If the appliance requires access to the Kubernetes API, create separate service accounts. and provides them with the minimum set of rights required for every use case. This approach is far better than giving an excessive amount of privilege to the default account within the namespace. ### 3. Use namespaces to set security boundaries Creating separate namespaces **is vital because of the** first level of component isolation. **it’s** much easier **to regulate** security settings — **for instance**, network policies — when **different types** of workloads are deployed in separate namespaces. -To get in-depth knowledge on Kubernetes, enroll a love demo on [**Kubernetes course**](https://onlineitguru.com/kubernetes-training.html) +To get in-depth knowledge on Kubernetes, enrol a love demo on [**Kubernetes course**](https://onlineitguru.com/kubernetes-training.html) ### 4. Separate sensitive workloads @@ -76,7 +76,7 @@ Make sure that audit logs are enabled and that you are monitoring for the occurr Managed solution providers \(including GKE\) provide access to this data in their interfaces and can help you set up notifications in case of authorization failures. -## Conclusion +### Conclusion -Follow these guidelines for a more secure [**Kubernetes cluster**](https://medium.com/faun/what-is-the-kubernetes-cluster-de2a33e6572?source=---------24------------------). Remember that even after the cluster is configured securely, you need to ensure security in other aspects of the configuration and operation of containers. To improve the security of the technology stack, study the tools that provide a central system for managing deployed containers, constantly monitoring and protecting containers and cloud-native applications +Follow these guidelines for a more secure [**Kubernetes cluster**](https://medium.com/faun/what-is-the-kubernetes-cluster-de2a33e6572?source=---------24------------------). Remember that even after the cluster is configured securely, you need to ensure security in other aspects of the configuration and operation of containers. To improve the security of the technology stack, study the tools that provide a central system for managing deployed containers, constantly monitoring and protecting containers and cloud-native applications. diff --git a/devops/troubleshooting/README.md b/devops/troubleshooting/README.md index 8554af65..b5aa5943 100644 --- a/devops/troubleshooting/README.md +++ b/devops/troubleshooting/README.md @@ -1,2 +1,10 @@ # Troubleshooting +This section addresses the key areas of concern and its potential remedial steps. + +* [Distributed Tracing](distributed-tracing.md) +* [Logging](logging.md) +* [Monitoring & Alerts](monitoring.md) + + + diff --git a/devops/troubleshooting/distributed-tracing.md b/devops/troubleshooting/distributed-tracing.md index 34acee67..0d6db8e1 100644 --- a/devops/troubleshooting/distributed-tracing.md +++ b/devops/troubleshooting/distributed-tracing.md @@ -6,13 +6,13 @@ description: >- # Distributed Tracing -## Introduction +### Introduction Distributed tracing is a method used to profile and monitor applications, especially those built using a microservices architecture. Distributed tracing helps pinpoint where failures occur and what causes poor performance. -[OpenTracing](https://opentracing.io/) has been a key capability when it comes to microservices based distributed systems like DIGIT. We’ll start with the introduction of OpenTracing, explaining what it is and why it is important We shall also set up Jaeger and learn to use it for monitoring and troubleshooting. +[OpenTracing](https://opentracing.io/) has been a key capability when it comes to microservices-based distributed systems like DIGIT. We’ll start with the introduction of OpenTracing, explaining what it is and why it is important We shall also set up Jaeger and learn to use it for monitoring and troubleshooting. -## Drift to Microservice Architecture +### Drift to Microservice Architecture [Microservice](https://en.wikipedia.org/wiki/Microservices) Architecture has now become the obvious choice for application developers. In the Microservice Architecture, a monolithic application is broken down into a group of independently deployed services. In simple words, an application is more like a collection of microservices. When we have millions of such intertwined microservices working together, it’s almost impossible to map the inter-dependencies of these services and understand the execution of a request. @@ -20,7 +20,7 @@ In case of a failure in a monolithic application, it is much easier to understan Is this service the first one in the call chain? How do I span all these services to get insight into the application? With questions like these, it becomes a significantly larger problem to debug a set of interdependent distributed services in comparison to a single monolithic application, making OpenTracing more and more popular. -## OpenTracing +### OpenTracing The _OpenTracing_ API provides a standard, vendor-neutral framework for instrumentation. This means that if a developer wants to try out a different distributed tracing system, then instead of repeating the whole instrumentation process for the new distributed tracing system, the developer can simply change the configuration of the Tracer. @@ -34,7 +34,7 @@ Here are some basic terminologies of Opentracing: OpenTracing is a way for services to “_describe and propagate distributed traces without knowledge of the underlying OpenTracing implementation._” -Let us take the example of a service like egov-property service \(or any other DIGIT service\). A service like this requires many other microservices to check that the location is available, proper payment credentials are received, and enough details exists for the ULB to process the property tac. If either one of those microservice fail, then the entire transaction fails. In such a case, having logs just for the main property service wouldn’t be very useful for debugging. However, if you were able to analyze each service you wouldn’t have to scratch your head to troubleshoot which microservice failed and what made it fail. +Let us take the example of a service like egov-property service \(or any other DIGIT service\). A service like this requires many other microservices to check that the location is available, proper payment credentials are received, and enough details exist for the ULB to process the property tac. If either one of those microservice fails, then the entire transaction fails. In such a case, having logs just for the main property service wouldn’t be very useful for debugging. However, if you were able to analyze each service you wouldn’t have to scratch your head to troubleshoot which microservice failed and what made it fail. In real life, applications are even more complex and with the increasing complexity of applications, monitoring the applications has been a tedious task. Opentracing helps us to easily monitor: @@ -44,7 +44,7 @@ In real life, applications are even more complex and with the increasing complex * Hierarchy of services * Errors or exceptions during execution of each service. -## Jaeger: A Distributed Tracing System by Uber +### Jaeger: A Distributed Tracing System by Uber _Jaeger_ is used for monitoring and troubleshooting microservices-based distributed systems, including: @@ -54,7 +54,7 @@ _Jaeger_ is used for monitoring and troubleshooting microservices-based distribu * Service dependency analysis * Distributed context propagation -### Major Components of Jaeger +#### Major Components of Jaeger **Jaeger Client Libraries** — Jaeger clients are language-specific implementations of the [OpenTracing API](http://opentracing.io/). @@ -66,7 +66,7 @@ _Jaeger_ is used for monitoring and troubleshooting microservices-based distribu **Ingester** — Ingester is a service that reads from Kafka topic and writes to another storage backend \(Cassandra, Elasticsearch\). -### Running Jaeger in a Docker Container +#### Running Jaeger in a Docker Container 1. First, install Jaeger Client on your machine: @@ -76,13 +76,13 @@ _Jaeger_ is used for monitoring and troubleshooting microservices-based distribu Once the container starts, open [_http://localhost:16686/_](http://127.0.0.1:16686/) to access the Jaeger UI. The container runs the Jaeger backend with an in-memory store, which is initially empty, so there is not much we can do with the UI right now since the store has no traces. -### Creating Traces on Jaeger UI +### Creating Traces on Jaeger UI -**1. Create a Python program to create Traces:** +**1. Create a Python program to create Traces** Let’s generate some traces using a simple python program. You can clone the _Jaeger-Opentracing_ repository given below for a sample program that is used in this blog_._ -The Python program takes a movie name as an argument and calls three functions that get the cinema details, movie showtime details, and finally book a movie ticket. +The Python program takes a movie name as an argument and calls three functions that get the cinema details, movie showtime details, and finally, book a movie ticket. It creates some random delays in all the functions to make it more interesting, as, in reality, the functions would take a certain time to get the details. Also, the function throws random errors to give us a feel of how the traces of a real-life application may look like in case of failures. @@ -94,7 +94,7 @@ Here is a brief description of how OpenTracing has been used in the program: * Using Tags: * Using Logs: -### **2. Run the python program:** +**2. Run the python program** Now, check your Jaeger UI, you can see a new service “booking” added. Select the service and click on “Find Traces” to see the traces of your service. Every time you run the program a new trace will be created. @@ -106,11 +106,11 @@ To view the detailed trace, you can select a specific trace instance and check d ![](../../.gitbook/assets/image%20%2882%29.png) -## Conclusion +### Conclusion In this blog, we’ve described the importance and benefits of OpenTracing, one of the core pillars of modern applications. We also explored how distributed tracer Jaeger collect and store traces while revealing inefficient portions of our applications. It is fully compatible with OpenTracing API and has a number of clients for different programming languages including Java, Go, Node.js, Python, PHP, and more. -## References +### References * [https://www.jaegertracing.io/docs/1.9/](https://www.jaegertracing.io/docs/1.9/) * [https://opentracing.io/docs/](https://opentracing.io/docs/) diff --git a/devops/troubleshooting/logging.md b/devops/troubleshooting/logging.md index 8ca60751..a0a9bfc6 100644 --- a/devops/troubleshooting/logging.md +++ b/devops/troubleshooting/logging.md @@ -6,11 +6,11 @@ description: >- # Logging -## Introduction +### Introduction The logging concern is one of the most complicated parts of our microservices. Microservices should stay as pure as possible. So, we shouldn’t use any library if we can \(like logging, monitoring, resilience library dependencies\). It means, every dependency can change any time and then usually, we must do that change for the other microservices. There is a lot of work here. Instead of that, we need to handle these dependencies with a more generic way. For logging, **the way is the stdout logging**. For most of the programming languages, logging to stdout is the default way and probably no additional change required at the beginning. -## What is needed to build a meaningful logging system in MSA? +### What is needed to build a meaningful logging system in MSA? ### **1. Use a Unique Id to correlate Requests** @@ -45,7 +45,7 @@ Bear in mind that, logging system is not only for developers. It’s also used b Sometimes, you log requests from end-users that contain PII. We need to be careful, it might violate [GDPR](https://gdpr-info.eu/). -## Logging approaches in MSA +### Logging approaches in MSA There are two techniques for logging in MSA. Each service will implement the logging mechanism by itself and using one logging service for all services. Both of them have Good and Not Good points. — _I’m using both these approaches in my project._ diff --git a/devops/troubleshooting/monitoring.md b/devops/troubleshooting/monitoring.md index 51903ddd..12ca5b02 100644 --- a/devops/troubleshooting/monitoring.md +++ b/devops/troubleshooting/monitoring.md @@ -1,6 +1,6 @@ # Monitoring & Alerts -​[Prometheus](https://github.com/prometheus) is an open-source systems monitoring and alerting toolkit originally built at [SoundCloud](https://soundcloud.com/) +​[Prometheus](https://github.com/prometheus) is an open-source system monitoring and alerting toolkit originally built at [SoundCloud](https://soundcloud.com/). ![](https://gblobscdn.gitbook.com/assets%2F-MERG_iQW5oN4ukgXP8K%2F-MGrw8HGOm3l_f8x_z_k%2F-MGrwL-4kKqpAxJeuFs6%2Fimage.png?alt=media&token=5abd97b1-ed7e-4431-8b19-05990306b7c6) @@ -10,7 +10,7 @@ The default installation is intended to suit monitoring a kubernetes cluster the chart is deployed onto. It closely matches the kube-prometheus project. -* * * * * * * service monitors to scrape internal kubernetes components +* service monitors to scrape internal kubernetes components * kube-apiserver * kube-scheduler * kube-controller-manager @@ -20,7 +20,7 @@ The default installation is intended to suit monitoring a kubernetes cluster the With the installation, the chart also includes dashboards and alerts. -**Deployment steps:** +**Deployment steps** 1. Add environment variable to the respective env config file @@ -48,7 +48,7 @@ With the installation, the chart also includes dashboards and alerts. go run main.go deploy -e -c 'prometheus-operator,grafana,prometheues-kafka-exporter' ``` -**To create a new panel in the existing dashboard:-** +**To create a new panel in the existing dashboard** 1. Login to dashboard and click on add panel diff --git a/getting-started/digit-overview.md b/digit-overview/README.md similarity index 70% rename from getting-started/digit-overview.md rename to digit-overview/README.md index 253c7b44..4b876520 100644 --- a/getting-started/digit-overview.md +++ b/digit-overview/README.md @@ -2,11 +2,11 @@ description: Digital Infrastructure For Governance Impact & Transformation --- -# Digit Overview +# DIGIT Concepts -### What is DIGIT? +eGov’s platform DIGIT is a manifestation of [Societal Platform](https://societalplatform.org/) \(an EkStep Foundation initiative\) thinking. DIGIT is a comprehensive, state of the art OpenSource, interoperable and scalable civic tech platform for citizens and city governments to manage, monitor and interact in a transparent, effective and efficient manner. - eGov’s platform DIGIT is a manifestation of [Societal Platform](https://societalplatform.org/) thinking, a systemic method to resolve complex societal challenges with speed, at scale, sustainably \(Societal Platform is an initiative of EkStep Foundation\). eGovernments Foundation transforms urban governance with the use of scalable and replicable technology solutions that enable efficient and effective municipal operations, better decision making, and contact-less urban service delivery. +eGovernments Foundation transforms urban governance with the use of scalable and replicable technology solutions that enable efficient and effective municipal operations, better decision making, and contact-less urban service delivery. ### DIGIT Features diff --git a/getting-started/architecture.md b/digit-overview/architecture.md similarity index 67% rename from getting-started/architecture.md rename to digit-overview/architecture.md index 9023daf6..32f6024a 100644 --- a/getting-started/architecture.md +++ b/digit-overview/architecture.md @@ -4,29 +4,25 @@ description: Digital Governance Platform # DIGIT Architecture -### Architecture Overview - -DIGIT is India’s largest open-source platform for Urban Governance. It is built OpenAPI \(OAS 2.0\) and provides API based access to a variety of urban/municipal services enabling state governments and city administrators to provide citizen services with relevant new services and also integrating the existing system into the platform and run seamlessly on any commercial/on-prem cloud infrastructure with scale and speed. - -### Architecture Map - -![](../.gitbook/assets/image%20%2816%29.png) - -![](../.gitbook/assets/image%20%2828%29.png) - -![](../.gitbook/assets/image%20%2836%29.png) - -![](../.gitbook/assets/image%20%2813%29.png) +DIGIT is India’s largest open-source platform for Urban Governance. It is built on OpenAPI \(OAS 2.0\) and provides API based access to a variety of urban/municipal services enabling state governments and city administrators to provide citizen services with relevant new services and also integrating the existing system into the platform and run seamlessly on any commercial/on-prem cloud infrastructure with scale and speed. +### Key Architecture Highlights +* DIGIT is a microservices-based platform which is built to scale. Microservices are small, autonomous and developer-friendly services that work together. -### Key Architecture Highlights +![](../.gitbook/assets/image%20%2884%29.png) -* DIGIT is a microservices-based platform which is built to scale, microservices are small, autonomous and developer-friendly services that work together. * A big software or system can be broken down into multiple small components or services. These components can be designed, developed & deployed independently without compromising the integrity of the application. * Parallelism in development: Microservices architectures are mainly business-centric. * MicroServices have smart endpoints that process info and apply logic. They receive requests, process them, and generate a response accordingly. * Decentralized control between teams, so that its developers strive to produce useful tools that can then be used by others to solve the same problems. + +![](../.gitbook/assets/image%20%2885%29.png) + * MicroServices architecture allows its neighbouring services to function while it bows out of service. This architecture also scales to cater to its clients’ sudden spike in demand. * MicroService is ideal for evolutionary systems where it is difficult to anticipate the types of devices that may be accessing our application. +![](../.gitbook/assets/image%20%2836%29.png) + +![](../.gitbook/assets/image%20%2813%29.png) + diff --git a/digit-support/README.md b/digit-support/README.md index 2a7e7d47..63d0551b 100644 --- a/digit-support/README.md +++ b/digit-support/README.md @@ -1,2 +1,4 @@ # DIGIT Support +Details coming soon... + diff --git a/digit-support/standard-operating-procedure.md b/digit-support/standard-operating-procedure.md index 5acc9d57..c272a932 100644 --- a/digit-support/standard-operating-procedure.md +++ b/digit-support/standard-operating-procedure.md @@ -1,2 +1,4 @@ # Standard Operating Procedure +Details coming soon... + diff --git a/digit-support/support-process.md b/digit-support/support-process.md index 5bf85651..76d8f918 100644 --- a/digit-support/support-process.md +++ b/digit-support/support-process.md @@ -1,2 +1,4 @@ # Support Process +Details coming soon... + diff --git a/digit-support/troubleshooting-guides.md b/digit-support/troubleshooting-guides.md index 4f54a9d5..76a5dc0d 100644 --- a/digit-support/troubleshooting-guides.md +++ b/digit-support/troubleshooting-guides.md @@ -1,2 +1,4 @@ # Troubleshooting Guides +Details coming soon... + diff --git a/getting-started/README.md b/getting-started/README.md deleted file mode 100644 index 6b7d2e87..00000000 --- a/getting-started/README.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -description: Explore DIGIT ---- - -# Getting Started - -This section offers a deeper insight into the DIGIT platform, its key features, benefits, and architecture details. - -Follow the links to explore the DIGIT platform. - diff --git a/infra-specifications/README.md b/infra-specifications/README.md deleted file mode 100644 index 4a440724..00000000 --- a/infra-specifications/README.md +++ /dev/null @@ -1,2 +0,0 @@ -# Infra Specifications - diff --git a/infra-specifications/estimating-infra.md b/infra-specifications/estimating-infra.md deleted file mode 100644 index 6967f541..00000000 --- a/infra-specifications/estimating-infra.md +++ /dev/null @@ -1,2 +0,0 @@ -# Infra Sizing - diff --git a/infra-specifications/infra-structure-overview/README.md b/infra-specifications/infra-structure-overview/README.md deleted file mode 100644 index a282842f..00000000 --- a/infra-specifications/infra-structure-overview/README.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -description: >- - Where and how DIGIT being being deployed. How can you size and estimate the - Infra. ---- - -# Supported Clouds - diff --git a/infra-specifications/infra-structure-overview/azure/infra-provisioning-azure.md b/infra-specifications/infra-structure-overview/azure/infra-provisioning-azure.md deleted file mode 100644 index eba4818d..00000000 --- a/infra-specifications/infra-structure-overview/azure/infra-provisioning-azure.md +++ /dev/null @@ -1,2 +0,0 @@ -# Provision Infra - diff --git a/install-digit/README.md b/install-digit/README.md index 3e30b421..241c65fa 100644 --- a/install-digit/README.md +++ b/install-digit/README.md @@ -1,6 +1,14 @@ ---- -description: Partner with us to enhance and integrate more to the platform. ---- +# Configure DIGIT -# Install DIGIT +Learn how to configure the DIGIT platform. Partner with us to enhance and integrate more into the platform. + +* [Git Repos](open-source-git-repos.md) +* [Setting Up DIGIT](setting-up-digit/) +* [Setting Up Master Data](setting-up-master-data/) +* [Configuring Services](configuring-digit-services/) +* [Configuring Workflows](configuring-workflows/) +* [Configuring Localization](configuring-workflows/) +* [Setting Up eDCR Service](setting-up-edcr-service.md) +* [Configuration FAQs](configuration-faqs.md) +* [Setting Up a Language](setting-up-a-language/) diff --git a/install-digit/configuration-faqs.md b/install-digit/configuration-faqs.md index fab58ca0..54a00e2c 100644 --- a/install-digit/configuration-faqs.md +++ b/install-digit/configuration-faqs.md @@ -1,2 +1,4 @@ # Configuration FAQs +Details coming soon.. + diff --git a/install-digit/configuring-digit-services/README.md b/install-digit/configuring-digit-services/README.md index cea34819..861e9b2e 100644 --- a/install-digit/configuring-digit-services/README.md +++ b/install-digit/configuring-digit-services/README.md @@ -1,2 +1,13 @@ # Configuring Services +This section contains docs that walk you through the various steps required to configure DIGIT services. + +* [API Do's And Dont's](api-dos-and-donts.md) +* [Setting Up Service Locally](setting-up-service-locally.md) +* [Configuring Reports](configuring-reports.md) +* [Customizing PDF Notices And Certificates](customizing-pdf-notices-and-certificates.md) + + + + + diff --git a/install-digit/configuring-digit-services/api-dos-and-donts.md b/install-digit/configuring-digit-services/api-dos-and-donts.md index 7d9f188c..425a9428 100644 --- a/install-digit/configuring-digit-services/api-dos-and-donts.md +++ b/install-digit/configuring-digit-services/api-dos-and-donts.md @@ -3,18 +3,18 @@ * Always define the Yaml for your APIs as the first thing using Open API 3 Standard \([https://swagger.io/specification/](https://swagger.io/specification/)\) * APIs path should be standardised as follows: * **/{service}/{entity}/{version}/\_create**: This endpoint should be used to create the entity - * **/{service}/{entity}/{version}/\_update**: This endpoint should be used to edit a entity which is already existing + * **/{service}/{entity}/{version}/\_update**: This endpoint should be used to edit an entity which is already existing * **/{service}/{entity}/{version}/\_search**: This endpoint should be used to provide search on the entity based on certain criteria - * **/{service}/{entity}/{version}/\_count**: This endpoint should be provided to give count of entities that match a given search criteria + * **/{service}/{entity}/{version}/\_count**: This endpoint should be provided to give a count of entities that match a given search criteria * Always use POST for each of the endpoints -* Take most search parameters in POST body only -* If query params for search needs to be supported then make sure to have same parameters in POST body also and POST body should take priority over query params -* Provide additionalDetails objects for **\_create** and **\_update** APIs so that custom requirements can use these fields +* Take most search parameters in the POST body only +* If query params for search need to be supported then make sure to have the same parameters in POST body also and POST body should take priority over query params +* Provide additional Details objects for **\_create** and **\_update** APIs so that the custom requirements can use these fields * Each API should have a [**RequestInfo**](https://github.com/egovernments/core-services/blob/4e92620bd77fce183fdd66d3a8d9248f65561ada/docs/common-contract.yml#L45) object in request body at the top level * Each API should have a [**ResponseInfo**](https://github.com/egovernments/core-services/blob/4e92620bd77fce183fdd66d3a8d9248f65561ada/docs/common-contract.yml#L154) object in response body at the top level * Mandatory fields should be minimum for the APIs. * minLength and maxLength should be defined for each attribute -* Read only fields should be called out +* Read-only fields should be called out * Use common models already available in the platform in your APIs. Ex - * [Address](https://github.com/egovernments/core-services/blob/4e92620bd77fce183fdd66d3a8d9248f65561ada/docs/common-contract.yml#L228) * [User](https://github.com/egovernments/core-services/blob/4e92620bd77fce183fdd66d3a8d9248f65561ada/docs/common-contract.yml#L96)\(Citizen or Employee or Owner\) @@ -22,7 +22,7 @@ * [AuditDetails](https://github.com/egovernments/core-services/blob/4e92620bd77fce183fdd66d3a8d9248f65561ada/docs/common-contract.yml#L270) * [ErrorRes](https://github.com/egovernments/core-services/blob/4e92620bd77fce183fdd66d3a8d9248f65561ada/docs/common-contract.yml#L213) \(Response sent in case of errors\) * TODO: Add all the models here -* For receiving files in an API, don’t use binary file data. Instead accept the file store ids +* For receiving files in an API, don’t use binary file data. Instead, accept the file store ids * If there is only one file to be uploaded and no persistence is needed, and no additional json data is to be posted, you can consider using direct file upload instead of using filestore id APIs developed on digit follow certain conventions and principles. The aim of this document is to provide some do’s and don’ts while following those principles diff --git a/install-digit/configuring-digit-services/configuring-reports.md b/install-digit/configuring-digit-services/configuring-reports.md index 9c6f90e4..e89f7f3c 100644 --- a/install-digit/configuring-digit-services/configuring-reports.md +++ b/install-digit/configuring-digit-services/configuring-reports.md @@ -1,56 +1,4 @@ # Configuring Reports -### Overview - -Add a brief description of the topic and the page content \(2-3 lines\). - -### Pre-requisites - -Before you proceed with the configuration, make sure the following pre-requisites are met - - -* Add any system or skills requirements here \(Use bullets to build the list\) -* -### Key Functionalities - -Add 2-3 lines to highlight the use and applications in context. - -* Add functional aspects for the topic \(Use bullets to build the list\) -* Tables can be inserted for certain topics. - -| **Title** | **Description** | -| :--- | :--- | -| | | -| | | - -### Deployment Details - -1. Deployment Steps \(Use numbered bullet lists to define the sequence\) - -### Configuration Details - -1. Configuration steps \(Use numbered bullet lists to define the sequence\) - -### Integration - -#### Integration Scope - -#### Integration Benefits - -#### Steps to Integration - -### Reference Docs - -#### Doc Links - -| **Title** | **Link** | -| :--- | :--- | -| | | -| | | - -#### API List - -| | **Link** | -| :--- | :--- | -| | | -| | | +Details coming soon... diff --git a/install-digit/configuring-digit-services/customizing-pdf-notices-and-certificates.md b/install-digit/configuring-digit-services/customizing-pdf-notices-and-certificates.md index ec2c9e4b..818801a7 100644 --- a/install-digit/configuring-digit-services/customizing-pdf-notices-and-certificates.md +++ b/install-digit/configuring-digit-services/customizing-pdf-notices-and-certificates.md @@ -1,56 +1,4 @@ -# Customizing PDF Notices and Certificates +# Customizing PDF Notices And Certificates -### Overview - -Add a brief description of the topic and the page content \(2-3 lines\). - -### Pre-requisites - -Before you proceed with the configuration, make sure the following pre-requisites are met - - -* Add any system or skills requirements here \(Use bullets to build the list\) -* -### Key Functionalities - -Add 2-3 lines to highlight the use and applications in context. - -* Add functional aspects for the topic \(Use bullets to build the list\) -* Tables can be inserted for certain topics. - -| **Title** | **Description** | -| :--- | :--- | -| | | -| | | - -### Deployment Details - -1. Deployment Steps \(Use numbered bullet lists to define the sequence\) - -### Configuration Details - -1. Configuration steps \(Use numbered bullet lists to define the sequence\) - -### Integration - -#### Integration Scope - -#### Integration Benefits - -#### Steps to Integration - -### Reference Docs - -#### Doc Links - -| **Title** | **Link** | -| :--- | :--- | -| | | -| | | - -#### API List - -| | **Link** | -| :--- | :--- | -| | | -| | | +Details coming soon... diff --git a/install-digit/configuring-digit-services/setting-up-service-locally.md b/install-digit/configuring-digit-services/setting-up-service-locally.md index 5f288e31..47a25e62 100644 --- a/install-digit/configuring-digit-services/setting-up-service-locally.md +++ b/install-digit/configuring-digit-services/setting-up-service-locally.md @@ -1,56 +1,4 @@ -# Setting up Service Locally +# Setting Up Service Locally -### Overview - -Add a brief description of the topic and the page content \(2-3 lines\). - -### Pre-requisites - -Before you proceed with the configuration, make sure the following pre-requisites are met - - -* Add any system or skills requirements here \(Use bullets to build the list\) -* -### Key Functionalities - -Add 2-3 lines to highlight the use and applications in context. - -* Add functional aspects for the topic \(Use bullets to build the list\) -* Tables can be inserted for certain topics. - -| **Title** | **Description** | -| :--- | :--- | -| | | -| | | - -### Deployment Details - -1. Deployment Steps \(Use numbered bullet lists to define the sequence\) - -### Configuration Details - -1. Configuration steps \(Use numbered bullet lists to define the sequence\) - -### Integration - -#### Integration Scope - -#### Integration Benefits - -#### Steps to Integration - -### Reference Docs - -#### Doc Links - -| **Title** | **Link** | -| :--- | :--- | -| | | -| | | - -#### API List - -| | **Link** | -| :--- | :--- | -| | | -| | | +Details coming soon... diff --git a/install-digit/configuring-localization.md b/install-digit/configuring-localization.md index 0e076303..59618e9f 100644 --- a/install-digit/configuring-localization.md +++ b/install-digit/configuring-localization.md @@ -1,2 +1,4 @@ # Configuring Localization +Details coming soon... + diff --git a/install-digit/configuring-workflows/README.md b/install-digit/configuring-workflows/README.md index ac27a25d..7ad6df55 100644 --- a/install-digit/configuring-workflows/README.md +++ b/install-digit/configuring-workflows/README.md @@ -1,2 +1,11 @@ # Configuring Workflows +This section provides a step by step guide to setting up workflows and configuring the workflows for DIGIT entities. + +* [Setting Up Workflows](setting-up-workflow.md) +* [Configuring Workflows For An Entity](configuring-workflow-for-an-entity.md) + + + + + diff --git a/install-digit/configuring-workflows/configuring-workflow-for-an-entity.md b/install-digit/configuring-workflows/configuring-workflow-for-an-entity.md index d1efd470..01788369 100644 --- a/install-digit/configuring-workflows/configuring-workflow-for-an-entity.md +++ b/install-digit/configuring-workflows/configuring-workflow-for-an-entity.md @@ -1,4 +1,4 @@ -# Configuring workflow for an entity +# Configuring Workflows For An Entity ### Overview @@ -43,84 +43,82 @@ Before you proceed with the configuration, make sure the following pre-requisite ### 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 list of States that are part of the workflow. The businessService can be defined at tenant level like pb.amritsar or at state level like pb. All objects maintains an audit sub object which keeps track of who is creating and updating and the time of it - - ```text - { - "tenantId": "pb.amritsar", - "businessService": "PGR", - "business": "pgr-services", - "businessServiceSla": 432000000, - "states": [...] - } - ``` - - - 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 on it. - - - ```text - { - "sla": 36000000, - "state": "PENDINGFORASSIGNMENT", - "applicationStatus": "PENDINGFORASSIGNMENT", - "docUploadRequired": false, - "isStartState": false, - "isTerminateState": false, - "isStateUpdatable": false, - "actions": [...] - } - ``` - - - The action object is the last object in hierarchy, it defines the name of the action and the roles that can perform the action. - - - ```text - { - "action": "ASSIGN", - "roles": [ - "GRO", - "DGRO" - ], - "nextState": "PENDINGATLME", - } - ``` - -2. The workflow should always start from null state as the service treats new applications as having null as the initial state. eg: - - ```text - { - "sla": null, - "state": null, - "applicationStatus": null, - "docUploadRequired": false, - "isStartState": true, - "isTerminateState": false, - "isStateUpdatable": true, - "actions": [ - { - "action": "APPLY", - "nextState": "APPLIED", - "roles": [ - "CITIZEN", - "CSR" - ] - } - ] - } - ``` - -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 action name. This action sends back the application to citizen’s inbox for him to take action. A new State should be created on which Citizen can take action and should be the nextState of this action. While calling this action from module _assignes_ should be enriched by the module with the uuids of the owners of the application +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 list of States that are part of the workflow. The businessService can be defined at tenant level like pb.amritsar or at state level like pb. All objects maintains an audit sub object which keeps track of who is creating and updating and the time of it + +```text +{ + "tenantId": "pb.amritsar", + "businessService": "PGR", + "business": "pgr-services", + "businessServiceSla": 432000000, + "states": [...] + } +``` + +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 on it. + +```text +{ + "sla": 36000000, + "state": "PENDINGFORASSIGNMENT", + "applicationStatus": "PENDINGFORASSIGNMENT", + "docUploadRequired": false, + "isStartState": false, + "isTerminateState": false, + "isStateUpdatable": false, + "actions": [...] + } +``` + +The action object is the last object in hierarchy, it defines the name of the action and the roles that can perform the action. + +```text + { + "action": "ASSIGN", + "roles": [ + "GRO", + "DGRO" + ], + "nextState": "PENDINGATLME", + } +``` + +The workflow should always start from null state as the service treats new applications as having null as the initial state. eg: + +```text +{ + "sla": null, + "state": null, + "applicationStatus": null, + "docUploadRequired": false, + "isStartState": true, + "isTerminateState": false, + "isStateUpdatable": true, + "actions": [ + { + "action": "APPLY", + "nextState": "APPLIED", + "roles": [ + "CITIZEN", + "CSR" + ] + } + ] + } +``` + +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\)_ + +SENDBACKTOCITIZEN is a special keyword for action name. This action sends back the application to citizen’s inbox for him to take action. A new State should be created on which Citizen can take action and should be the nextState of this action. While calling this action from module _assignes_ should be enriched by the module with the uuids of the owners of the application ### Integration - For integration related steps please refer to the document _' Setting Up Workflows'_ in the Reference Docs +For integration related steps please refer to the document _' Setting Up Workflows'_ in the Reference Docs ### Reference Docs diff --git a/install-digit/configuring-workflows/setting-up-workflow.md b/install-digit/configuring-workflows/setting-up-workflow.md index fc589946..b5ca469d 100644 --- a/install-digit/configuring-workflows/setting-up-workflow.md +++ b/install-digit/configuring-workflows/setting-up-workflow.md @@ -1,4 +1,4 @@ -# Setting up Workflow +# Setting Up Workflows ### Overview @@ -27,83 +27,84 @@ Before you proceed with the configuration, make sure the following pre-requisite ### Configuration Details -1. Create the businessService JSON based on product requirement. Following is an sample json of a simple 2 step workflow where an application can be applied by citizen or counter employee and then can be either rejected or approved by the approver. - - ```text - { - "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 workflow and call the API to create the workflow. -3. To update the workflow first 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 applications in that state in an invalid state. In such cases first, all the applications in that state should be moved forward or backward state and then the state should be disabled through DB directly\) +Create the businessService JSON based on product requirement. Following is an sample json of a simple 2 step workflow where an application can be applied by citizen or counter employee and then can be either rejected or approved by the approver. + +```text +{ + "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 + } + ] + } +``` + +Once the businessService json is created add it in request body of _\_create_ API of workflow and call the API to create the workflow. + +To update the workflow first 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 applications in that state in an invalid state. In such cases first, all the applications in that state should be moved forward or backward state and then the state should be disabled through DB directly\) ### Integration diff --git a/install-digit/setting-up-a-language/README.md b/install-digit/setting-up-a-language/README.md index f5f9b22b..9b89c219 100644 --- a/install-digit/setting-up-a-language/README.md +++ b/install-digit/setting-up-a-language/README.md @@ -1,2 +1,11 @@ # Setting up a Language +This section walks you through the steps to adding a new language or setting up the default language on the DIGIT system. + +* [Adding New Language](adding-a-language.md) +* [Setting Up Default Language For SMS & Emails](setting-a-default-language-for-sms-and-email.md) + + + + + diff --git a/install-digit/setting-up-a-language/adding-a-language.md b/install-digit/setting-up-a-language/adding-a-language.md index 80cf1ad4..f69022ea 100644 --- a/install-digit/setting-up-a-language/adding-a-language.md +++ b/install-digit/setting-up-a-language/adding-a-language.md @@ -1,7 +1,5 @@ # Adding New Language - - ### Overview Digit system supports multiple languages. @@ -22,45 +20,134 @@ Before proceeding with the configuration, following are the pre-requisites - ### Deployment Details -* After adding the new language, the MDMS service needs to be restarted to read the newly added data. +After adding the new language, the MDMS service needs to be restarted to read the newly added data. ### Configuration Details -1. A new language is added in StateInfo.json - In MDMS, file **StateInfo.json**, under **common-masters** folder holds the details of language to be added. - - `1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18` `{ "tenantId": "uk", // "moduleName": "common-masters", "StateInfo": [ { "languages": [ { "label": "ENGLISH", "value": "en_IN" }, { "label": "हिंदी", // "value": "hi_IN" // } ] } ] }` - - - Note: - The label’s text is displayed in UI for language selection. - The value text is used as key to refer the language. - - -2. Language is added as an array element under the array named “languages”. -3. Each language element is a label and value pair. -4. By default English language is added. -5. Other languages can be added as an additional/new language which system will support. -6. System to support multiple ie., more than one language, those languages are added in StateInfo.json as below: - - `1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18` `"languages": [ { "label": "ENGLISH", "value": "en_IN" }, { "label": "हिंदी", // "value": "hi_IN" // }, { "label": "ಕನ್ನಡ", // "value": "kn_IN" }, { "label": "language3", // "value": "language3key" } ]` - - Note: - "हिंदी" and "ಕನ್ನಡ",”language3” are more than one languages\(Hindi,Kannada,somelangauge\) added other than "ENGLISH". - - -7. In UI the labels and master values that populates in dropdown or textboxes are added as a key for localization. For eg., when a user logs in, at the top of inbox page, a welcome message in English language shows as “Welcome User name“. The text “Welcome” is English localization for the Key “CS\_LANDING\_PAGE\_WELCOME\_TEXT”. -8. For all the labels or master value keys, localization should be pushed to the database through the endpoints for all the languages added in system.The SMS/Email are also added as keys for which values are pushed in all the languages to the data base. - **Localization format for** **keys:**`1 2 3 4 5 6` `{ "code": "unique key referred ", "message": "Value to be shown in UI or send in SMS/Email", "module": "rainmaker-", "locale": "" }` - - **Sample of localization:** - In Hindi language:`1 2 3 4 5 6` `{ "code": "CS_LANDING_PAGE_WELCOME_TEXT", "message": "आपका स्वागत है ", "module": "rainmaker-pgr", "locale": "hi_IN" }` - - - In English language:`1 2 3 4 5 6` `{ "code": "CS_LANDING_PAGE_WELCOME_TEXT", "message": "Welcome", "module": "rainmaker-pgr", "locale": "en_IN" }` - -9. For the languages added in the system if values are not pushed to database then for the labels or master data, key will appear in UI. If values for SMS/Email is missed to pushed the SMS/Email can’t be received. -10. Any one language from the multiple added language, can be set as default. For example if English, Hindi, Kannada are three languages added in the StateInfo.json and kannada is required to be set as a default language then in StateInfo.json for the text "defaultLanguage" the language key is need to be set as its value. `1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23` `{ "tenantId": "uk", // "moduleName": "common-masters", "StateInfo": [ { "defaultLanguage": "kn_IN", // "languages": [ { "label": "ENGLISH", "value": "en_IN" }, { "label": "हिंदी", "value": "hi_IN" }, { "label": "ಕನ್ನಡ", // "value": "kn_IN" } ] } ] }` +A new language is added in StateInfo.json +In MDMS, file **StateInfo.json**, under **common-masters** folder holds the details of language to be added. + +```text +{ + "tenantId": "uk", // + "moduleName": "common-masters", + "StateInfo": [ + { + "languages": [ + { + "label": "ENGLISH", + "value": "en_IN" + }, + { + "label": "हिंदी", // + "value": "hi_IN" // + } + ] + } + ] +} +``` + +{% hint style="info" %} +The label’s text is displayed in UI for language selection. +The value text is used as key to refer the language. +{% endhint %} + +Language is added as an array element under the array named “languages”. Each language element is a label and value pair. By default English language is added. Other languages can be added as an additional/new language which system will support. System to support multiple ie., more than one language, those languages are added in StateInfo.json as below. + +```text +"languages": [ + { + "label": "ENGLISH", + "value": "en_IN" + }, + { + "label": "हिंदी", // + "value": "hi_IN" // + }, + { + "label": "ಕನ್ನಡ", // + "value": "kn_IN" + }, + { + "label": "language3", // + "value": "language3key" + } + ] +``` + +{% hint style="info" %} +"हिंदी" and "ಕನ್ನಡ",”language3” are more than one languages\(Hindi,Kannada,somelangauge\) added other than "ENGLISH". +{% endhint %} + +In UI the labels and master values that populates in dropdown or textboxes are added as a key for localization. For eg., when a user logs in, at the top of inbox page, a welcome message in English language shows as “Welcome User name“. The text “Welcome” is English localization for the Key “CS\_LANDING\_PAGE\_WELCOME\_TEXT”. + +For all the labels or master value keys, localization should be pushed to the database through the endpoints for all the languages added in system.The SMS/Email are also added as keys for which values are pushed in all the languages to the data base. + +**Localization format for** **keys** + +```text +{ + "code": "unique key referred ", + "message": "Value to be shown in UI or send in SMS/Email", + "module": "rainmaker-", + "locale": "" +} +``` + +**Sample of localization** + +In Hindi language + +```text +{ + "code": "CS_LANDING_PAGE_WELCOME_TEXT", + "message": "आपका स्वागत है ", + "module": "rainmaker-pgr", + "locale": "hi_IN" +} +``` + +In English language + +```text +{ + "code": "CS_LANDING_PAGE_WELCOME_TEXT", + "message": "Welcome", + "module": "rainmaker-pgr", + "locale": "en_IN" +} +``` + +For the languages added in the system if values are not pushed to database then for the labels or master data, key will appear in UI. If values for SMS/Email is missed to pushed the SMS/Email can’t be received. + +Any one language from the multiple added language, can be set as default. For example if English, Hindi, Kannada are three languages added in the StateInfo.json and kannada is required to be set as a default language then in StateInfo.json for the text "defaultLanguage" the language key is need to be set as its value. + +```text +{ + "tenantId": "uk", // + "moduleName": "common-masters", + "StateInfo": [ + { + "defaultLanguage": "kn_IN", // + "languages": [ + { + "label": "ENGLISH", + "value": "en_IN" + }, + { + "label": "हिंदी", + "value": "hi_IN" + }, + { + "label": "ಕನ್ನಡ", // + "value": "kn_IN" + } + ] + } + ] +} +``` ### Reference Docs diff --git a/install-digit/setting-up-a-language/setting-a-default-language-for-sms-and-email.md b/install-digit/setting-up-a-language/setting-a-default-language-for-sms-and-email.md index 19e47338..e06f8cf4 100644 --- a/install-digit/setting-up-a-language/setting-a-default-language-for-sms-and-email.md +++ b/install-digit/setting-up-a-language/setting-a-default-language-for-sms-and-email.md @@ -1,11 +1,9 @@ # Setting Up Default Language For SMS & Emails -### - ### Overview Through SMS and Emails necessary information/updates are communicated to the users on their various transactions on DIGIT applications. -For example when a Trade License application is initiated or forwarded or approved or payment done in digit system, the applicant and payer \(if payer is other than applicant\) will be informed about the status of Trade License application through SMS/Email. +For example, when a Trade License application is initiated or forwarded or approved or payment is done in DIGIT system, the applicant and payer \(if the payer is other than the applicant\) will be informed about the status of Trade License application through SMS/Email. The language for SMS and Email can be set as per requirement/choice. ### Pre-requisites @@ -18,30 +16,59 @@ Before proceeding with the configuration, make sure the following pre-requisites ### Key Functionalities * User can receive Emails and SMS of necessary information/updates in the decided language. -* The language can be decided by the end-users \(either Citizen or Employee\). End -users can select the language before logging in or after logging, from inbox page. +* The language can be decided by the end-users \(either Citizen or Employee\). End-users can select the language before logging in or after logging, from inbox page. * If the language is not chosen by end-user, then SMS/Email is received in the language of, State requirement based state-level configured language. ### Configuration Details -1. Sms and Email localization should be pushed to the database through the endpoints for all the languages added in system. - **Localization format for SMS/Email:** - - `1 2 3 4 5 6` `{ "code": "unique key referred for sms or email", "message": "sms value or email to be received", "module": "rainmaker-", "locale": "" }` +Sms and Email localization should be pushed to the database through the endpoints for all the languages added in the system. +**Localization format for SMS/Email** + +```text +{ + "code": "unique key referred for sms or email", + "message": "sms value or email to be received", + "module": "rainmaker-", + "locale": "" + } +``` + +**Sample of SMS localisation for Trade License application initiation** +**English localization** + +```text +{ + "code": "tl.en.counter.initiate", + "message": "Dear <1>, Your Trade License application number for <2> has been generated. Your application no. is <3> You can use this application number to know your application status. Thank You. NagarSewa.", + "module": "rainmaker-tl", + "locale": "en_IN" +} +``` + +**Hindi localization** + +```text +{ + "code": "tl.en.counter.initiate", + "message": "प्रिय <1>, <2> के व्यापार लाइसेंस के आवेदन के लिए आपका व्यापार लाइसेंस आवेदन संख्या <3> है। आप इस आवेदन संख्या का उपयोग अपनी आवेदन स्थिति जानने के लिए कर सकते हैं। धन्यवाद। नगरसेवा।", + "module": "rainmaker-tl", + "locale": "hi_IN" +} +``` + +{% hint style="info" %} +The placeholder <1>,<2>,<3> will the replaced by the actual required value which gives important information to the applicant. +For example**,** the message will be received by the applicant as: +Dear Kamal, Your Trade License application number for Ramjhula Provisional Store has been generated. Your application no. is UK-TL-2020-07-10-002058 You can use this application number…. +{% endhint %} - **Sample of SMS localisation for Trade License application initiation**: - **English localization:** - - `1 2 3 4 5 6` `{ "code": "tl.en.counter.initiate", "message": "Dear <1>, Your Trade License application number for <2> has been generated. Your application no. is <3> You can use this application number to know your application status. Thank You. NagarSewa.", "module": "rainmaker-tl", "locale": "en_IN" }` +The default language for SMS and Email can be set by - - **Hindi localization:**`1 2 3 4 5 6` `{ "code": "tl.en.counter.initiate", "message": "प्रिय <1>, <2> के व्यापार लाइसेंस के आवेदन के लिए आपका व्यापार लाइसेंस आवेदन संख्या <3> है। आप इस आवेदन संख्या का उपयोग अपनी आवेदन स्थिति जानने के लिए कर सकते हैं। धन्यवाद। नगरसेवा।", "module": "rainmaker-tl", "locale": "hi_IN" }` +* Clicking on the preferred language from the available language button, in language selection page, which opens before the login page. +* In Citizen or Employee inbox page, the language can be selected from the drop-down, which can be seen in the right corner of the inbox title bar. +* If the language is not chosen by Citizen or Employee, then SMS/Email is received in default configured language. For example in a State if Hindi, English, Kannada are added as three languages in the system and out of these three languages if State decides that Kannada should be configured as default language then Kannada is set as the default language in MDMS. So when end-user does not choose any language then SMS/Email is sent in Kannada language. - Note:- - The placeholder <1>,<2>,<3> will the replaced by the actual required value which gives important information to the applicant. - For example: The message will be received by applicant as: - Dear Kamal, Your Trade License application number for Ramjhula Provisional Store has been generated. Your application no. is UK-TL-2020-07-10-002058 You can use this application number…. +The selected language key is sent as a parameter along with other required transaction parameters to the back end code. -2. Default language for SMS and Email can be set by: a\) Clicking on the choice language from available language button, in language selection page, which opens before login page. b\) In Citizen or Employee inbox page, the language can be selected from the drop down, which can be seen in right corner of inbox title bar. c\) If the language is not chosen by Citizen or Employee, then SMS/Email is received in default configured language. For example in a State if Hindi, English, Kannada are added as three languages in the system and out of these three languages if State decides that Kannada should be configured as default language then Kannada is set as default language in mdms. So when end-user does not choose any language then SMS/Email is send in Kannada language. -3. The selected language key is send as a parameter along with other required transaction parameter to the back end code. -4. In the back end, to send SMS/Email logic, language key is checked and based on the language key and SMS unique key, the message is fetched from the database. +In the back end, to send SMS/Email logic, language key is checked and based on the language key and SMS unique key, the message is fetched from the database. diff --git a/install-digit/setting-up-digit/README.md b/install-digit/setting-up-digit/README.md index 6dd3a400..94e2ea05 100644 --- a/install-digit/setting-up-digit/README.md +++ b/install-digit/setting-up-digit/README.md @@ -1,2 +1,13 @@ # Setting up DIGIT +Learn all about setting up DIGIT and its various components. + +* [Configuring InfraOps](configuring-infraops.md) +* [Setting Up DIGIT Environment](setting-up-digit-environment.md) +* [Email And SMS Setup](email-and-sms-set-up.md) +* [FileStore Setup](filestore-set-up.md) +* [Setting Up SSL Certificate](setting-up-ssl-certificate.md) +* [Perioding Log Cleanup](periodic-log-cleanup.md) + +Details for these pages coming up soon... + diff --git a/install-digit/setting-up-digit/configuring-infraops.md b/install-digit/setting-up-digit/configuring-infraops.md index 21060c73..512ae2c3 100644 --- a/install-digit/setting-up-digit/configuring-infraops.md +++ b/install-digit/setting-up-digit/configuring-infraops.md @@ -1,56 +1,8 @@ # Configuring InfraOps -### Overview +Details coming soon... -Add a brief description of the topic and the page content \(2-3 lines\). +### -### Pre-requisites -Before you proceed with the configuration, make sure the following pre-requisites are met - - -* Add any system or skills requirements here \(Use bullets to build the list\) -* -### Key Functionalities - -Add 2-3 lines to highlight the use and applications in context. - -* Add functional aspects for the topic \(Use bullets to build the list\) -* Tables can be inserted for certain topics. - -| **Title** | **Description** | -| :--- | :--- | -| | | -| | | - -### Deployment Details - -1. Deployment Steps \(Use numbered bullet lists to define the sequence\) - -### Configuration Details - -1. Configuration steps \(Use numbered bullet lists to define the sequence\) - -### Integration - -#### Integration Scope - -#### Integration Benefits - -#### Steps to Integration - -### Reference Docs - -#### Doc Links - -| **Title** | **Link** | -| :--- | :--- | -| | | -| | | - -#### API List - -| | **Link** | -| :--- | :--- | -| | | -| | | diff --git a/install-digit/setting-up-digit/email-and-sms-set-up.md b/install-digit/setting-up-digit/email-and-sms-set-up.md index 6560c47a..d9a1a8d7 100644 --- a/install-digit/setting-up-digit/email-and-sms-set-up.md +++ b/install-digit/setting-up-digit/email-and-sms-set-up.md @@ -1,56 +1,4 @@ -# Email and SMS set up +# Email And SMS Setup -### Overview - -Add a brief description of the topic and the page content \(2-3 lines\). - -### Pre-requisites - -Before you proceed with the configuration, make sure the following pre-requisites are met - - -* Add any system or skills requirements here \(Use bullets to build the list\) -* -### Key Functionalities - -Add 2-3 lines to highlight the use and applications in context. - -* Add functional aspects for the topic \(Use bullets to build the list\) -* Tables can be inserted for certain topics. - -| **Title** | **Description** | -| :--- | :--- | -| | | -| | | - -### Deployment Details - -1. Deployment Steps \(Use numbered bullet lists to define the sequence\) - -### Configuration Details - -1. Configuration steps \(Use numbered bullet lists to define the sequence\) - -### Integration - -#### Integration Scope - -#### Integration Benefits - -#### Steps to Integration - -### Reference Docs - -#### Doc Links - -| **Title** | **Link** | -| :--- | :--- | -| | | -| | | - -#### API List - -| | **Link** | -| :--- | :--- | -| | | -| | | +Details coming soon... diff --git a/install-digit/setting-up-digit/filestore-set-up.md b/install-digit/setting-up-digit/filestore-set-up.md index ddd754e8..10d54ebf 100644 --- a/install-digit/setting-up-digit/filestore-set-up.md +++ b/install-digit/setting-up-digit/filestore-set-up.md @@ -1,56 +1,4 @@ -# FileStore set up +# FileStore Setup -### Overview - -Add a brief description of the topic and the page content \(2-3 lines\). - -### Pre-requisites - -Before you proceed with the configuration, make sure the following pre-requisites are met - - -* Add any system or skills requirements here \(Use bullets to build the list\) -* -### Key Functionalities - -Add 2-3 lines to highlight the use and applications in context. - -* Add functional aspects for the topic \(Use bullets to build the list\) -* Tables can be inserted for certain topics. - -| **Title** | **Description** | -| :--- | :--- | -| | | -| | | - -### Deployment Details - -1. Deployment Steps \(Use numbered bullet lists to define the sequence\) - -### Configuration Details - -1. Configuration steps \(Use numbered bullet lists to define the sequence\) - -### Integration - -#### Integration Scope - -#### Integration Benefits - -#### Steps to Integration - -### Reference Docs - -#### Doc Links - -| **Title** | **Link** | -| :--- | :--- | -| | | -| | | - -#### API List - -| | **Link** | -| :--- | :--- | -| | | -| | | +Details coming soon... diff --git a/install-digit/setting-up-digit/periodic-log-cleanup.md b/install-digit/setting-up-digit/periodic-log-cleanup.md index 09a48f57..99cd7f33 100644 --- a/install-digit/setting-up-digit/periodic-log-cleanup.md +++ b/install-digit/setting-up-digit/periodic-log-cleanup.md @@ -1,56 +1,4 @@ # Periodic Log Cleanup -### Overview - -Add a brief description of the topic and the page content \(2-3 lines\). - -### Pre-requisites - -Before you proceed with the configuration, make sure the following pre-requisites are met - - -* Add any system or skills requirements here \(Use bullets to build the list\) -* -### Key Functionalities - -Add 2-3 lines to highlight the use and applications in context. - -* Add functional aspects for the topic \(Use bullets to build the list\) -* Tables can be inserted for certain topics. - -| **Title** | **Description** | -| :--- | :--- | -| | | -| | | - -### Deployment Details - -1. Deployment Steps \(Use numbered bullet lists to define the sequence\) - -### Configuration Details - -1. Configuration steps \(Use numbered bullet lists to define the sequence\) - -### Integration - -#### Integration Scope - -#### Integration Benefits - -#### Steps to Integration - -### Reference Docs - -#### Doc Links - -| **Title** | **Link** | -| :--- | :--- | -| | | -| | | - -#### API List - -| | **Link** | -| :--- | :--- | -| | | -| | | +Details coming soon... diff --git a/install-digit/setting-up-digit/setting-up-digit-environment.md b/install-digit/setting-up-digit/setting-up-digit-environment.md index bd659755..a20f6e2e 100644 --- a/install-digit/setting-up-digit/setting-up-digit-environment.md +++ b/install-digit/setting-up-digit/setting-up-digit-environment.md @@ -1,56 +1,4 @@ # Setting up DIGIT Environment -### Overview - -Add a brief description of the topic and the page content \(2-3 lines\). - -### Pre-requisites - -Before you proceed with the configuration, make sure the following pre-requisites are met - - -* Add any system or skills requirements here \(Use bullets to build the list\) -* -### Key Functionalities - -Add 2-3 lines to highlight the use and applications in context. - -* Add functional aspects for the topic \(Use bullets to build the list\) -* Tables can be inserted for certain topics. - -| **Title** | **Description** | -| :--- | :--- | -| | | -| | | - -### Deployment Details - -1. Deployment Steps \(Use numbered bullet lists to define the sequence\) - -### Configuration Details - -1. Configuration steps \(Use numbered bullet lists to define the sequence\) - -### Integration - -#### Integration Scope - -#### Integration Benefits - -#### Steps to Integration - -### Reference Docs - -#### Doc Links - -| **Title** | **Link** | -| :--- | :--- | -| | | -| | | - -#### API List - -| | **Link** | -| :--- | :--- | -| | | -| | | +Details coming soon... diff --git a/install-digit/setting-up-digit/setting-up-ssl-certificate.md b/install-digit/setting-up-digit/setting-up-ssl-certificate.md index 378efe68..710c484c 100644 --- a/install-digit/setting-up-digit/setting-up-ssl-certificate.md +++ b/install-digit/setting-up-digit/setting-up-ssl-certificate.md @@ -1,56 +1,4 @@ -# Setting up SSL Certificate +# Setting Up SSL Certificate -### Overview - -Add a brief description of the topic and the page content \(2-3 lines\). - -### Pre-requisites - -Before you proceed with the configuration, make sure the following pre-requisites are met - - -* Add any system or skills requirements here \(Use bullets to build the list\) -* -### Key Functionalities - -Add 2-3 lines to highlight the use and applications in context. - -* Add functional aspects for the topic \(Use bullets to build the list\) -* Tables can be inserted for certain topics. - -| **Title** | **Description** | -| :--- | :--- | -| | | -| | | - -### Deployment Details - -1. Deployment Steps \(Use numbered bullet lists to define the sequence\) - -### Configuration Details - -1. Configuration steps \(Use numbered bullet lists to define the sequence\) - -### Integration - -#### Integration Scope - -#### Integration Benefits - -#### Steps to Integration - -### Reference Docs - -#### Doc Links - -| **Title** | **Link** | -| :--- | :--- | -| | | -| | | - -#### API List - -| | **Link** | -| :--- | :--- | -| | | -| | | +Details coming soon... diff --git a/install-digit/setting-up-edcr-service.md b/install-digit/setting-up-edcr-service.md index 9b642893..82e3fa02 100644 --- a/install-digit/setting-up-edcr-service.md +++ b/install-digit/setting-up-edcr-service.md @@ -1,6 +1,6 @@ # Setting Up eDCR Service -## Overview +### Overview This document mainly covers all the steps that one needs to do for setting up a new instance of eDCR \(Development Control Regulations\). Say when a new State is to be set up, there are some activities to be executed in a defined order. Setting up an instance of an application server and configuring customer-specific rules, and data, etc are a few of the key activities. @@ -9,40 +9,41 @@ This document mainly covers all the steps that one needs to do for setting up a * Uniform code base supporting all the ULBs for the state. City-specific changes are maintained using client-specific implementation repositories. * A separate schema for each ULB in the database. -## Prerequisites +### Prerequisites * Prior Knowledge of Java/J2EE. * Prior Knowledge of Spring and Hibernate * Prior knowledge of Maven * Prior knowledge of Git. -* **Install the below version of the software in local machine,** +* Install the below version of the software in local machine * maven v3.2.x * PostgreSQL v9.6 * [JBoss Wildfly v11.x](https://devops.egovernments.org/Downloads/wildfly/wildfly-11.0.0.Final.zip) * Git 2.8.3 * JDK 8 update 112 or higher -## Configurations and Setup +### Configurations and Setup eDCR Service repository will be used to define default rules. The statewide rules to be defined within the client implementation repository. **How to set up a client implementation repository** -1. Branch out and create a eDCR service repository from [![](https://github.githubassets.com/favicon.ico)https://github.com/egovernments/eGov-dcr-service - Connect to preview](https://github.com/egovernments/eGov-dcr-service) master repository. Refer [![](https://github.githubassets.com/favicon.ico)https://github.com/egovernments/egov-dcr-client - Connect to preview](https://github.com/egovernments/egov-dcr-client) for the client implementation setup has been done. -2. After creating a client implementation repository, If you want to override rules processing for features, then create a project under egov directory like **egov-client-impl.** +Branch out and create a eDCR service repository from [![](https://github.githubassets.com/favicon.ico)https://github.com/egovernments/eGov-dcr-service - Connect to preview](https://github.com/egovernments/eGov-dcr-service) master repository. Refer [![](https://github.githubassets.com/favicon.ico)https://github.com/egovernments/egov-dcr-client - Connect to preview](https://github.com/egovernments/egov-dcr-client) for the client implementation setup has been done. + +After creating a client implementation repository, If you want to override rules processing for features, then create a project under egov directory like **egov-client-impl.** The client-specific rules are configurable in the individual client implementation module. Here the rules are fetched by state wise, district wise, ULB wise, or grade-wise. -**a. How to override rule processing across the state for a feature** +**How to override rule processing across the state for a feature** -The EG\_CITY table, master data used to decide the rules. +The EG\_CITY table, master data is used to decide the rules. 1. If the rules are the same for a feature across the state then the filename must need to keep like Far\_{Client.id}. 2. Here client id nothing but a state name, the client.id need to update with the state name in **application-config-client.properties** file \(Available in [https://github.com/egovernments/egov-dcr-client/blob/master/egov/egov-client-impl/src/main/resources/config/application-config-client.properties](https://github.com/egovernments/egov-dcr-client/blob/master/egov/egov-client-impl/src/main/resources/config/application-config-client.properties)\) or in **egov-erp-override.properties** file\(Available in **Wildfly server** under **${HOME\_DIR}/wildfly-11.0.0.Final/modules/system/layers/base/org/egov/settings/main/config**\). 3. The client id used with the feature class name and configures in the properties file should match, then only the system will pick features and process otherwise it won't pick the file. 4. Eg: [https://github.com/egovernments/egov-dcr-client/blob/master/egov/egov-client-impl/src/main/java/org/egov/client/edcr/Far\_Client.java](https://github.com/egovernments/egov-dcr-client/blob/master/egov/egov-client-impl/src/main/java/org/egov/client/edcr/Far_Client.java) Here filename to be added as Far\_Assam.java for the Assam state rules. -**b. How to override rule processing district, city, and grade wise for a feature** +**How to override rule processing district, city, and grade wise for a feature** 1. If the rules varying across district, city, and grade wise within a state then must need to follow the following naming conventions. 2. If the rules are varying from district to district, then the respective district-related rules need code under separate files with a filename like Far\_{District Name}. eg: Far\_Udalguri. @@ -50,7 +51,7 @@ The EG\_CITY table, master data used to decide the rules. 4. The district, city, and grade information will be reading from the eg\_city table, so in this table need to update that information before starting the coding. 5. In a state, only for one or two cities if the rules are changing then need to override rules only for those cities in a separate file, for other all cities the default code will pick. Here default code is state level \(Far\_{Client id}\) configured one. -**Configuration Changes to setup State and Cities :** +**Configuration Changes to setup State and Cities** 1. The state is configured by adding property **tenant.{domain\_name}=schema\_name \(state\_name\)** in egov-erp-override.properties**.** 2. Each new ULB is enabled by adding a schema name and domain name in egov-erp-override.properties file\(Available in **Wildfly server** under **${HOME\_DIR}/wildfly-11.0.0.Final/modules/system/layers/base/org/egov/settings/main/config**\). Schema names should follow a naming standard, It should be the same as that of the city name. @@ -66,26 +67,34 @@ The EG\_CITY table, master data used to decide the rules. 5. Add 'max-post-size' attribute with value 100mb in bytes in the below location, 6. <server name="default-server"> <http-listener name="default" socket-binding="http" max-post-size="104857600" redirect-socket="https" enable-http2="true"/> <https-listener name="https" max-post-size="104857600" socket-binding="https" security-realm="ApplicationRealm" enable-http2="true"/> <host name="default-host" alias="localhost"> <location name="/" handler="welcome-content"/> <http-invoker security-realm="ApplicationRealm"/> </host> </server> -**MDMS** Integration +**MDMS Integration** If you want to fetch master data from MDMS for following ApplicationType, ServiceType, OccupancyType, SubOccupancyType, Usages then the following configurations are needed, -1. Enable fetch master data from MDMS by adding mdms.enable=true property in **application-config-client.properties** file \(Available in [https://github.com/egovernments/egov-dcr-client/blob/master/egov/egov-client-impl/src/main/resources/config/application-config-client.properties](https://github.com/egovernments/egov-dcr-client/blob/master/egov/egov-client-impl/src/main/resources/config/application-config-client.properties)\) or in **egov-erp-override.properties** file\(Available in **Wildfly server** under **${HOME\_DIR}/wildfly-11.0.0.Final/modules/system/layers/base/org/egov/settings/main/config**\). -2. Add the property and update the MDMS hostname, mdms.host=[{](https://egov-micro-dev.egovernments.org/)HOST\_NAME} in **application-config-client.properties** file or **egov-erp-override.properties** file -3. Add the property and update the MDMS search URL, mdms.searchurl=/egov-mdms-service/v1/\_search in **application-config-client.properties** file or **egov-erp-override.properties** file +{% hint style="info" %} +Enable fetch master data from MDMS by adding mdms.enable=true property in **application-config-client.properties** file \(Available in [https://github.com/egovernments/egov-dcr-client/blob/master/egov/egov-client-impl/src/main/resources/config/application-config-client.properties](https://github.com/egovernments/egov-dcr-client/blob/master/egov/egov-client-impl/src/main/resources/config/application-config-client.properties)\) or in **egov-erp-override.properties** file\(Available in **Wildfly server** under **${HOME\_DIR}/wildfly-11.0.0.Final/modules/system/layers/base/org/egov/settings/main/config**\). +{% endhint %} + +{% hint style="info" %} +Add the property and update the MDMS hostname, mdms.host=[{](https://egov-micro-dev.egovernments.org/)HOST\_NAME} in **application-config-client.properties** file or **egov-erp-override.properties** file +{% endhint %} - **Note:** +{% hint style="info" %} +Add the property and update the MDMS search URL, mdms.searchurl=/egov-mdms-service/v1/\_search in **application-config-client.properties** file or **egov-erp-override.properties** file +{% endhint %} +{% hint style="info" %} 1. By default, the master data will be fetched from the database. 2. If you want to fetch from MDMS instead of the database then the above configurations are required. +{% endhint %} -**Note:** - +{% hint style="info" %} 1. After setup is done APIs one must use state domain URL and in the contract tenantId of concern, the city has to be passed to scrutinize multiple cities. 2. One should not use the city domain URL to scrutinize or fetch plan if used that way, the response will be empty. 3. The tenantId used should follow {state\_name.city\_name} naming convention, then the state\_name passed in the request and city code in the state schema must be the same. +{% endhint %} -## References +### References | Title | Link | | :--- | :--- | diff --git a/install-digit/setting-up-master-data/README.md b/install-digit/setting-up-master-data/README.md index efc1c6f6..432eac19 100644 --- a/install-digit/setting-up-master-data/README.md +++ b/install-digit/setting-up-master-data/README.md @@ -1,2 +1,14 @@ # Setting up Master Data +Learn how to setup DIGIT master data. + +* [MDMS Overview](mdms-overview.md) +* [Configuring Master Data](configuring-master-data.md) +* [Adding New Master](adding-new-master.md) +* [Configuring Tenants](configuring-tenants.md) +* [State Level vs City Level Master](state-level-vs-city-level-master.md) + + + + + diff --git a/install-digit/setting-up-master-data/adding-new-master.md b/install-digit/setting-up-master-data/adding-new-master.md index fea5311f..ff403775 100644 --- a/install-digit/setting-up-master-data/adding-new-master.md +++ b/install-digit/setting-up-master-data/adding-new-master.md @@ -1,4 +1,4 @@ -# Adding new Master +# Adding New Master ### Overview @@ -12,23 +12,51 @@ Before proceeding with the configuration, make sure the following pre-requisites ### Deployment Details -1. After adding the new master, the MDMS service needs to be restarted to read the newly added data. +After adding the new master, the MDMS service needs to be restarted to read the newly added data. ### Configuration Details -1. 1. Creating Master JSON: The new JSON file needs to contain 3 keys as shown in the below code snippet. The new master can be created for Statewide or ULB wise. Tenant id and config in the master config file determines this.`1 2 3 4 5` `{ "tenantId": "< TENANT ID >", "moduleName": "< MODULE NAME >", "< MASTER NAME >": [] }` - 2. Configuring the master config file: - - The Master config file is structured as below. Each key in the Master config is a module and each key in the module is a master. - - `1 2 3 4 5 6 7 8 9 10 11 12 13` `{ "":{ "":{}, "":{}, ... }, "":{ :{}, :{}, ... }, ... }` - - - Each master contain following data and keys are self-explanatory - - `1 2 3 4 5` `"master":{ "masterName": "<>", "isStateLevel": true, "uniqueKeys": [] }` - - +**Creating Master JSON** +The new JSON file needs to contain 3 keys as shown in the below code snippet. +The new master can be created for Statewide or ULB wise. Tenant id and config in the master config file determines this. + +```text +{ + "tenantId": "< TENANT ID >", + "moduleName": "< MODULE NAME >", + "< MASTER NAME >": [] +} +``` + +**Configuring the master config file** +The Master config file is structured as below. Each key in the Master config is a module and each key in the module is a master. + +```text +{ + "":{ + "":{}, + "":{}, + ... + }, + "":{ + :{}, + :{}, + ... + }, + ... +} + +``` + +Each master contain the following data and keys are self-explanatory + +```text +"master":{ + "masterName": "<>", + "isStateLevel": true, + "uniqueKeys": [] +} +``` ### Reference Docs diff --git a/install-digit/setting-up-master-data/configuring-master-data.md b/install-digit/setting-up-master-data/configuring-master-data.md index 44808020..2f0f03eb 100644 --- a/install-digit/setting-up-master-data/configuring-master-data.md +++ b/install-digit/setting-up-master-data/configuring-master-data.md @@ -1,10 +1,8 @@ # Configuring Master Data - - ### Overview -Configuring Master Data for a new module requires creating a new module in the master config file and adding masters data. For better organizing, create all the master data files belongs to the module in the same folder. Organizing in same folder is not mandatory it is based on the moduleName in the Master data file. +Configuring Master Data for a new module requires creating a new module in the master config file and adding masters data. For better organizing, create all the master data files belongs to the module in the same folder. Organizing in the same folder is not mandatory it is based on the moduleName in the Master data file. ### Pre-requisites @@ -18,17 +16,33 @@ These data can be used to validate the incoming data. ### Deployment Details -1. After adding the new module data, the MDMS service needs to be restarted to read the newly added data. +After adding the new module data, the MDMS service needs to be restarted to read the newly added data. ### Configuration Details -1. Adding new module +**Adding new module** + +The Master config file is structured as below. Each key in the Master config is a module and each key in the module is a master. -The Master config file is structured as below. Each key in the Master config is a module and each key in the module is a master.`1 2 3 4 5 6 7 8 9 10 11 12 13` `{ "":{ "":{}, "":{}, ... }, "":{ :{}, :{}, ... }, ... }` +```text +{ + "":{ + "":{}, + "":{}, + ... + }, + "":{ + :{}, + :{}, + ... + }, + ... +} +``` -the new module can be added below the existing modules in the master config file. +The new module can be added below the existing modules in the master config file. -2. Creating Masters data +**Creating Masters data** Please check the link to create new master[ Adding New Master](https://digit-discuss.atlassian.net/wiki/spaces/DD/pages/644874241/Adding+New+Master) @@ -41,3 +55,5 @@ Please check the link to create new master[ Adding New Master](https://digit-dis | Sample Master config file | [![](https://github.githubassets.com/favicon.ico)https://github.com/egovernments/playground-mdms-data/blob/master/master-config.json - Connect to preview](https://github.com/egovernments/playground-mdms-data/blob/master/master-config.json) | | Sample Module folder | [![](https://github.githubassets.com/favicon.ico)https://github.com/egovernments/playground-mdms-data/tree/master/data/pg/TradeLicense - Connect to preview](https://github.com/egovernments/playground-mdms-data/tree/master/data/pg/TradeLicense) | + + diff --git a/install-digit/setting-up-master-data/configuring-tenants.md b/install-digit/setting-up-master-data/configuring-tenants.md index 6c85454c..8d5c5c76 100644 --- a/install-digit/setting-up-master-data/configuring-tenants.md +++ b/install-digit/setting-up-master-data/configuring-tenants.md @@ -2,7 +2,7 @@ ### Overview -Tenant represents a body in a system. In municipal system, a state and its ULBs \(Urban local bodies\) are tenants . ULB represents a city or a town in a state. Tenant configuration is done in mdms. +Tenant represents a body in a system. In the municipal system, a state and its ULBs \(Urban local bodies\) are tenants. ULB represents a city or a town in a state. Tenant configuration is done in MDMS. ### Pre-requisites @@ -14,39 +14,96 @@ Before proceeding with the configuration, the following pre-requisites are met - ### Key Functionalities -* For login page city name selection is required. Tenant added in MDMS shows in city drop-down of login page. -* In reports or in the employee inbox page the details related to ULB is displayed from the fetched ulb data which is added in MDMS. -* Modules i.e., TL,PT,MCS can be enabled based on the requirement for tenant. +* For login page city name selection is required. Tenant added in MDMS shows in city drop-down of the login page. +* In reports or in the employee inbox page the details related to ULB is displayed from the fetched ULB data which is added in MDMS. +* Modules i.e., TL, PT, MCS can be enabled based on the requirement for the tenant. ### Deployment Details -1. After adding the new tenant, the MDMS service needs to be restarted to read the newly added data. +After adding the new tenant, the MDMS service needs to be restarted to read the newly added data. ### Configuration Details +Tenant is added in tenant.json. +In MDMS, file **tenant.json**, under **tenant** folder holds the details of state and ULBs to be added in that state. + +```text +{ + "tenantId": "uk", // + "moduleName": "tenant", + "tenants": [ { + "code": "uk.citya", // + "name": "City A", // + "description": "City A", // + "logoId": "https://s3.ap-south-1.amazonaws.com/uk-egov-assets/uk.citya/logo.png", // + "imageId": null, + "domainUrl": "", // + "type": "CITY", + "twitterUrl": null, + "facebookUrl": null, + "emailId": "complaints.citya@gmail.com", // + "OfficeTimings": { + "Mon - Sat": "10.00 AM - 5.00 PM" + }, +"city": { +"name": "City A", +"localName": null, +"districtCode": "CITYA", +"districtName": null, +"regionName": null, +"ulbGrade": "Municipal Corporation", +"longitude": 78.0322, +"latitude": 30.3165, +"shapeFileLocation": null, +"captcha": null, +"code": "248430" +}, +"address": "City A Municipal Cornoration Address", +"contactNumber": "91 (135) 2653572" +}]} +``` + +{% hint style="info" %} +To enable tenant the above data should be pushed in tenant.json file. Here "ULB Grade" and City "Code" are important fields. **ULB Grade** can have a set of allowed values that determines the ULB type, \([Municipal corporation \(Nagar Nigam\)](https://en.wikipedia.org/wiki/Municipal_Corporations_in_India), Municipality \(municipal council, municipal board, municipal committee\) \(Nagar Parishad\), etc\). City "**Code**" has to be unique to each tenant. This city-specific code is used in all transactions. Not permissible to change the code. If changed we will lose the data of the previous transactions done. +{% endhint %} + +{% hint style="info" %} +Naming Convention for **Tenants Code** +**“Code”:“uk.citya”** is **StateTenantId.ULBTenantName"** +{% endhint %} -1. Tenant is added in tenant.json. In MDMS, file **tenant.json**, under **tenant** folder holds the details of state and ULBs to be added in that state. `1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33` `{ "tenantId": "uk", // "moduleName": "tenant", "tenants": [ { "code": "uk.citya", // "name": "City A", // "description": "City A", // "logoId": "https://s3.ap-south-1.amazonaws.com/uk-egov-assets/uk.citya/logo.png", // "imageId": null, "domainUrl": "", // "type": "CITY", "twitterUrl": null, "facebookUrl": null, "emailId": "complaints.citya@gmail.com", // "OfficeTimings": { "Mon - Sat": "10.00 AM - 5.00 PM" }, "city": { "name": "City A", "localName": null, "districtCode": "CITYA", "districtName": null, "regionName": null, "ulbGrade": "Municipal Corporation", "longitude": 78.0322, "latitude": 30.3165, "shapeFileLocation": null, "captcha": null, "code": "248430" }, "address": "City A Municipal Cornoration Address", "contactNumber": "91 (135) 2653572" }]}` - -Note: - - +{% hint style="info" %} +**"logoId": "**[**https://s3.ap-south-1.amazonaws.com/uk-egov-assets/uk.citya/logo.png**](https://s3.ap-south-1.amazonaws.com/pb-egov-assets/pb.citya/logo.png)**",** Here the last section of the path should be "/<tenantId>/logo.png". If we use anything else, logo will not be displayed on the UI. **<tenantId>** is the tenant code ie **“uk.citya”.** +{% endhint %} -* To enable tenant the above data should be pushed in tenant.json file. Here "ULB Grade" and City "Code" are important fields. **ULB Grade** can have a set of allowed values that determines the ULB type, \([Municipal corporation \(Nagar Nigam\)](https://en.wikipedia.org/wiki/Municipal_Corporations_in_India), Municipality \(municipal council, municipal board, municipal committee\) \(Nagar Parishad\), etc\). City "**Code**" has to be unique to each tenant. This city-specific code is used in all transactions. Not permissible to change the code. If changed we will lose the data of the previous transactions done. -* Naming Convention for **Tenants Code** +Localization should be pushed for ULB grade and ULB name. The format is given below. -**“Code”:“uk.citya”** is **StateTenantId.ULBTenantName"** +**Localization for ULB Grade** -* **"logoId": "**[**https://s3.ap-south-1.amazonaws.com/uk-egov-assets/uk.citya/logo.png**](https://s3.ap-south-1.amazonaws.com/pb-egov-assets/pb.citya/logo.png)**",** Here the last section of the path should be "/<tenantId>/logo.png". If we use anything else, logo will not be displayed on the UI. **<tenantId>** is the tenant code ie **“uk.citya”.** +```text +{ + "code": "ULBGRADE_MUNICIPAL_CORPORATION", + "message": "MUNICIPAL CORPORATION", + "module": "rainmaker-common", + "locale": "en_IN" + } +``` -2. Localization should be pushed for ulb grade and ulb name. Format is given below. - **Localization for ULB Grade :**`1 2 3 4 5 6` `{ "code": "ULBGRADE_MUNICIPAL_CORPORATION", "message": "MUNICIPAL CORPORATION", "module": "rainmaker-common", "locale": "en_IN" }` +**Localization for ULB Name** - **Localization for ULB Name :** `1 2 3 4 5 6` `{ "code": "TENANT_TENANTS_UK_HALDWANI", "message": "Haldwani", "module": "rainmaker-tl", "locale": "en_IN" }` +```text +{ + "code": "TENANT_TENANTS_UK_HALDWANI", + "message": "Haldwani", + "module": "rainmaker-tl", + "locale": "en_IN" +} +``` -Format of localization code for tenant name : <**MDMS\_State\_Tenant\_Folder\_Name**>\_<**Tenants\_Fille\_Name**>\_<**Tenant\_Code**>\(replace dot with underscore\) +**Format of localization code for tenant name** <**MDMS\_State\_Tenant\_Folder\_Name**>\_<**Tenants\_Fille\_Name**>\_<**Tenant\_Code**> \(replace dot with underscore\) -2.Boundary data should be added for the new tenant. +Boundary data should be added for the new tenant. ### Reference Docs diff --git a/install-digit/setting-up-master-data/mdms-overview.md b/install-digit/setting-up-master-data/mdms-overview.md index 2d87e47e..2944fb08 100644 --- a/install-digit/setting-up-master-data/mdms-overview.md +++ b/install-digit/setting-up-master-data/mdms-overview.md @@ -1,7 +1,5 @@ # MDMS Overview - - ### Overview MDMS stands for Master Data Management Service. MDMS is One of the applications in the eGov DIGIT core group of services. This service aims to reduce the time spent by developers on writing codes to store and fetch master data \( primary data needed for module functionality \) which doesn’t have any business logic associated with them. @@ -35,7 +33,13 @@ The config JSON files to be written should follow the listed rules * The config files should have JSON extension * The file should mention the tenantId, module name, and the master name first before defining the data -`1 2 3 4 5` `{ "tenantId": "uk", "moduleName": "BillingService", "{$MasterName}":[ ] }` +```text +{ + "tenantId": "uk", + "moduleName": "BillingService", + "{$MasterName}":[ ] +} +``` | **Title** | **Description** | | :--- | :--- | @@ -43,9 +47,27 @@ The config JSON files to be written should follow the listed rules | moduleName | Name of the module to which the master data belongs | | MasterName | The Master Name will be substituted by the actual name of the master data. The array succeeding it will contain the actual data. | - Example Config JSON for “Billing Service”`1 2 3 4 5 6 7 8 9 10 11 12 13 14 15` `{ "tenantId": "pb", "moduleName": "BillingService", "BusinessService": [ { "businessService": "PropertyTax", "code": "PT", "collectionModesNotAllowed": [ "DD" ], "partPaymentAllowed": true, "isAdvanceAllowed": true, "isVoucherCreationEnabled": true } ] }` - -### Reference Docs + Example Config JSON for “Billing Service” + +```text +{ + "tenantId": "pb", + "moduleName": "BillingService", + "BusinessService": + [ + { + "businessService": "PropertyTax", + "code": "PT", + "collectionModesNotAllowed": [ "DD" ], + "partPaymentAllowed": true, + "isAdvanceAllowed": true, + "isVoucherCreationEnabled": true + } +] +} +``` + +### Reference Docs #### Doc Links diff --git a/install-digit/setting-up-master-data/state-level-vs-city-level-master.md b/install-digit/setting-up-master-data/state-level-vs-city-level-master.md index cb8e7a3f..3a688e90 100644 --- a/install-digit/setting-up-master-data/state-level-vs-city-level-master.md +++ b/install-digit/setting-up-master-data/state-level-vs-city-level-master.md @@ -1,56 +1,4 @@ # State Level Vs City Level Master -### Overview - -Add a brief description of the topic and the page content \(2-3 lines\). - -### Pre-requisites - -Before you proceed with the configuration, make sure the following pre-requisites are met - - -* Add any system or skills requirements here \(Use bullets to build the list\) -* -### Key Functionalities - -Add 2-3 lines to highlight the use and applications in context. - -* Add functional aspects for the topic \(Use bullets to build the list\) -* Tables can be inserted for certain topics. - -| **Title** | **Description** | -| :--- | :--- | -| | | -| | | - -### Deployment Details - -1. Deployment Steps \(Use numbered bullet lists to define the sequence\) - -### Configuration Details - -1. Configuration steps \(Use numbered bullet lists to define the sequence\) - -### Integration - -#### Integration Scope - -#### Integration Benefits - -#### Steps to Integration - -### Reference Docs - -#### Doc Links - -| **Title** | **Link** | -| :--- | :--- | -| | | -| | | - -#### API List - -| | **Link** | -| :--- | :--- | -| | | -| | | +Details coming soon.. diff --git a/modules-features/README.md b/modules-features/README.md index bd8e8bb3..3a8a7e35 100644 --- a/modules-features/README.md +++ b/modules-features/README.md @@ -1,52 +1,12 @@ ---- -description: DIGIT Modules ---- - -# Modules & Features - -### Overview +# Product And Modules DIGIT offers several modules. Each module is designed to automate the manual workflows for various governance units. ![](../.gitbook/assets/image%20%2879%29.png) -### Features - -### Ready to use, **Configurable** Urban Governance Platform - -**CITIZENS** - -* Access governments easily using your mobile phone -* Your requests automatically reach the appropriate person -* Stay up to date with inbuilt notifications - -![](https://www.digit.org/wp-content/uploads/2018/05/Digit-Website.png) - -**LOCAL GOVERNMENTS** - -* Realize the benefits of data-driven governance -* Reduced paperwork for employees -* Efficient and prioritized use of resources - -![](https://www.digit.org/wp-content/uploads/2018/05/Digit-Website.png) - -**STATE GOVERNMENTS** - -* Enable all cities to become smart cities -* Drive best practice sharing across cities -* Improved urban budgeting and forecasting - -![](https://www.digit.org/wp-content/uploads/2018/05/Digit-Website.png) - -**SYSTEM INTEGRATORS** - -* Proven track record across India -* DIGIT reduces total project costs -* Ready to use & configurable governance platform - -![](https://www.digit.org/wp-content/uploads/2018/05/Digit-Website.png) - - +### Key Benefits +DIGIT enables ULBs to be more effective and accountable—and to make better, data-driven decisions. The platform ensures both interoperability among ULBs and rapid development of new modules by a wide array of software partners. +![](../.gitbook/assets/digit-_-indias-largest-open-source-platform-for-e.png) diff --git a/modules-features/product-brochures.md b/modules-features/product-brochures.md new file mode 100644 index 00000000..516427ed --- /dev/null +++ b/modules-features/product-brochures.md @@ -0,0 +1,24 @@ +--- +description: Download DIGIT Product Brochures +--- + +# Brochures + +### Property Tax + +DIGIT-Property Tax \(PT\) is a self-serve web and mobile-based, easy-to-use and configurable product that addresses the objectives of municipal corporations and local government to automate all property tax operations, thus providing property tax assessment and payment services to citizens in real-time. + +{% file src="../.gitbook/assets/property\_tax\_brochure.pdf" caption="Property Tax Brochure" %} + +### Public Grievance Redressal + +DIGIT-Public Grievance Redressal \(PGR\) is a self-serve web and mobile-based, easy-to-use and configurable product for submission of grievances by the citizens from anywhere, anytime. For the speedy and efficient resolution of civic related complaints, DIGIT-PGR facilitates the municipal employees with easy For the speedy and efficient resolution of civic related complaints, DIGIT-PGR enables the citizens to report the issues, real-time and enables municipal employees with easy identification of the issues and helps them to initiate corrective actions, without any delay. + +{% file src="../.gitbook/assets/pgr \(1\).pdf" caption="PGR Brochure" %} + + + + + + + diff --git a/modules-features/product-brochures/README.md b/modules-features/product-brochures/README.md index 73d96863..b337fc9b 100644 --- a/modules-features/product-brochures/README.md +++ b/modules-features/product-brochures/README.md @@ -2,7 +2,19 @@ description: Download DIGIT Product Brochures --- -# Product Brochures +# Brochures + +### Property Tax + +DIGIT-Property Tax \(PT\) is a self-serve web and mobile-based, easy-to-use and configurable product that addresses the objectives of municipal corporations and local government to automate all property tax operations, thus providing property tax assessment and payment services to citizens in real-time. + +[Click here](https://drive.google.com/file/d/18oRRtt-Zo3KfcAQcdnpNpRSksFEk3zw1/view?usp=sharing) to download the Property Tax brochure. + +### Public Grievance Redressal + +DIGIT-Public Grievance Redressal \(PGR\) is a self-serve web and mobile-based, easy-to-use and configurable product for submission of grievances by the citizens from anywhere, anytime. For the speedy and efficient resolution of civic related complaints, DIGIT-PGR facilitates the municipal employees with easy For the speedy and efficient resolution of civic related complaints, DIGIT-PGR enables the citizens to report the issues, real-time and enables municipal employees with easy identification of the issues and helps them to initiate corrective actions, without any delay. + +Click here to download the PGR brochure. + -This section enables you to view and download DIGIT product brochures. Follow the links to access relevant product details and insights. diff --git a/modules-features/product-brochures/brochure-pgr.md b/modules-features/product-brochures/brochure-pgr.md index 0acb2588..9007c54f 100644 --- a/modules-features/product-brochures/brochure-pgr.md +++ b/modules-features/product-brochures/brochure-pgr.md @@ -1,8 +1,4 @@ # PGR -### Overview - -DIGIT-Public Grievance Redressal \(PGR\) is a self-serve web and mobile-based, easy-to-use and configurable product for submission of grievances by the citizens from anywhere, anytime. For the speedy and efficient resolution of civic related complaints, DIGIT-PGR facilitates the municipal employees with easy For the speedy and efficient resolution of civic related complaints, DIGIT-PGR enables the citizens to report the issues, real-time and enables municipal employees with easy identification of the issues and helps them to initiate corrective actions, without any delay. - -Click here to download the PGR brochure. +### diff --git a/modules-features/product-brochures/brochure-pt.md b/modules-features/product-brochures/brochure-pt.md deleted file mode 100644 index 483029aa..00000000 --- a/modules-features/product-brochures/brochure-pt.md +++ /dev/null @@ -1,10 +0,0 @@ -# Property Tax - -### Overview - -DIGIT-Property Tax \(PT\) is a self-serve web and mobile-based, easy-to-use and configurable product that addresses the objectives of municipal corporations and local government to automate all property tax operations, thus providing property tax assessment and payment services to citizens in real-time. - -[Click here](https://drive.google.com/file/d/18oRRtt-Zo3KfcAQcdnpNpRSksFEk3zw1/view?usp=sharing) to download the Property Tax brochure. - - - diff --git a/modules-features/product-faqs.md b/modules-features/product-faqs.md index 97696a54..462bbd9b 100644 --- a/modules-features/product-faqs.md +++ b/modules-features/product-faqs.md @@ -1,2 +1,4 @@ # Product FAQs +Details will be updated soon... + diff --git a/modules-features/release-notes/README.md b/modules-features/release-notes/README.md index 4db4c16b..34f7189b 100644 --- a/modules-features/release-notes/README.md +++ b/modules-features/release-notes/README.md @@ -1,4 +1,231 @@ +--- +description: 'New release features, enhancements, and fixes' +--- + # Release Notes -Learn more about new feature additions, enhancements, and hotfixes in each release. +### Release Summary + +‌DIGIT 2.0 is a baselined release that has got few functional changes, but more of non-functional standardisation changes. + +* Functional: Introducing advance payment feature and Advance collection integration with W/S. +* Non-functional: Upgrading spring boot and tracer version of all the backend services to enhance the range of non-functional benefits like performance, metrics, and security. Also, all digit services/configs are baselined to follow the Semantic Versioning. These would enable the partner eco-system, system Integrators and state teams for easy on-going upgrades and integrations. + +### New ‌Feature Additions + + + + + + + + + + + + + + + + + + + + + + +
Feature + Description +
Advance Payments +

Ability to handle advanced payments - + platform and Reference implementation in W&S.

+

Advance Collection integration with W&S

+
API ContractsAdvance Collection integration with W&S
Infra/Ops Simplification & Enablement +

Infra & Service monitoring v1.0.0 (Prometheus, Alertmanager & + Grafana)

+
    +
  • Cluster Resource monitoring
  • +
  • Request Traffic monitoring
  • +
  • DIGIT Service monitoring
  • +
  • All Java-based services SpringBoot upgraded from 1.5.X to 2.2.6 for better + security, performance and metrics.
  • +
  • Backbone Services migrated to Helm templates to ease deployment on Kubernetes.
  • +
  • Introduced Minio as a digit platform service for SDCs to leverage S3 like + object storage feature.
  • +
  • DIGIT on Spot Instances for AWS users saves 60% of the cloud cost.
  • +
  • Configurable SSO with GitHub or Google SSO OAuth for all the Infra apps + like Jaeger, Grafana, Kibana.
  • +
  • Jenkins CI/CD as a service + with the pipelines
  • +
+
+ +### Enhancements + + + + + + + + + + + + + + + + + + + + + + +
Updated Feature + Description +
Baseline version upgrades +
    +
  • Bulk persister changes to support bulk persisting for migration in Persister + Service.
  • +
  • Localization URL params to be changed to request params in Localization + service
  • +
  • Receipt download link in SMS and email notifications.
  • +
  • Rainwater Harvesting attribute in Property Service
  • +
  • Filestore service enhancement - Support for SDC and S3 implementation.
  • +
  • Maven dependencies upgrade and merging the backend services to the master + branch (Upgraded Tracer to 2.0.0, spring boot to 2.2.6, flyway-core to + 6.4.3, etc along with code cleanup) for all the services across the services. + The Changelog has been added.
  • +
  • Baseline versioning of all the services as per the streaming strategy.
  • +
+
UI enhancements +
    +
  • Generalized Client-side PDF generation component and integration with + Property, Fire NOC, Trade License, and W&S applications).
  • +
  • Generalize acknowledgement screens component
  • +
  • MDMS namespace common component and integration with PT and TL modules.
  • +
+
Non-functional enhancements +
    +
  • Versioned Git Tags for all the services
  • +
  • Versioned MDMS and Config data.
  • +
+
+ +**Upgrade Notes** + +DIGIT 2.0 is a baselined release - considering simplification and standardization as a theme. It is strongly recommended all-state teams upgrade to leverage benefits. + +* All services versioning will follow [**SemVer 2.0**](https://medium.com/@pmuens/understanding-semver-3f75d11b4d)**,** naming conventions and Git Tagging are improved for better tracing. +* Next release might have a few more enhancements to the services naming conventions and handling MDMS and Configs better. +* **Impact**: Functionally, the upgrade to DIGIT 2.0 will not impact the existing environments. + +### Document Resources and Links + + + + + + + + + + + + + + + + +
UI Technical Documents + Backend Service Documents + Infra/Deployment Documents +
+ + + + + +
+ +### Upcoming Release Highlights + +* Renaming of the backend services with a naming convention in place. +* Config \(MDMS, Configs\) Baseline versioning. +* Readme.md and Localsetup.md documentations for Core, Business, Municipal, and Other services. + + diff --git a/modules-features/release-notes/release-2.0/service-build-updates.md b/modules-features/release-notes/configuration-changes.md similarity index 77% rename from modules-features/release-notes/release-2.0/service-build-updates.md rename to modules-features/release-notes/configuration-changes.md index 5906a17a..5fa21cfa 100644 --- a/modules-features/release-notes/release-2.0/service-build-updates.md +++ b/modules-features/release-notes/configuration-changes.md @@ -1,4 +1,166 @@ -# Build Artefacts +--- +description: Technical Release Details +--- + +# Configuration Changes + +### **MDMS changes** + +| **Feature** | **Status** | **Changes** | **Description** | +| :--- | :--- | :--- | :--- | +| BPA | New | [PR-1123](https://github.com/egovernments/egov-mdms-data/pull/1123/files) | To add an order for the documents | +| BPA | Deprecate | [PR-1037](https://github.com/egovernments/egov-mdms-data/pull/1037/files) | removed the sanction for OC low application | +| BPA | Update | [PR-1118](https://github.com/egovernments/egov-mdms-data/pull/1118/files) | To update disclaimer | +| BPA | Update | [PR-1062](https://github.com/egovernments/egov-mdms-data/pull/1062/files) | Changed URL - BPA to land | +| BPA | New | [PR-1019](https://github.com/egovernments/egov-mdms-data/pull/1019/files) | Added id Format for OC | +| BPA | New | [PR-1016](https://github.com/egovernments/egov-mdms-data/pull/1016/files) | Added checklist for OC | +| BPA | Update | [PR-1008](https://github.com/egovernments/egov-mdms-data/pull/1008/files) | Updated usages | +| BPA | Update | [PR-1007](https://github.com/egovernments/egov-mdms-data/pull/1007/files) | Updated Sub occupancy type | +| BPA | Update | [PR-1006](https://github.com/egovernments/egov-mdms-data/pull/1006) | Updated Occupancy type | +| BPA | New | [PR-997](https://github.com/egovernments/egov-mdms-data/pull/997) | Added tax period for OC | +| BPA | New | [PR-996](https://github.com/egovernments/egov-mdms-data/pull/996/files) | Added tax headmaster for OC | +| BPA | New | [PR-995](https://github.com/egovernments/egov-mdms-data/pull/995/files) | Added billing service for OC | +| BPA | Update | [PR-1162](https://github.com/egovernments/egov-mdms-data/pull/1162/files) | Changed id format for BPA permit | +| W&S | Update | [PR-1043](https://github.com/egovernments/egov-mdms-data/pull/1043) | To update the ID format | +| W&S | Update | [PR-1058](https://github.com/egovernments/egov-mdms-data/pull/1058) | to update application types | +| TL | Update | [PR-1160](https://github.com/egovernments/egov-mdms-data/pull/1160) | Updated URL for Required doc screen | +| TL | Update | [PR-1125](https://github.com/egovernments/egov-mdms-data/pull/1125) | Updated rebate and penalty | +| TL | Update | [PR-1133](https://github.com/egovernments/egov-mdms-data/pull/1133) | TL Renewal changes | +| UC | New | [PR-1106](https://github.com/egovernments/egov-mdms-data/pull/1106) | Added disclaimer in the footer | +| Localization | New | [PR-1073](https://github.com/egovernments/egov-mdms-data/pull/1073) | Added new action for v2 localisation search | +| Reports | Deprecate | [PR-1170](https://github.com/egovernments/egov-mdms-data/pull/1170) | Disabling the Reports and UI localization Links | + +### Backend Config Changes + +| **Module** | **Action** | **PR** | **Description** | +| :--- | :--- | :--- | :--- | +| W&S | Update | [PR-357](https://github.com/egovernments/configs/pull/357) | To update bill PDF advance adjusted changes | +| W&S | Update | [PR-340](https://github.com/egovernments/configs/pull/340) | To Update PDF format | +| W&S | Update | [PR-342](https://github.com/egovernments/configs/pull/342) | To add Advance and pending amount conditional logic | +| W&S | Update | [water-meter.yml](https://github.com/egovernments/configs/commit/d213b8fbc71c8adc67df393b30c8be9ea923e24f#diff-cad1acac07cf6e6c1843536937285a4d) | To add tenant Id in the eg\_ws\_meterreading table | +| W&S | Update | [ws-bill.json](https://github.com/egovernments/configs/commit/900e8e1c59ebc12f4bea49f52063f524aabf3830#diff-b5d08abcd9524da252a33fcff4c515f8) | To update the WS bill PDF format | +| BillGenie | Update | [bill-genie.yml](https://github.com/egovernments/configs/commit/0f3708cdcf6fba00aa36aab5baeae9a7eeb3ab62#diff-9352898a62515ccb3822f24506a37090) | To Update lower cases search | +| BPA | Update | [land-persister.yml](https://github.com/egovernments/configs/commit/5682f1adb60b40663fe13d545e0c865ad4537b08) | Added audit details for owner | +| BPA | Deprecate | [bpa-persister.yml](https://github.com/egovernments/configs/commit/9ae764474a702249cd3aaefa806a3331a37e0364) | Removed land info from bpa-persister | +| BPA | New | [egov-bpa-indexer.yml](https://github.com/egovernments/configs/commit/47528052b4904ce5ab679324f13165458a83d05a) | Added indexer for BPA | +| BPA | New | [rainmaker-bpastakeholder-indexer.yml](https://github.com/egovernments/configs/commit/47528052b4904ce5ab679324f13165458a83d05a) | Added indexer for stakeholder Registration | +| BPA | Update | [bpa-revocation.json](https://github.com/egovernments/configs/commit/47528052b4904ce5ab679324f13165458a83d05a) | Changed owners to land info and added revocation letter content | +| BPA | New | [buildingpermit-low.json](https://github.com/egovernments/configs/commit/47528052b4904ce5ab679324f13165458a83d05a) | Added report run date | +| BPA | New | [buildingpermit.json](https://github.com/egovernments/configs/commit/47528052b4904ce5ab679324f13165458a83d05a) | Added report run date | +| BPA | New | [occupancy-certificate.json](https://github.com/egovernments/configs/commit/47528052b4904ce5ab679324f13165458a83d05a) | Added OC certificate | +| BPA | Update | [bpa-revocation.json](https://github.com/egovernments/configs/commit/47528052b4904ce5ab679324f13165458a83d05a) | Updated texts | +| BPA | Update | [buildingpermit.json](https://github.com/egovernments/configs/commit/47528052b4904ce5ab679324f13165458a83d05a) | Changed alignment and added QA code | +| BPA | New | [occupancy-certificate.json](https://github.com/egovernments/configs/commit/47528052b4904ce5ab679324f13165458a83d05a) | Added for OC | +| BPA | Update | [buildingpermit-low.json](https://github.com/egovernments/configs/commit/3da5fcefeedda4b13eda3128b42c8e87aea6697a) | Changed alignment and added QA code | +| BPA | New | [occupancy-certificate.json](https://github.com/egovernments/configs/commit/143dda97f86e06544868ec92d5816766ea128e75) | Added for OC | +| BPA | Update | [noc-persister.yml](https://github.com/egovernments/configs/commit/b94803a5d2e700b56c35b89b8cde5e1e32cfdbc4) | Changed filestore to filestoreId | +| BPA | Update | [noc-persister.yml](https://github.com/egovernments/configs/commit/5f7eafdf3339d49a736d31c50037333a11c0f114) | Updated NOC persister | + +### Infra Changes + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ModuleFile NameActionCode Change
W&S +

+

helm/charts/municipal-services/sw-services/values.yaml

+
+

+

Removed the following details from values.yml

+
scid-format: "SW/[CITY.CODE]/[fy:yyyy-yy]/[SEQ_EGOV_COMMON]" +
+

+

EGOV_IDGEN_SCID_FORMAT

+
value: {{ index .Values "scid-format" | quote }} +
helm/charts/municipal-services/ws-services/values.yamlRemoved the following details from values.ymlwcid-format: "WS/[CITY.CODE]/[fy:yyyy-yy]/[SEQ_EGOV_COMMON]" +
EGOV_IDGEN_WCID_FORMATvalue: {{ index .Values "wcid-format" | quote }} +
+

+

helm/environments/<env>.yaml

+
Autocreate-new-seq flag must be enabled in IdGen Service of the environment + fileautocreate-new-seq: "true" +
+

+

helm/environments/qa.yaml

+
+

+

change the key from allowed-file-formats: to allowed-file-formats-map +

+
+

+

helm/charts/municipal-services/firenoc-services/values.yaml

+
+

+

Added EGOV_DEFAULT_STATE_ID in fire NOC environment file to pick up proper + tenant during search call

+
+

+

+
SMS Notification Servicehelm/charts/core-services/egov-notification-sms/values.yaml +

Added sms.config.map property for SMS changes-Remove the sms.config.map + from the values.yml file

+

It should move to helm/environments/qa.yaml +

+
sms-config-map: "{'User':'$username', 'passwd': '$password', 'sid':'$senderid', 'mobilenumber':'$mobileno', 'message':'$message', 'mtype':'N', 'DR':'N', 'smsservicetype':'singlemsg'}" +
+ +### Service Build Artefacts @@ -730,31 +892,16 @@ - - - - - - - - - - - - - - - - - - - - - - - -
Deprecated - egov-data-uploader
egov-common-masters
egov-index-custom-consumer
+### Deprecated Features + +* egov-data-uploader +* egov-common-masters +* egov-index-custom-consumer + + + + + diff --git a/modules-features/release-notes/product-release-notes/README.md b/modules-features/release-notes/product-release-notes/README.md new file mode 100644 index 00000000..fac0e76f --- /dev/null +++ b/modules-features/release-notes/product-release-notes/README.md @@ -0,0 +1,15 @@ +--- +description: Module specific release details +--- + +# Product Release Notes + +This section contains individual product module release details. Click on the product links below to find out specific details on new features, updates and enhancements. + +* [BPA Release Notes](bpa-release-notes.md) +* [Trade License Release Notes](trade-license-release-notes.md) +* [Property Tax Release Notes](property-tax-release-notes.md) +* [Public Grievance & Redressal Release Notes](public-grievance-and-redressal-release-notes.md) +* [Water & Sewerage Release Notes](water-and-sewerage-release-notes.md) +* [Advance Payments Release Notes](advance-payments-release-notes.md) + diff --git a/modules-features/release-notes/product-release-notes/advance-payments-release-notes.md b/modules-features/release-notes/product-release-notes/advance-payments-release-notes.md new file mode 100644 index 00000000..ab9e31da --- /dev/null +++ b/modules-features/release-notes/product-release-notes/advance-payments-release-notes.md @@ -0,0 +1,135 @@ +# Advance Payments Release Notes + +### Overview + + Advance payments feature helps citizens to make a payment more than the pending amount. The platform informs the citizen about the excess amount paid and the amount available as an advance in the bills and receipts. + +### Release Highlights + +1. Pay/ Adjust excess amount against the demand generated +2. Generate Receipt showing the excess payment +3. Generate Bill with advance amount adjustment + +### Release Features + + + + + + + + + + + + + + + + + + + + + + + + + + +
Key Feature + Description +
Advance Carry Forward Tax head +
    +
  1. If excess amount present against the consumer no. is displayed on the + UI under this Tax Head on Bill Summary Pages
  2. +
  3. After the creation of new demand, this amount is adjusted against the + other Tax heads and displayed on the UI
  4. +
+
Ability to pay more than Bill Amount +
    +
  1. Provision to make a payment under either 'Full amount' or 'Custom + amount' options
  2. +
  3. A citizen can enter the desired amount under 'Custom amount ' + option
  4. +
  5. Amount entered can be either less or more than the bill amount. So partial + payment and advance payment both are possible.
  6. +
+
Changes in Receipt Format +

Two extra fields are provided in the Common Receipt Format

+
    +
  1. Total Bill Amount: Includes arrears, taxes, demand, advance adjusted
  2. +
  3. Advance available: Advance amount available against a particular consumer
  4. +
+
Changes in Bill Format +

Two extra fields are provided in the Common Bill Format

+
    +
  1. Advance available: Advance amount available against a particular consumer
  2. +
  3. Advance adjusted: Amount available under advance which is utilized against + a particular demand
  4. +
+
+ +### Known Issues + +| **Issue** | **Description** | +| :--- | :--- | +| Bill amount incorrectly calculated | 'Due amount' miscalculation, if multiple meter readings are added without payment | +| Advance adjusted incorrectly calculated | 'Advance adjusted' miscalculated in the bill PDF | + +### Upcoming Release Feature + + + + + + + + + + + + + + + + + + +
Key FeatureDescription
+

+

Cap on the amount entered

+
+

+
    +
  1. There is a check provided to inform the user about the amount entered + when it crosses a certain limit.
  2. +
  3. The user gets an alert message in the form of warning when a certain amount + is entered which crosses the limit.
  4. +
  5. Check is provided based on two conditions, any point of time it is the + maximum of either +
      +
    1. Fix amount, or
    2. +
    3. 10 x Bill amount
    4. +
    +
  6. +
  7. Note to be taken that, there is no restriction over the maximum amount + that can be paid
  8. +
+
+

+

Changes in Bill PDF

+
+

+
    +
  1. Tax heads must display 'unadjusted' values on the bill PDF
  2. +
+
+ +### Reference Doc Links + +| **Doc Links** | **Description** | +| :--- | :--- | +| | | +| | | + diff --git a/modules-features/release-notes/product-release-notes/bpa-release-notes.md b/modules-features/release-notes/product-release-notes/bpa-release-notes.md new file mode 100644 index 00000000..9c3a3a5c --- /dev/null +++ b/modules-features/release-notes/product-release-notes/bpa-release-notes.md @@ -0,0 +1,114 @@ +# BPA Release Notes + +### Overview + +Occupancy certificate is an additional service in the building plan module. The architect has to apply for an occupancy certificate after completing the construction with the permit issued by the ULB/Department as reference. + +To create an Occupancy certificate, OC eDCR scrutiny is mandatory where the architect has to submit the diagram of the actual construction. It is normal that there will be some deviation from what was planned for construction and what was actually constructed. + +OC eDCR will validate whether the actual construction is complying to the by-laws and check for deviation from the originally planned diagram for which the permit was issued. + +### Release Highlights + +1. eDCR scrutiny for Occupancy certificate with the by-laws as on permit eDCR scrutiny date. +2. Comparison report between permit diagram and OC diagram +3. Create the Occupancy Certificate Application with OC eDCR scrutiny as reference. +4. Payment Gateway Integration for Application Fee and deviation penalty. +5. Check the status of the application. +6. Download artefacts + +### Release Features + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Key Features + Description +
Citizen options +
    +
  1. Validate the application created by the Stakeholder
  2. +
  3. Make Payment for the application fee and deviation penalty
  4. +
  5. Check the status of the application
  6. +
  7. Download artefacts
  8. +
  9. Respond to queries/clarifications raised by the ULB/Department
  10. +
+
+

Employee options

+

Document Scrutiny

+
+
    +
  1. Verify the document uploaded by the architect
  2. +
  3. Upload documents on behalf of the citizen
  4. +
  5. Forward to the next level officer in the workflow or reject the application
  6. +
  7. Ask for additional information from the citizen
  8. +
+
Field Inspection +
    +
  1. Conduct field inspection and update the field inspection report +
      +
    1. Provision to upload multiple field inspection reports
    2. +
    +
  2. +
  3. Upload site images to the application
  4. +
  5. Forward to the next level officer in the workflow or reject the application
  6. +
  7. Ask for additional information from the citizen
  8. +
+
NOC verification +
    +
  1. Verify the NOCs uploaded by the stakeholder
  2. +
  3. Upload NOCs which the ULB official received from the NOC department offline
  4. +
  5. Forward to the next level officer in the workflow or reject the application
  6. +
  7. Ask for additional information from the citizen
  8. +
+
Application approval +
    +
  1. Add permit conditions to the application
  2. +
  3. Reject the application based on the facts presented by other officials + in the workflow
  4. +
  5. Ask for additional information from the citizen
  6. +
  7. Approve the application
  8. +
+
Other features +
    +
  1. Deviation penalty is calculated based on the comparison report
  2. +
  3. SMS notification to the citizen/stakeholder on change of workflow state
  4. +
+
+ +### Reference Doc Links + +| **Doc Links** | **Description** | +| :--- | :--- | +| | BPA User Manual | +| | BPA Configuration | + diff --git a/modules-features/release-notes/product-release-notes/property-tax-release-notes.md b/modules-features/release-notes/product-release-notes/property-tax-release-notes.md new file mode 100644 index 00000000..b060e894 --- /dev/null +++ b/modules-features/release-notes/product-release-notes/property-tax-release-notes.md @@ -0,0 +1,35 @@ +# Property Tax Release Notes + +### Overview + + The Property Tax System in DIGIT provides a digital interface to make property assessments, pay property tax, generate payment receipts or monitor and generate tax collection reports. It can be used by citizens, Urban Local Body \(ULB\) counter employees, field employees, and ULB Administrators to accomplish their specific tasks. + +### Release Highlights + +1. Ability to search Property in public domain +2. Ability to make Property tax payments without login in DIGIT +3. Payment link in the SMS and email notification +4. Enable email notification for property tax +5. Payment QR code on bills +6. Enlisting documents required to apply for property registration and transfer of ownership + +### Release Features + +| **Key Feature** | **Description** | +| :--- | :--- | +| Ability to search Property in public domain | This feature provides the ability to search properties registered in our system in the public domain. Users do not have to log in to our platform to see the property owners and due details. | +| Ability to make property tax payments without login in DIGIT | Citizens can pay their property tax dues without having to login into the system. Citizens can access this feature from open search, SMS/email notification, or any physical artefact having a payment link. | +| Payment link in the SMS and email notification | At the time of bill generation, SMS and an email notification will be triggered to the citizen’s registered IDs. The notification will have a payment link that will direct the citizen to the DIGIT common payment page. User does not have to log in. | +| Enable email notification for property tax | Email notification is configured for the property tax module. An email notification will also be triggered to the registered ID along with the SMS. The trigger for SMS and email notification can be configured. | +| Payment QR code on bills | Property tax bills will have a payment QR code printed. Each bill will have a unique QR code which will be a link to the common pay page. | +| Enlisting documents required to apply for property registration and transfer of ownership | Before initiating property registration and transfer of ownership application, the citizen will be informed about the documents required to complete the application. The list of documents can be configured based on the state’s requirements. | + +### Reference Doc Links + +| **Doc Links** | **Description** | +| :--- | :--- | +| | Property Tax User Manual | +| | Property Tax Configuration | + + + diff --git a/modules-features/release-notes/product-release-notes/public-grievance-and-redressal-release-notes.md b/modules-features/release-notes/product-release-notes/public-grievance-and-redressal-release-notes.md new file mode 100644 index 00000000..049206f8 --- /dev/null +++ b/modules-features/release-notes/product-release-notes/public-grievance-and-redressal-release-notes.md @@ -0,0 +1,67 @@ +# Public Grievance & Redressal Release Notes + +### Overview + + PGR is a standardized solution offering on DIGIT platform to register and redress citizen grievances. It provides a transparent and trackable mechanism to solve public grievances by inducing responsive administration. PGR enables the citizens to file the complaints using various channels and helps the municipal employees to resolve them in a timebound manner. + +### Release Highlights + +1. Additional user role added - Provision for the additional role of state CSR for addressing Public Grievances +2. Display the exact count of assigned or unassigned complaints in GRO/LME inbox + +### Release Features + + + + + + + + + + + + + + + + + + +
Key Feature + Description +
Additional user role added - Provision for the additional role of state + CSR for addressing Public Grievances +
    +
  1. An employee having role State CSR will be able to file a complaint in + any city (which is live on the system) on behalf of the citizen
  2. +
  3. The state CSR will be able to able to search complaints in all ULB and + track the status of complaint if enquired by a citizen on the basis of + complaint number or mobile number
  4. +
  5. The state CSR will have access to state-level reports to review the performance + across ULBs
  6. +
+
Display the exact count of assigned or unassigned complaints in GRO/LME + inbox +
    +
  1. GRO will see the total count of complaints that are unassigned and assigned + in his/her inbox and complaint displayed to him
  2. +
  3. LME will see the count of open complaints in his inbox and complaints + which are displayed
  4. +
  5. GRO/LME will be able to see complaints and take action on the complaints + in the queue (past 200 records) when he/she takes action on displayed records
  6. +
+
+ +* **Support for New Role- State CSR** - The Grievance Counter is one of the channels through which citizens can file a complaint in person or through a telephone. There could be different types of counters both at ULB level or at State level, for example, CM helpline, local government-related helplines, etc. The first version of PGR has provision for ULB level counter where the employee \(ULB CSR\) can file complaints on behalf of the citizen. The current enhancement has provision for the additional role of state-level CSR who can file complaints or track status on behalf of citizens in any city in the state. This is irrespective of ULB where the CSR is registered. This provides a central monitoring capability to the State level CSR as well as improves the responsiveness by cutting down the time to redress a complaint. +* **Display the exact count of complaints assigned** - This feature focuses on showing the exact count of complaints the GRO \(Grievance Redressal Officer\) or LME \(Last-Mile Employee\) has in their Inbox. The GRO will have the visibility to all unassigned and assigned complaints. The LME will know the exact count of open complaints against his name. The initial version has only a count of complaints in GRO/LME Inbox which are displayed to that employee. Also, it had a restriction on the number of complaint records displayed, which was fixed at 200. This enhancement helps the GRO/LME to have a correct estimate of the work. + +![](blob:https://digit-discuss.atlassian.net/7f949e40-3ee2-4eef-98f0-30ece30f0e73#media-blob-url=true&id=4d067959-7f98-4bee-932d-f6af66848a1f&collection=contentId-700809219&contextId=700809219&mimeType=image%2Fpng&name=PGR-enhancement1.png&size=162912&width=613&height=373) + +### Reference Doc Links + +| **Doc Links** | **Description** | +| :--- | :--- | +| | | +| | | + diff --git a/modules-features/release-notes/product-release-notes/trade-license-release-notes.md b/modules-features/release-notes/product-release-notes/trade-license-release-notes.md new file mode 100644 index 00000000..011df799 --- /dev/null +++ b/modules-features/release-notes/product-release-notes/trade-license-release-notes.md @@ -0,0 +1,116 @@ +# Trade License Release Notes + +### Overview + +Trade License v2.0 enables seamless and hassle-free renewal mechanism for existing trade licenses. Separate workflows for unedited and edited renewal applications to accelerate the process. + +### Release Highlights + +* The renewal application can be generated for any existing trade license +* Users can edit trade type and owner details before submitting the renewal application +* Separate workflows for unedited and edited renewal applications +* The one-touch renewal process is applicable for unedited applications too +* Users will receive SMS notifications for renewal application progress + +### Release Features + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Key Feature + Description +
License Renewal Application Updates +
    +
  1. Renewal Application Type - A renewal application has to be filed in order + to renew old license
  2. +
  3. Search Trade License - Users can search for TL using parameters- TL No. + or Mobile No.
  4. +
  5. View Trade License Details - Users can view all the details of old license + and verify details
  6. +
  7. Edit Specific Fields only - Users can edit only specific allowed fields + - Trade Unit, Accessories, Mobile Number
  8. +
  9. Attach Required Documents - Users can reupload old documents or upload + additional documents
  10. +
  11. Review Trade License Details - Users can review all the updated details
  12. +
  13. View Fee Estimate and Breakup - Users can view fee estimates and breakup + for renewal applications
  14. +
  15. Submit Renewal Application - Users can submit the renewal application
  16. +
+
Renewal Workflow Updates +
    +
  1. The same workflow for edited renewal license application as for the new + application - If the license details have been edited, then the application + undergoes the same workflow as the new application
  2. +
  3. Separate Workflow for unedited renewal licenses application - If the user + directly confirms details without editing then there should be a separate + workflow for the renewal application which in general practice would be + Apply-Pay-Download Trade License
  4. +
+
Calculation Updates +
    +
  1. Separate Fee Matrix for Renewal - Fees for renewal applications can be + different from new applications. The Fee matrix should incorporate application + type as an additional parameter
  2. +
  3. Time-Based Penalty/Rebate - In case of late renewals, the system should + be able to apply penalties in terms of fixed charge or percentage of trade + license charge. Vice versa in case of Rebate
  4. +
  5. Ad Hoc Penalty and Rebate - Ability to Employees for adding any ad hoc + penalty/rebate
  6. +
+
Notification Updates +
    +
  1. Application Submission - Citizen will get the notification as soon as + he submits a renewal application
  2. +
  3. At all workflow steps - Citizens should get notifications at all stages + of the workflow. Detailed in Notification Segment
  4. +
+
Reports Updates +
    +
  1. Application Type Filters - New and Renew Application type segregation + in Reports
  2. +
  3. Expired Licenses Registry - Registry for Employees to identify expired + licenses
  4. +
+
Edit Updates +
    +
  1. Editable allowed fields - In case of renewal, users should be able to + edit only allowed fields (Trade Type, Accessories, Documents)
  2. +
+
+ +### Reference Doc Links + +| **Doc Links** | **Description** | +| :--- | :--- | +| [TL Renewal Technical Documentation](https://digit-discuss.atlassian.net/wiki/spaces/EPE/pages/edit-v2/231636995?draftShareId=c160aad5-d7d6-4b4a-9185-11caa6040e70) | Technical docs for TL renewal | + diff --git a/modules-features/release-notes/product-release-notes/water-and-sewerage-release-notes.md b/modules-features/release-notes/product-release-notes/water-and-sewerage-release-notes.md new file mode 100644 index 00000000..778a452b --- /dev/null +++ b/modules-features/release-notes/product-release-notes/water-and-sewerage-release-notes.md @@ -0,0 +1,436 @@ +# Water & Sewerage Release Notes + +### Overview + +Version 2.0 of 'Water & Sewerage' product allows the user to Apply for a New Water/Sewerage connection online. A citizen can apply for a new Water/ Sewerage connection Individually or in an Integrated manner. Citizen will receive a text and in-app notification on each step of the workflow. The Applications can be tracked online, in the 'My Applications' section provided to the citizen. Online application payment, send back to the citizen are some other features available for the citizen. Employees can search and process the application filed by the citizen. Some other features are workflow approval process, application payment collection etc. + +### Release Highlights + +1. W&S and Property integration, while applying for a New connection +2. Generation of artefacts at a desired stage of the application \(For eg. Generation of 'estimation notice' after the 'field inspector' approves the application\) +3. 'Send back' as a workflow step to facilitate employees to carry out, the desired correction in the application +4. Separate 'Search' for 'Connections' and 'Applications' on Employee side +5. Apply for an Integrated connection and track the applications individually \(Configurable workflow and calculation logic\) +6. The citizen can manage applications in the 'My Application' section also make payment for the application online. +7. Capture plumber information +8. Usage of Property ontology to cater to diverse use cases \(For eg. Water/Sewerage connections for Institutional, Commercial properties etc.\) + +### Release Features + + The W&S Version 2.0 release is equipped to allow citizens and employee to create an application for new water and sewerage connection online. The application is designed to facilitate the following affordance: + +* Apply for water/sewerage connections including metered and non metered connection +* Addition of rebate/penalty on the employee side to cater use cases pertaining to the presence of any schemes +* Linkage of Property and W&S connection for a user +* Configurations available + * Workflow actions and steps for application processing + * Calculation logic for water and sewerage estimated demand + * Estimation notice and sanction letter format + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Key Features + Description +
Apply for new Water/Sewerage connection +
    +
  1. The user can apply for the connection individually or integrated
  2. +
  3. For integrated connection, two separate applications are created. These + applications are processed separately and can have a separate workflow, + fee payment, SLAs, calculation logic etc.
  4. +
+
Role-Based Access for Employees +
    +
  1. Configurable role-action mapping
  2. +
  3. Actors, actions and state can be configured as required
  4. +
  5. Send back the application to the citizen
  6. +
+
Property Integration +
    +
  1. User can use his/her property ID to fetch property-related information + and on the basis of that apply for a connection
  2. +
+
Capture Plumber details +
    +
  1. Plumber information ie. name, number, licence no. are captured in the + system
  2. +
  3. Better Communication and transparency, by bringing plumber info in the + system
  4. +
+
'How it works' section +
    +
  1. Videos can be uploaded about how to apply for a W&S connection
  2. +
  3. FAQs to handle common doubts
  4. +
+
My Applications (Citizen) +
    +
  1. Applications filed by citizen are maintained in the 'My Application' + section
  2. +
  3. The citizen can take required actions on the application ie. pay the fee, + modify, track, submit, resubmit etc.
  4. +
+
Employee search screen +
    +
  1. Applications and connections can be searched using separate screens
  2. +
  3. Different search parameters and search results, more flexibility
  4. +
  5. Apply/Collect fee on behalf of citizen
  6. +
+
Pay application fee +
    +
  1. The citizen can pay the estimated connection charges online using the + card
  2. +
  3. Payment link in the application, mSeva notification, SMS notification
  4. +
  5. The citizen can make payment at the counter using cash, DD, cheque
  6. +
+
Misc. features +
    +
  1. All artefacts formats ie. application form, estimation notice and sanction + letter are configurable
  2. +
  3. Citizens can maintain and download the artefacts
  4. +
  5. Citizen gets notified at each workflow step
  6. +
  7. Payment link in the SMS
  8. +
  9. All the labels, legend names, etc. can be configured using localization + service. It can support multiple languages
  10. +
  11. For better usability and experience, the mobile view is optimized for + each screen design
  12. +
+
+ +**Notifications format** + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Code + Type of Notification + Flow + Trigger Point + Receivers + SMS Message + In-app notification +
NC-1Event-basedApplication submittedApplication SubmissionAll Owners + ApplicantDear <Owner Name>, You have successfully submitted your application + for a New <Service> Connection. Your Application No. is <Application + number>. Click here to download your application <Application download + link>. For more information, please log in to <mseva URL> or download + <mseva app link>. +

Dear <Owner Name>, You have successfully submitted your application + for a New <Service> Connection. Your Application No. is <Application + number>.

+

Action Button: Download Application

+
NC-2Event-basedApplication rejectedDV/JE/AP Rejects ApplicationAll Owners + ApplicantDear <Owner Name>, Your Application <Application number> for + a New <Service> Connection has been rejected. For more details, please + log in to <mseva URL> or download <mseva app link>.Dear <Owner Name>, Your Application <Application number> for + a New <Service> Connection has been rejected. Click here for more + details <View History Link>
NC-3Event-basedApplication sent backDV/JE/AP sends back ApplicationAll Owners + ApplicantDear <Owner Name>, Your Application <Application number> for + a New <Service> Connection has been sent back. For more details, + please log in to <mseva URL> or download <mseva app link>.Dear <Owner Name>, Your Application <Application number> for + a New <Service> Connection has been sent back. Click here for more + details <View History Link>
NC-4Event-basedDV : Application forwardedDV forwards ApplicationAll Owners + ApplicantDear <Owner Name>, Status of your application <Application number> + for a New <Service> Connection has changed to ‘Pending for + field inspection' from 'Pending for document verification’. + For more details, please log in to <mseva URL> or download <mseva + app link>.Dear <Owner Name>, Status of your application <Application number> + for a New <Service> Connection has changed to ‘Pending for + field inspection' from 'Pending for document verification’. + To track your application, click on <View History Link>
NC-5Event-basedJE : Application forwardedJE forwards ApplicationAll Owners + ApplicantDear <Owner Name>, Status of your application <Application number> + for a New <Service> Connection has changed to ‘Pending : Approval + for connection' from 'Pending for field inspection’. For + more details, please log in to <mseva URL> or download <mseva + app link>.Dear <Owner Name>, Status of your application <Application number> + for a New <Service> Connection has changed to ‘Pending: Approval + for connection' from 'Pending for field inspection’. To + track your application, click on <View History Link>
NC-6Event-basedAP: Application approves for connectionApprover approves for ConnectionAll Owners + ApplicantDear <Owner Name>, Your New <Service> connection against the + application <Application number> has been approved. To make payment + against your application, please click on <payment link> . Log in + to <mseva URL> or download <mseva app link> for more details. +

Dear <Owner Name>, Your New <Service> connection against the + application <Application number> has been approved. To make payment + against your application, please click on PAY NOW.

+

Action button: PAY NOW

+
NC-7Event-basedMake PaymentCitizen/CEMP makes paymentAll Owners + ApplicantDear <Owner Name> , Your payment for New <Service> connection + against the application <Application number> has been been successfully + recorded. You can download your receipt using this link <receipt download + link>. For more details, please log in to <mseva URL> or download + <mseva app link>. +

Dear <Owner Name> , Your payment for New <Service> connection + against the application <Application number> has been been successfully + recorded. You can download the receipt by clicking DOWNLOAD RECEIPT

+

Action button: DOWNLOAD RECEIPT

+
NC-8Event-basedConnection activationCL activates connectionAll Owners + ApplicantDear <Owner Name>, Your New <Service> connection against the + application <Application number> has been activated. To check your + connection details, please log in to <mseva URL> or download <mseva + app link>.Dear <Owner Name>, Your New <Service> connection against the + application <Application number> has been activated. To check your + connection details, click here <connection details page>.
NC-9Event-basedApplication editedDV/JE/AP Edits the ApplicationAll Owners + ApplicantDear <Owner Name>, Your Application <Application number> for + a New <Service> Connection has been edited. For more details, please + log in to <mseva URL> or download <mseva app link>.Dear <Owner Name>, Your Application <Application number> for + a New <Service> Connection has been edited. Click here for more details + <View History Link>
+ +### Known Issues + +* 'Property Type' localization value missing +* Owner details, in case of multiple owners, need to refresh for getting other names +* Not able to find Jalandhar property, Not working for Nawashahr as well \(For both citizen and employee\) + * PB-PT-2020-04-04-004623 \(Nawashahr\) + * PB-PT-2020-03-23-004500 \(Jalandhar\) +* Displaying random value in case of multiple owners +* Connection details missing from the Application summary page +* Incorrect names and random DOB value in Application summary page +* Application-based on the same property has different values for "Rainwater harvesting": Sewerage application: SW\_AP/1013/2020-21/062956 Water application: WS\_AP/1013/2020-21/062955 +* Application forms PDFs for the applications mentioned above have incorrect values for mentioned fields + * No. of floors \(It is not captured as a part of the property in case of Flat/part of a building, so this value is random\) + * Property Sub Usage type +* After submission of the application by the counter employee, + * Downloaded application PDF did not have meter installation date value, which was not also filled in the first place, + * Task details page of Doc verifier is displaying a random date for the meter installation date + * Downloaded application PDF by doc verifier still doesn't have the meter installation date +* No download/Print option to DV, FI, AP after submission \(Artifacts are needed to be downloaded\) +* Metered connection getting executed without initial meter reading + +### Upcoming Release Feature + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Features + Capability + Priority +
Misc features +

Keep the same consumer no.

+

Enhance flow(Restrict actions)

+
P2
Legacy Data Upload and ManagementFacilitate legacy data upload including connection details and DCB details. + Provision to correct connection details and accounts due to error while + uploading data.P1
Integrated Bill +

Group connections against Property ID

+

Remittance in Different bank accounts

+

Generate integrated bills

+
P1
Handling advance paymentAccepting advance paymentP1
Door-step billing and collectionEdit meter reading. Ability to enable a door to door collection and generating + bills on the spot once meter reading is updated in the systemP1
Connection against non-owner +

Title transfer

+
    +
  • Transfer of connection
  • +
  • Mutation
  • +
+
P2
Block-level due date on billsAbility to Define different Due dates at Ward level (within the ULB)P1
Apply flows +

Change of usage

+

Non metered to metered

+

Regularizing connection

+
P2
+ +### Reference Doc Links + + + + + + + + + + + + + + +
Doc Link + Description +
+ + Apply for a new Water/Sewerage connection
+ diff --git a/modules-features/release-notes/release-2.0/2.0-api-contracts/README.md b/modules-features/release-notes/release-2.0/2.0-api-contracts/README.md deleted file mode 100644 index 216fef09..00000000 --- a/modules-features/release-notes/release-2.0/2.0-api-contracts/README.md +++ /dev/null @@ -1,2 +0,0 @@ -# API Contracts - diff --git a/modules-features/release-notes/release-2.0/2.0-api-contracts/ws-contracts.md b/modules-features/release-notes/release-2.0/2.0-api-contracts/ws-contracts.md deleted file mode 100644 index 57cb14ae..00000000 --- a/modules-features/release-notes/release-2.0/2.0-api-contracts/ws-contracts.md +++ /dev/null @@ -1,34 +0,0 @@ -# WS Contracts - -{% api-method method="get" host="" path="" %} -{% api-method-summary %} -Create -{% endapi-method-summary %} - -{% api-method-description %} - -{% endapi-method-description %} - -{% api-method-spec %} -{% api-method-request %} -{% api-method-headers %} -{% api-method-parameter name="" type="string" required=false %} - -{% endapi-method-parameter %} -{% endapi-method-headers %} -{% endapi-method-request %} - -{% api-method-response %} -{% api-method-response-example httpCode=200 %} -{% api-method-response-example-description %} - -{% endapi-method-response-example-description %} - -``` - -``` -{% endapi-method-response-example %} -{% endapi-method-response %} -{% endapi-method-spec %} -{% endapi-method %} - diff --git a/modules-features/release-notes/release-2.0/2.0-changelog.md b/modules-features/release-notes/release-2.0/2.0-changelog.md deleted file mode 100644 index c3e12527..00000000 --- a/modules-features/release-notes/release-2.0/2.0-changelog.md +++ /dev/null @@ -1,392 +0,0 @@ -# Changelog - -### Hotfixes - - - - - - - - - - - - -
Reference Links
-

- -
- -### Documentation Links & Resources - -The tables below contain an exhaustive list of technical and configuration documents created or updated for DIGIT 2.0. - -#### Backend Service Documents - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Document Title - Description -
- -
- -
- -
- -
- -
- -
- -
- -
- -
- -
- -
- -
- -
- -
- -#### UI Technical Documents - -| **Document Title** | **Description** | -| :--- | :--- | - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Document Title - Description -
- -
- -
- -
- -
- -
- -
- -
- -
- -
- -
- -
- -
- -
- -
- -
- -#### Infra/Deployment Documents - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Document Title - Description -
- -
- -
-
    -
  • Grafana dashboard - for Infra and Service monitoring
  • -
-
- -
- -
- - - diff --git a/modules-features/release-notes/release-2.0/2.0-localisation.md b/modules-features/release-notes/release-2.0/2.0-localisation.md deleted file mode 100644 index 3776c6c7..00000000 --- a/modules-features/release-notes/release-2.0/2.0-localisation.md +++ /dev/null @@ -1,6 +0,0 @@ -# Localisation - -### Localisation Features - - - diff --git a/modules-features/release-notes/release-2.0/2.0-mdms-config-change.md b/modules-features/release-notes/release-2.0/2.0-mdms-config-change.md deleted file mode 100644 index e4be29c3..00000000 --- a/modules-features/release-notes/release-2.0/2.0-mdms-config-change.md +++ /dev/null @@ -1,105 +0,0 @@ -# MDMS & Config Changes - -**MDMS changes** - -| **Feature** | **Status** | **Changes** | **Description** | -| :--- | :--- | :--- | :--- | -| BPA | New | [PR-1123](https://github.com/egovernments/egov-mdms-data/pull/1123/files) | To add an order for the documents | -| BPA | Deprecate | [PR-1037](https://github.com/egovernments/egov-mdms-data/pull/1037/files) | removed the sanction for OC low application | -| BPA | Update | [PR-1118](https://github.com/egovernments/egov-mdms-data/pull/1118/files) | To update disclaimer | -| BPA | Update | [PR-1062](https://github.com/egovernments/egov-mdms-data/pull/1062/files) | Changed url - bpa to land | -| BPA | New | [PR-1019](https://github.com/egovernments/egov-mdms-data/pull/1019/files) | Added ID format for OC | -| BPA | New | [PR-1016](https://github.com/egovernments/egov-mdms-data/pull/1016/files) | Added checklist for OC | -| BPA | Update | [PR-1008](https://github.com/egovernments/egov-mdms-data/pull/1008/files) | Updated usages | -| BPA | Update | [PR-1007](https://github.com/egovernments/egov-mdms-data/pull/1007/files) | Updated Sub occupancy type | -| BPA | Update | [PR-1006](https://github.com/egovernments/egov-mdms-data/pull/1006) | Updated Occupancy type | -| BPA | New | [PR-997](https://github.com/egovernments/egov-mdms-data/pull/997) | Added tax period for OC | -| BPA | New | [PR-996](https://github.com/egovernments/egov-mdms-data/pull/996/files) | Added taxheadmaster for OC | -| BPA | New | [PR-995](https://github.com/egovernments/egov-mdms-data/pull/995/files) | Added billing service for OC | -| BPA | Update | [PR-1162](https://github.com/egovernments/egov-mdms-data/pull/1162/files) | Changed id format for bpa permit | -| W&S | Update | [PR-1043](https://github.com/egovernments/egov-mdms-data/pull/1043) | To update the ID format | -| W&S | Update | [PR-1058](https://github.com/egovernments/egov-mdms-data/pull/1058) | to update application types | -| TL | Update | [PR-1160](https://github.com/egovernments/egov-mdms-data/pull/1160) | Updated URL for Required doc screen | -| TL | Update | [PR-1125](https://github.com/egovernments/egov-mdms-data/pull/1125) | Updated rebate and penalty | -| TL | Update | [PR-1133](https://github.com/egovernments/egov-mdms-data/pull/1133) | TL Renewal changes | -| UC | New | [PR-1106](https://github.com/egovernments/egov-mdms-data/pull/1106) | Added disclaimer in the footer | -| Localization | New | [PR-1073](https://github.com/egovernments/egov-mdms-data/pull/1073) | Added new action for v2 localisation search | -| Reports | Deprecate | [PR-1170](https://github.com/egovernments/egov-mdms-data/pull/1170) | Disabling the Reports and UI localization Links | - -## Backend Config Changes - -| **Module** | **Action** | **PR** | **Description** | -| :--- | :--- | :--- | :--- | -| W&S | Update | [PR-357](https://github.com/egovernments/configs/pull/357) | To update bill PDF advance adjusted changes | -| W&S | Update | [PR-340](https://github.com/egovernments/configs/pull/340) | To Update PDF format | -| W&S | Update | [PR-342](https://github.com/egovernments/configs/pull/342) | To add Advance and pending amount conditional logic | -| W&S | Update | [water-meter.yml](https://github.com/egovernments/configs/commit/d213b8fbc71c8adc67df393b30c8be9ea923e24f#diff-cad1acac07cf6e6c1843536937285a4d) | To add tenant Id in the eg\_ws\_meterreading table | -| W&S | Update | [ws-bill.json](https://github.com/egovernments/configs/commit/900e8e1c59ebc12f4bea49f52063f524aabf3830#diff-b5d08abcd9524da252a33fcff4c515f8) | To update the WS bill PDF format | -| BillGenie | Update | [bill-genie.yml](https://github.com/egovernments/configs/commit/0f3708cdcf6fba00aa36aab5baeae9a7eeb3ab62#diff-9352898a62515ccb3822f24506a37090) | To Update lower cases search | -| BPA | Update | [land-persister.yml](https://github.com/egovernments/configs/commit/5682f1adb60b40663fe13d545e0c865ad4537b08) | Added audit details for owner | -| BPA | Deprecate | [bpa-persister.yml](https://github.com/egovernments/configs/commit/9ae764474a702249cd3aaefa806a3331a37e0364) | Removed land info from bpa-persister | -| BPA | New | [egov-bpa-indexer.yml](https://github.com/egovernments/configs/commit/47528052b4904ce5ab679324f13165458a83d05a) | Added indexer for bpa | -| BPA | New | [rainmaker-bpastakeholder-indexer.yml](https://github.com/egovernments/configs/commit/47528052b4904ce5ab679324f13165458a83d05a) | Added indexer for stakeholder Registration | -| BPA | Update | [bpa-revocation.json](https://github.com/egovernments/configs/commit/47528052b4904ce5ab679324f13165458a83d05a) | Changed owners to landinfo and added revocation letter conten | -| BPA | New | [buildingpermit-low.json](https://github.com/egovernments/configs/commit/47528052b4904ce5ab679324f13165458a83d05a) | Added report run date | -| BPA | New | [buildingpermit.json](https://github.com/egovernments/configs/commit/47528052b4904ce5ab679324f13165458a83d05a) | Added report run date | -| BPA | New | [occupancy-certificate.json](https://github.com/egovernments/configs/commit/47528052b4904ce5ab679324f13165458a83d05a) | Added oc certificate | -| BPA | Update | [bpa-revocation.json](https://github.com/egovernments/configs/commit/47528052b4904ce5ab679324f13165458a83d05a) | Updated texts | -| BPA | Update | [buildingpermit.json](https://github.com/egovernments/configs/commit/47528052b4904ce5ab679324f13165458a83d05a) | Changed alignment and added QA code | -| BPA | New | [occupancy-certificate.json](https://github.com/egovernments/configs/commit/47528052b4904ce5ab679324f13165458a83d05a) | Added for OC | -| BPA | Update | [buildingpermit-low.json](https://github.com/egovernments/configs/commit/3da5fcefeedda4b13eda3128b42c8e87aea6697a) | Changed alignment and added QA code | -| BPA | New | [occupancy-certificate.json](https://github.com/egovernments/configs/commit/143dda97f86e06544868ec92d5816766ea128e75) | Added for OC | -| BPA | Update | [noc-persister.yml](https://github.com/egovernments/configs/commit/b94803a5d2e700b56c35b89b8cde5e1e32cfdbc4) | Changed filestore to filestoreId | -| BPA | Update | [noc-persister.yml](https://github.com/egovernments/configs/commit/5f7eafdf3339d49a736d31c50037333a11c0f114) | Updated noc persister | - -### Deployment Config Change: - -W&S - -File Name : **helm/charts/municipal-services/sw-services/values.yaml,** Removed the following details from values.yml - -```text -scid-format: "SW/[CITY.CODE]/[fy:yyyy-yy]/[SEQ_EGOV_COMMON]" - -name: EGOV_IDGEN_SCID_FORMAT -value: {{ index .Values "scid-format" | quote }} -``` - -Filename: **helm/charts/municipal-services/ws-services/values.yaml,** Removed the following data - -```text -wcid-format: "WS/[CITY.CODE]/[fy:yyyy-yy]/[SEQ_EGOV_COMMON]" - -name: EGOV_IDGEN_WCID_FORMAT -value: {{ index .Values "wcid-format" | quote }} -``` - -File Name **: helm/environments/<env>.yaml,** Autocreate-new-seq flag must be enabled in IdGen Service of environment file. - -```text -autocreate-new-seq: "true" -change the key from - "allowed-file-formats:" to "allowed-file-formats-map:" -``` - -File Name :**helm/charts/municipal-services/firenoc-services/values.yaml,** Added EGOV\_DEFAULT\_STATE\_ID in fire noc environment file to pick up proper tenant during search call. - -```text -- name: EGOV_DEFAULT_STATE_ID -valueFrom: configMapKeyRef: name: egov-config key: egov-state-level-tenant-id -``` - -### SMS-Notification Service - -Added sms.config.map property for SMS changes - -File Name : **helm/charts/core-services/egov-notification-sms/values.yaml,** Remove the sms.config.map from the values.yml file - -It should move to **helm/environments/<env>.yaml** like below - -```text -1sms-config-map: "{'User':'$username', 'passwd': '$password', 'sid':'$senderid', 'mobilenumber':'$mobil -``` - -\`\` - diff --git a/modules-features/release-notes/release-2.0/2.0-summary.md b/modules-features/release-notes/release-2.0/2.0-summary.md deleted file mode 100644 index d776a8f7..00000000 --- a/modules-features/release-notes/release-2.0/2.0-summary.md +++ /dev/null @@ -1,92 +0,0 @@ ---- -description: >- - 2.0 Release summary of new additions, fixes, changelog, what to expect next, - etc. ---- - -# Release Summary - -### Feature Additions - -| Release Date | Title | Summary | -| :--- | :--- | :--- | -| 30-07-2020 | Advance Payments | Introducing advance payment feature and Advance collection integration with W/S | - -### Fixes and Enhancements - -| Release Date | Title | Summary | -| :--- | :--- | :--- | -| 30-07-2020 | | Upgrading spring boot and tracer version of all the backend services to enhance the range of non-functional benefits like performance, metrics, and security. | -| | | All digit services/configs are baselined to follow the Semantic Versioning. These would enable the partner eco-system, system Integrators and state teams for easy on-going upgrades and integrations. | - -### Release Highlights - -* New Releases -* Upgrades and Patches -* Bug Fixes and Enhancements -* Known Issues and Problems -* Documentation Links and Resources - -{% tabs %} -{% tab title="Functional Changes" %} - - - - - - - - - - - - - -
UpdateDescription
Advance Payments -

Ability to handle advanced payments - platform and Reference implementation - in W&S

-

Advance Collection integration with W&S

-
-{% endtab %} - -{% tab title="Non-Functional Changes" %} - - - - - - - - - - - - - -
UpdateDescription
Infra/Ops Simplification & Enablement -

-

Infra & Service monitoring v1.0.0 (Prometheus, Alertmanager & - Grafana)

-
    -
  • Cluster Resource monitoring
  • -
  • Request Traffic monitoring
  • -
  • DIGIT Service monitoring
  • -
  • All Java-based services SpringBoot upgraded from 1.5.X to 2.2.6 for better - security, performance and metrics.
  • -
  • Backbone Services migrated to Helm templates to ease deployment on Kubernetes
  • -
  • Introduced Minio as a digit platform service for SDCs to leverage S3 like - object storage feature
  • -
  • DIGIT on Spot Instances for AWS users saves 60% of the cloud cost
  • -
  • Configurable SSO with GitHub or Google SSO OAuth for all the Infra apps - like Jaeger, Grafana, Kibana
  • -
  • Jenkins CI/CD as a service - with the pipelines
  • -
-
-{% endtab %} -{% endtabs %} - -#### - -#### - diff --git a/modules-features/release-notes/release-2.0/2.0-upgrades-summary.md b/modules-features/release-notes/release-2.0/2.0-upgrades-summary.md deleted file mode 100644 index 8f6ae248..00000000 --- a/modules-features/release-notes/release-2.0/2.0-upgrades-summary.md +++ /dev/null @@ -1,84 +0,0 @@ -# Upgrades and Patches - -### Upgrade Instructions - -* DIGIT 2.0 is a baselined release - considering simplification and standardization as a theme. It is strongly recommended all-state teams upgrade to leverage benefits. - * All services versioning will follow [**SemVer 2.0**](https://medium.com/@pmuens/understanding-semver-3f75d11b4d)**,** naming conventions and Git Tagging are improved for better tracing. - * Next release might have a few more enhancements to the services naming conventions and handling MDMS and Configs better. - -### **Upgrade Impact** - -Functionally, the upgrade to DIGIT 2.0 should not impact the existing environments. - -### List of upgrades - -{% tabs %} -{% tab title="Functional Upgrades" %} - - - - - - - - - - - - - - - - - -
UpdateDescription
Baseline version upgrades -

-
    -
  • Bulk persister changes to support bulk persisting for migration in Persister - Service.
  • -
  • Localization URL params to be changed to request params in Localization - service
  • -
  • Receipt download link in SMS and email notifications.
  • -
  • Rainwater Harvesting attribute in Property Service
  • -
  • Filestore service enhancement - Support for SDC and S3 implementation.
  • -
  • Maven dependencies upgrade and merging the backend services to the master - branch (Upgraded Tracer to 2.0.0, spring boot to 2.2.6, flyway-core to - 6.4.3, etc along with code cleanup) for all the services across the services. - The Changelog has been added.
  • -
  • Baseline versioning of all the services as per the streaming strategy.
  • -
-
UI Enhancements -

-
    -
  • Generalized Client-side PDF generation component and integration with - Property, Fire NOC, Trade License, and W&S applications).
  • -
  • Generalize acknowledgement screens component
  • -
  • MDMS namespace common component and integration with PT and TL modules.
  • -
-
-{% endtab %} - -{% tab title="Non-Functional Upgrades" %} - - - - - - - - - - - - - -
UpdateDescription
Enhancements -

-
    -
  • Versioned Git Tags for all the services
  • -
  • Versioned MDMS and Config data
  • -
-
-{% endtab %} -{% endtabs %} - diff --git a/modules-features/release-notes/release-2.0/2.0-whats-next.md b/modules-features/release-notes/release-2.0/2.0-whats-next.md deleted file mode 100644 index 6d94a777..00000000 --- a/modules-features/release-notes/release-2.0/2.0-whats-next.md +++ /dev/null @@ -1,12 +0,0 @@ -# What's Next - -### Upcoming Release Features - -As a next step, we are planning for the following improvements/cleanup as part of the DIGIT streaming strategy in the next release: - -* Renaming of the backend services with a naming convention in place. -* Config \(MDMS, Configs\) Baseline versioning. -* [Readme.md](http://readme.md/) and [Localsetup.md](http://localsetup.md/) documentations for Core, Business, Municipal, and Other services. -* Functional: Introducing advance payment feature and Advance collection integration with W/S. -* Non-functional: Upgrading spring boot and tracer version of all the backend services to enhance the range of non-functional benefits like performance, metrics, and security. Also, all digit services/configs are baselined to follow the Semantic Versioning. These would enable the partner eco-system, system Integrators and state teams for easy on-going upgrades and integrations. - diff --git a/modules-features/release-notes/release-2.0/README.md b/modules-features/release-notes/release-2.0/README.md deleted file mode 100644 index 66a93c13..00000000 --- a/modules-features/release-notes/release-2.0/README.md +++ /dev/null @@ -1,12 +0,0 @@ ---- -description: >- - DIGIT 2.0 is a baselined release that has got very few functional changes, but - more of a non-functional standardisation changes. ---- - -# DIGIT 2.0 \(30.07.2020\) - -\*\*\*\* - -### - diff --git a/modules-features/technical-documentation/README.md b/modules-features/technical-documentation/README.md index 918ae599..7eab843d 100644 --- a/modules-features/technical-documentation/README.md +++ b/modules-features/technical-documentation/README.md @@ -1,6 +1,16 @@ ---- -description: All technical documents related to DIGIT stack will be available here. ---- +# Services Overview + +This section contains all technical documents related to DIGIT stack. + +The key services include - + +* [Core Services](core-service/) +* [MDMS](mdms.md) +* [Business Services](business-service.md) +* [Municipal Services](municipal-service/) +* [Utilities](utilities.md) + + + -# DIGIT Services diff --git a/modules-features/technical-documentation/business-service.md b/modules-features/technical-documentation/business-service.md new file mode 100644 index 00000000..ec528be7 --- /dev/null +++ b/modules-features/technical-documentation/business-service.md @@ -0,0 +1,8 @@ +# Business Service + +This section provides technical details about business service setup, configuration, deployment, and API integration. + +Details coming soon... + + + diff --git a/modules-features/technical-documentation/business-service/README.md b/modules-features/technical-documentation/business-service/README.md deleted file mode 100644 index 3475405a..00000000 --- a/modules-features/technical-documentation/business-service/README.md +++ /dev/null @@ -1,2 +0,0 @@ -# Business Service - diff --git a/modules-features/technical-documentation/business-service/workflow-service.md b/modules-features/technical-documentation/business-service/workflow-service.md deleted file mode 100644 index 66c9fb92..00000000 --- a/modules-features/technical-documentation/business-service/workflow-service.md +++ /dev/null @@ -1,116 +0,0 @@ -# Workflow Service - -### Overview - - Workflows are a series of steps that moves a process from one state to another state by actions performed by different kind of Actors - Humans, Machines, Time based events etc. to achieve a goal like on boarding an employee, or approve an application or grant a resource etc. The _egov-workflow-v2_ is a workflow engine which helps in performing this operations seamlessly using a predefined configuration.‌ - -### Pre-requisites - -Before you proceed with the documentation, make sure the following pre-requisites are met - - -* _Java 8_ -* Kafka server is up and running -* egov-persister service is running and has workflow persister config path added in it -* PSQL server is running and database is created to store workflow configuration and data - -**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 that have roles that can perform any state transitioning actions in this state. -* Once an instance is marked to an individual employee it will appear only in that employees inbox although point 1 will still hold true and all others participating in the workflow can still search it and act if they have necessary action available to them -* If the instance is marked to a person who cannot perform any state transitioning action, they can still comment/upload and mark to anyone else. -* **Overall SLA :** SLA for the complete processing of the application/Entity -* **State level SLA:** SLA for a particular state in the workflow - - - -| **Environment Variables** | **Description** | -| :--- | :--- | -| egov.wf.default.offset | The default value of offset in search | -| egov.wf.default.limit | The default value of limit in search | -| egov.wf.max.limit | 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 employee inbox\)_ | -| egov.wf.statelevel | Boolean flag set to _true_ if statelevel workflow is required | - -| | -| :--- | - - -‌Interaction Diagram: - -![](../../../.gitbook/assets/image%20%2861%29.png) - -### 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 please refer to the links in Reference Docs - -‌ - -### Integration - -‌ - -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 . -3. /process/\_transition should be added to perform an action on a 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 - -‌ - -#### Doc Links - -#### Doc Links - -| **Title** | **Link** | -| :--- | :--- | -| Configuring Workflows For New Product/Entity | [Configuring Workflows For New Product/Entity](https://digit-discuss.atlassian.net/wiki/spaces/DD/pages/644481051) | -| Setting Up Workflows | [Setting Up Workflows](https://digit-discuss.atlassian.net/wiki/spaces/DD/pages/644546619/Setting+Up+Workflows) | -| API Swagger Documentation | [Swagger Documentation](https://raw.githubusercontent.com/egovernments/core-services/master/docs/worfklow-2.0) | -| Migration to Workflow 2.0 | [Workflow 2.0 Configuration doc](https://digit-discuss.atlassian.net/wiki/spaces/EPE/pages/120619031/Workflow+2.0+Configuration+doc) | - -#### - -#### API List - -| | **Link** | -| :--- | :--- | -| _/businessservice/\_create_ | [https://www.getpostman.com/collections/8552e3de40c819e34190](https://www.getpostman.com/collections/8552e3de40c819e34190) | -| _/businessservice/\_update_ | [https://www.getpostman.com/collections/8552e3de40c819e34190](https://www.getpostman.com/collections/8552e3de40c819e34190) | -| _/businessservice/\_search_ | [https://www.getpostman.com/collections/8552e3de40c819e34190](https://www.getpostman.com/collections/8552e3de40c819e34190) | -| _/process/\_transition_ | [https://www.getpostman.com/collections/8552e3de40c819e34190](https://www.getpostman.com/collections/8552e3de40c819e34190) | -| _/process/\_search_ | [https://www.getpostman.com/collections/8552e3de40c819e34190](https://www.getpostman.com/collections/8552e3de40c819e34190) | - -_\(Note: All the API’s are in the same postman collection therefore same link is added in each row\)_ - -#### [ ](https://app.gitbook.com/@egov-digit/s/home/~/drafts/-MGBzG9x4ulrdJQ3oqjM/configure/setting-up-digit) - diff --git a/modules-features/technical-documentation/core-service/README.md b/modules-features/technical-documentation/core-service/README.md index 62b013f2..4c14eb44 100644 --- a/modules-features/technical-documentation/core-service/README.md +++ b/modules-features/technical-documentation/core-service/README.md @@ -1,2 +1,11 @@ # Core Services +Core Services is one of the key DIGIT components. Browse through this section to learn more about key configuration and integration details of these core services. + +* [Workflow Services](workflow-service.md) +* [Location Services](location-service.md) +* [User Services](user-service.md) +* [Access Control Services](access-control-service.md) + + + diff --git a/modules-features/technical-documentation/core-service/access-control-service.md b/modules-features/technical-documentation/core-service/access-control-service.md index 740813a5..0837baab 100644 --- a/modules-features/technical-documentation/core-service/access-control-service.md +++ b/modules-features/technical-documentation/core-service/access-control-service.md @@ -1,27 +1,27 @@ -# Access Control Service +# Access Control Services ### Overview -DIGIT is API based Platform here each API is denoting to a DIGIT resource. Access Control Service \(ACS\) primary job is to authorise end user based on their roles and provide access of the DIGIT platform resources. Access control functionality basically works based on below points: +DIGIT is API based Platform here each API is denoting to a DIGIT resource. Access Control Service \(ACS\) primary job is to authorise end-user based on their roles and provide access to the DIGIT platform resources. Access control functionality basically works based on below points: -**Actions:** Actions are events which is performed by an user. This can be a api end-point or Frontend event. This is MDMS master +**Actions:** Actions are events which are performed by a user. This can be an API end-point or Frontend event. This is MDMS master -**Roles:** Role are assigned to user, a user can hold multiple roles. Roles are defined in MDMS masters. +**Roles:** Role are assigned to the user, a user can hold multiple roles. Roles are defined in MDMS masters. -**Role-Action:** Role actions are mapping b/w Actions and Roles. Based on Role,Action mapping access control service identifies applicable action for role. +**Role-Action:** Role actions are mapping b/w Actions and Roles. Based on role, action mapping access control service identifies applicable action for the role. ### Pre-requisites Before you proceed with the configuration, make sure the following pre-requisites are met - -* _Java 8_ +* Java 8 * MDMS service is up and running ### Key Functionalities * Serve the applicable actions for a user based on user role \(To print menu three\). -* On each action which is performed by an user, access control look at the roles for the user and validate actions mapping with the role. -* Support tenant level role-action. \(eg: An employee from Amritsar can have a role of APPROVER for other ULB like Jalandhar and hence will be authorised to act as APPROVER in Jalandhar.\) +* On each action which is performed by a user, access control looks at the roles for the user and validate actions mapping with the role. +* Support tenant-level role-action. For instance, an employee from Amritsar can have a role of APPROVER for other ULB like Jalandhar and hence will be authorised to act as APPROVER in Jalandhar. ### Deployment Details @@ -30,9 +30,43 @@ Before you proceed with the configuration, make sure the following pre-requisite ### Configuration Details -1. Define the roles :`1 2 3 4 5` `{ "code": "EMPLOYEE", "name": "Employee", "description": "Default role for all employees" }` -2. Add the Actions \(URL\) :`1 2 3 4 5 6 7 8 9 10 11 12` `{ "id": {{ACTION_ID}}, "name": "Create TradeLicense", "url": "/tl-services/v1/_create", "parentModule": "", "displayName": "Create TradeLicense", "orderNumber": 0, "enabled": false, "serviceCode": "tl-services", "code": "null", "path": "" }` -3. Add the role action mapping:`1 2 3 4 5 6` `{ "rolecode": "EMPLOYEE", "actionid": {{ACTION_ID}}, "actioncode": "", "tenantId": "pb" }` +Define the roles + +```text +{ + "code": "EMPLOYEE", + "name": "Employee", + "description": "Default role for all employees" +} +``` + +Add the Actions \(URL\) + +```text +{ + "id": {{ACTION_ID}}, + "name": "Create TradeLicense", + "url": "/tl-services/v1/_create", + "parentModule": "", + "displayName": "Create TradeLicense", + "orderNumber": 0, + "enabled": false, + "serviceCode": "tl-services", + "code": "null", + "path": "" +} +``` + +Add the role action mapping + +```text +{ + "rolecode": "EMPLOYEE", + "actionid": {{ACTION_ID}}, + "actioncode": "", + "tenantId": "pb" + } +``` _\(The details about the fields in the configuration can be found in the swagger contract\)_ @@ -40,11 +74,11 @@ _\(The details about the fields in the configuration can be found in the swagger #### Integration Scope -Any micro micro service which requires authorisation can leverage the functionalities provided by access control service. +Any microservice which requires authorisation can leverage the functionalities provided by access control service. #### Integration Benefits -Any new micro service that is to be added in the platform won’t have to worry about authorisation. It can just add it’s role action mapping in the master data and Access Control Service will perform authorisation whenever API for the micro service is called . +Any new microservice that is to be added in the platform won’t have to worry about authorisation. It can just add it’s role action mapping in the master data and Access Control Service will perform authorisation whenever API for the microservice is called. #### Steps to Integration diff --git a/modules-features/technical-documentation/core-service/location-service.md b/modules-features/technical-documentation/core-service/location-service.md index 6075ed2a..0eadc4bb 100644 --- a/modules-features/technical-documentation/core-service/location-service.md +++ b/modules-features/technical-documentation/core-service/location-service.md @@ -1,17 +1,17 @@ -# Location Service +# Location Services ### Overview -An core application which provides location details of the tenant for which the services are being provided. +A core application which provides location details of the tenant for which the services are being provided. ### Pre-requisites Before you proceed with the documentation, make sure the following pre-requisites are met - -* _Java 8_ -* PSQL server is running and database is created. -* Knowledge of egov-mdms service. -* egov-mdms service is running and all the required mdms master are loaded in it. +* Java 8 +* PSQL server is running and database is created +* Knowledge of egov-mdms service +* egov-mdms service is running and all the required mdms master are loaded in it ### Key Functionalities @@ -37,7 +37,34 @@ Before you proceed with the documentation, make sure the following pre-requisite ### Configuration Details -The boundary data has been moved to mdms from the master tables in DB. The location service fetches the JSON from mdms and parses it to the structure of boundary object as mentioned above. A sample master would look like below`1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24` `{ "tenantId": "pg.cityA", "moduleName": "egov-location", "TenantBoundary": [ { "hierarchyType": { "code": "ADMIN", "name": "ADMIN" }, "boundary": { "id": 1, "boundaryNum": 1, "name": "CityA", "localname": "CityA", "longitude": null, "latitude": null, "label": "City", "code": "pg.cityA", "children": [] } } ] }` +The boundary data has been moved to mdms from the master tables in DB. The location service fetches the JSON from mdms and parses it to the structure of boundary object as mentioned above. A sample master would look like below. + +```text +{ + "tenantId": "pg.cityA", + "moduleName": "egov-location", + "TenantBoundary": [ + { + "hierarchyType": { + "code": "ADMIN", + "name": "ADMIN" + }, + "boundary": { + "id": 1, + "boundaryNum": 1, + "name": "CityA", + "localname": "CityA", + "longitude": null, + "latitude": null, + "label": "City", + "code": "pg.cityA", + "children": [] + } + + } + ] +} +``` | **Attribute Name** | **Description** | | :--- | :--- | diff --git a/modules-features/technical-documentation/core-service/user-service.md b/modules-features/technical-documentation/core-service/user-service.md index d69085f8..070385c4 100644 --- a/modules-features/technical-documentation/core-service/user-service.md +++ b/modules-features/technical-documentation/core-service/user-service.md @@ -1,6 +1,4 @@ -# User Service - - +# User Services ### Overview @@ -10,7 +8,7 @@ User service is responsible for user data management and providing functionality Before you proceed with the configuration, make sure the following pre-requisites are met - -* _Java 8_ +* Java 8 * Kafka server is up and running * Encryption and MDMS services are running * PSQL server is running and database @@ -20,24 +18,22 @@ Before you proceed with the configuration, make sure the following pre-requisite * Store, update and search user data * Provide authentication -* Provide login,logout functionality into DIGIT platform +* Provide login, logout functionality into DIGIT platform * Store user data PIIs in encrypted form ### Interaction Diagram ![](../../../.gitbook/assets/image%20%2875%29.png) -![](blob:https://digit-discuss.atlassian.net/b00532c9-ebd9-4399-b198-202b588a8601#media-blob-url=true&id=95c4be68-8755-4a4c-9eb6-c295e87d8332&collection=contentId-669450371&contextId=669450371&mimeType=image%2Fpng&name=worddav963cd69be3831c4f701bb66896d09787.png&size=212244&width=900&height=978)![](blob:https://digit-discuss.atlassian.net/19aa7d81-d831-432b-b67c-c0ad69fcc147#media-blob-url=true&id=d06a4095-4c3a-4ef7-a837-83cd9d30d4f5&collection=contentId-669450371&contextId=669450371&mimeType=image%2Fpng&name=worddavaddee1c883411ab62c12446fae7cf3f5.png&size=137791&width=866&height=996) - ### Deployment Details 1. Setup latest version of egov-enc-service and egov-mdms- service -2. Deploy latest version of egov-user service +2. Deploy the latest version of egov-user service 3. Add Role-Action mapping for API’s ### Configuration Details -Following are the properties in application.properties file in user service which are configurable. +Following application properties file in user service are configurable. | **Property** | **Value** | **Remarks** | | :--- | :--- | :--- | @@ -59,7 +55,7 @@ Following are the properties in application.properties file in user service whic #### Integration Scope - User data management and functionality to login and logout into Digit system using otp and password. +User data management and functionality to login and logout into Digit system using OTP and password. #### Integration Benefits @@ -71,8 +67,8 @@ Providing following functionality to citizen and employee type users * Update user details * Forgot password * Change password - * User role mapping\(Single ulb to multiple role\) - * Enable employee to login into DIGIT system based on password. + * User role mapping\(Single ULB to multiple roles\) + * Enable employee to login into DIGIT system based on a password. * Citizen: * Create user * Update user @@ -82,7 +78,7 @@ Providing following functionality to citizen and employee type users #### Steps to Integration -* To integrate, host of egov-user should be overwritten in helm chart. +* To integrate, host of egov-user should be overwritten in the helm chart. * Use /citizen/\_create and /users/\_createnovalidate endpoints for creating users into the system * Use /v1/\_search and /\_search endpoints to search users in the system depending on various search parameters * Use /profile/\_update for partial update and /users/\_updatenovalidate for update diff --git a/modules-features/technical-documentation/core-service/workflow-service.md b/modules-features/technical-documentation/core-service/workflow-service.md index b949cdf5..9084eba6 100644 --- a/modules-features/technical-documentation/core-service/workflow-service.md +++ b/modules-features/technical-documentation/core-service/workflow-service.md @@ -1,14 +1,14 @@ -# Workflow Service +# Workflow Services ### Overview -Workflows are a series of steps that moves a process from one state to another state by actions performed by different kind of Actors - Humans, Machines, Time based events etc. to achieve a goal like on boarding an employee, or approve an application or grant a resource etc. The _egov-workflow-v2_ is a workflow engine which helps in performing this operations seamlessly using a predefined configuration. +Workflows are a series of steps that moves a process from one state to another state by actions performed by different kind of Actors - Humans, Machines, Time based events etc. to achieve a goal like onboarding an employee, or approve an application or grant a resource etc. The _egov-workflow-v2_ is a workflow engine which helps in performing these operations seamlessly using a predefined configuration. ### Pre-requisites Before you proceed with the documentation, make sure the following pre-requisites are met - -* _Java 8_ +* Java 8 * Kafka server is up and running * egov-persister service is running and has workflow persister config path added in it * PSQL server is running and database is created to store workflow configuration and data @@ -16,19 +16,19 @@ Before you proceed with the documentation, make sure the following pre-requisite ### 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 that have roles that can perform any state transitioning actions in this state. -* Once an instance is marked to an individual employee it will appear only in that employees inbox although point 1 will still hold true and all others participating in the workflow can still search it and act if they have necessary action available to them +* On the creation of workflow, it will appear in the inbox of all employees that have roles that can perform any state transitioning actions in this state. +* Once an instance is marked to an individual employee it will appear only in that employee's inbox although point 1 will still hold true and all others participating in the workflow can still search it and act if they have necessary action available to them * If the instance is marked to a person who cannot perform any state transitioning action, they can still comment/upload and mark to anyone else. -* **Overall SLA :** SLA for the complete processing of the application/Entity -* **State level SLA:** SLA for a particular state in the workflow +* **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 employee inbox\)_ | -| egov.wf.statelevel | Boolean flag set to _true_ if statelevel workflow is required | +| egov.wf.max.limit | The maximum number of records that are returned in search response | +| egov.wf.inbox.assignedonly | Boolean flag if set to _true_ default search will return records assigned to the user only, if _false_ it will return all the records based on the user’s role. _\(default search is the search call when no query params are sent and based on the RequestInfo of the call, records are returned, it’s used to show applications in employee inbox\)_ | +| egov.wf.statelevel | Boolean flag set to _true_ if a state-level workflow is required | ### Interaction Diagram: @@ -38,7 +38,7 @@ Before you proceed with the documentation, make sure the following pre-requisite ### Deployment Details -1. Deploy latest version of egov-workflow-v2 service +1. Deploy the 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\) @@ -54,19 +54,19 @@ For Configuration details please refer to the links in Reference Docs #### 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. +The workflow configuration can be used by any module which performs a sequence of operations on an application/Entity. It can be used to simulate and track processes in organisations to make it more efficient too and increase accountability. #### Integration Benefits -* Role based workflow. -* Easy way of writing rule. -* File movement within workflow roles. +* Role-based workflow +* An 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 . -3. /process/\_transition should be added to perform an action on a application._\(It’s for internal use in modules and should not be added in Role-Action mapping\)_ +2. /process/\_search should be added as the search endpoint for searching workflow process Instance object. +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 @@ -90,5 +90,5 @@ The workflow configuration can be used by any module which performs a sequence o | _/process/\_transition_ | [https://www.getpostman.com/collections/8552e3de40c819e34190](https://www.getpostman.com/collections/8552e3de40c819e34190) | | _/process/\_search_ | [https://www.getpostman.com/collections/8552e3de40c819e34190](https://www.getpostman.com/collections/8552e3de40c819e34190) | -_\(Note: All the API’s are in the same postman collection therefore same link is added in each row\)_ +_\(Note: All the API’s are in the same postman collection, therefore, the same link is added in each row\)_ diff --git a/modules-features/technical-documentation/mdms.md b/modules-features/technical-documentation/mdms.md index bb786535..f6f47e6c 100644 --- a/modules-features/technical-documentation/mdms.md +++ b/modules-features/technical-documentation/mdms.md @@ -4,11 +4,11 @@ description: Master Data Management System # MDMS -Master Data Management Service +### Overview One of the applications in the eGov core group of services aims to reduce the time spent by developers on writing codes to store and fetch master data \( primary data needed for module functionality \) which doesn’t have any business logic associated with them. Instead of writing APIs, creating tables in every different service to store and retrieve data that is seldom changed MDMS service keeps them at a single location for all modules and provides data on will with the help of no more than three lines of configuration. -**Requirements:** +### **Pre-requisites** 1. Prior Knowledge of Java/J2EE. 2. Prior Knowledge of Spring Boot. @@ -16,82 +16,67 @@ One of the applications in the eGov core group of services aims to reduce the ti 4. Prior knowledge of Git. 5. Advanced knowledge on how to operate JSON data would be an added advantage to understand the service. -**FUNCTIONALITY:** +### **Key Functionalities** -The mdms service takes the data from a set of json files in the provided location, it can either be an online location \(readable json files from online\) or an offline \(json files stored in local memory\). The application starts by reading all the json files provided they are in the prescribed format and stores the data in a map were the tenantID of the file serves as a key and a map of the master data name and details as values. +The MDMS service takes the data from a set of json files in the provided location, it can either be an online location \(readable json files from online\) or an offline \(json files stored in local memory\). The application starts by reading all the json files provided they are in the prescribed format and stores the data in a map were the tenantID of the file serves as a key and a map of the master data name and details as values. -Once the data is stored in the map the same can be retrieved by making an API request to the mdms service. Filters can be applied in the request to retrieve data based on some values in existing fields of json. +Once the data is stored in the map the same can be retrieved by making an API request to the MDMS service. Filters can be applied in the request to retrieve data based on some values in existing fields of json. -**SETUP AND USAGE:** +### **Deployment Details** -The [**Application**](https://github.com/egovernments/egov-services/tree/master/core/egov-mdms-service) is present among the core group of applications available in the eGov-services git repository. The spring boot application needs **lombok** extension added in your IDE to load it. Once the application is up and running API requests can be posted to the url and ids can be generated. +The [**Application**](https://github.com/egovernments/egov-services/tree/master/core/egov-mdms-service) is present among the core group of applications available in the eGov-services git repository. The spring boot application needs **lombok** extension added in your IDE to load it. Once the application is up and running API requests can be posted to the URL and ids can be generated. \*\*in case of intellij the plugin can be installed directly, for eclipse the lombok jar location has to be added in eclipse.ini file in this format **-javaagent:lombok.jar**. For the API information please refer the swagger yaml -GOTO : [https://editor.swagger.io/](https://editor.swagger.io/) and click on file -> import url +GOTO: [https://editor.swagger.io/](https://editor.swagger.io/) and click on file -> import URL Then add the raw url of the API doc in the pop up. [https://raw.githubusercontent.com/egovernments/egov-services/master/docs/mdms/contract/v1-0-0.yml](https://raw.githubusercontent.com/egovernments/egov-services/master/docs/mdms/contract/v1-0-0.yml) -Incase the url is unavailable, please go to the [docs folder](https://github.com/egovernments/egov-services/tree/master/docs) of egov-services git repo and find the yaml for egov-filestroe. - -**CONFIGURATIONS AND STRUCTURE:** - -The config json files to be written should follow the listed rules - -1. The config files should have json extension . -2. The file should mention the tenantId, modulename and the master name first before defining the data. **{** - - **"tenantId": "pb",** - - - - **"moduleName": "BillingService",** - +In case the URL is unavailable, please go to the [docs folder](https://github.com/egovernments/egov-services/tree/master/docs) of egov-services git repo and find the yaml for egov-filestroe. +### **Configuration Details** - **"{$MasterName}":\[ \]** +The config json files to be written should follow the listed rules -**}** - +1. The config files should have json extension. +2. The file should mention the tenantId, modulename and the master name first before defining the data. +```text +{ + "tenantId": "pb", + "moduleName": "BillingService", + "{$MasterName}":[ ] +} +``` The master name in the example should be replaced by the actual name of the data. Then the following array will contain the data in it. -Example of a data set containing business-service master of billing-service module, which is a state level data and applies to all tenants. +Example of a data set containing business-service master of billing-service module, which is a state-level data and applies to all tenants. -The tenant Id value “pb” indicates that the data is state level for punjab. +The tenant Id value “pb” indicates that the data is state level for Punjab. The data belong to the module “BillingService” +```text { - "tenantId": "pb", - "moduleName": "BillingService", - - "BusinessService": \[ - + "BusinessService": [ { - "businessService": "PropertyTax", - "code": "PT", - - "collectionModesNotAllowed": \[ "DD" \], - + "collectionModesNotAllowed": [ "DD" ], "partPaymentAllowed": true, - "isAdvanceAllowed": true, - "isVoucherCreationEnabled": true - } + ] +} +``` - \] -} diff --git a/modules-features/technical-documentation/municipal-service/README.md b/modules-features/technical-documentation/municipal-service/README.md index c3b6d695..e02f2495 100644 --- a/modules-features/technical-documentation/municipal-service/README.md +++ b/modules-features/technical-documentation/municipal-service/README.md @@ -1,2 +1,11 @@ # Municipal Service +DIGIT offers key municipal services such as Public Grievance & Redressal, Trade License, Water & Sewerage, Property Tax, Fire NOC, and Building Plan Approval. + +* [PGR Services](pgr-services.md) +* [Trade License Services](trade-license-service.md) + + + + + diff --git a/modules-features/technical-documentation/municipal-service/pgr-services.md b/modules-features/technical-documentation/municipal-service/pgr-services.md index 45e643a0..f8fe73eb 100644 --- a/modules-features/technical-documentation/municipal-service/pgr-services.md +++ b/modules-features/technical-documentation/municipal-service/pgr-services.md @@ -1,20 +1,18 @@ -# pgr-services - - +# PGR Services ### Overview - Public Grievances & Redressal \(PGR\) is a system that enables citizens to raise a complaint with there ULB’s. Citizen can track the complaint, upload image related to the complaint, re-open the complaint if he/she is not satisfied and rate the service. This document contains the details about how to setup pgr-service and describes the functionalities it provides + Public Grievances & Redressal \(PGR\) is a system that enables citizens to raise a complaint with there ULB’s. A citizen can track the complaint, upload image related to the complaint, re-open the complaint if he/she is not satisfied and rate the service. This document contains the details about how to setup PGR service and describes the functionalities it provides ### Pre-requisites Before you proceed with the configuration, make sure the following pre-requisites are met - -* _Java 8_ +* Java 8 * Kafka server is up and running * egov-persister service is running and has pgr-services persister config path added in it * PSQL server is running and database is created to store complaint data -* _\(Optional\)_ Indexer config for pgr-services is added in egov-indexer yaml paths to index the generated data. Index are required for data visualisation in kibana or in DSS. +* _\(Optional\)_ Indexer config for pgr-services is added in egov-indexer yaml paths to index the generated data. Index is required for data visualisation in Kibana or in DSS. * _\(Optional\)_ Report config for pgr-services is added in Report service config paths. Required if reports are to be provided to the user. * Following services should be up and running: * egov-user @@ -29,9 +27,9 @@ Before you proceed with the configuration, make sure the following pre-requisite ### Key Functionalities -* Citizen can file, track and rate the complaint -* Citizen can add image and comments related to the complaint -* Citizen can re-open the complaint in certain given period of time after resolution +* A citizen can file, track and rate the complaint +* A citizen can add image and comments related to the complaint +* A citizen can re-open the complaint in certain given period of time after resolution * ULB can setup the complaint workflow according to their requirements and staff capacity * ULB can track the SLA for resolving each complaint and can use it as a metric to streamline the process for resolving complaints * Department wise assignment of the complaint to the LME @@ -39,22 +37,334 @@ Before you proceed with the configuration, make sure the following pre-requisite ### Deployment Details 1. Deploy the latest version of pgr-services -2. Add pgr-service-persister.yml file in config folder in git and add that path in persister . _\(The file path is to be added in environment yaml file in param called_ persist-yml-path _\)_ -3. If any Report Config is created, the config should be added to config folder in git and that path should be added in Report service. \(_The file path is to be added in file called “reportFileLocationsv1.txt” in Config folder_\) -4. If index are to be created add the indexer config path in indexer service. \(_The file path is to be added in environment yaml file in param called_ egov-indexer-yaml-repo-path\) +2. Add pgr-service-persister.yml file in config folder in git and add that path in persister. _\(The file path is to be added in environment yaml file in param called_ persist-yml-path _\)_ +3. If any Report Config is created, the config should be added to the config folder in git and that path should be added in Report service. \(_The file path is to be added in a file called “reportFileLocationsv1.txt” in Config folder_\) +4. If index is to be created add the indexer config path in indexer service. \(_The file path is to be added in environment yaml file in param called_ egov-indexer-yaml-repo-path\) ### Configuration Details -1. Add master data in MDMS service with module name as RAINMAKER-PGR. Following is some sample master data for the service:`1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33` `{ "tenantId": "pb", "moduleName": "RAINMAKER-PGR", "ServiceDefs": [ { "serviceCode": "NoStreetlight", "keywords": "streetlight, light, repair, work, pole, electric, power, repair, damage, fix", "department": "Streetlights", "slaHours": 336, "menuPath": "StreetLights", "active": false, "order": 1 }, { "serviceCode": "StreetLightNotWorking", "keywords": "streetlight, light, repair, work, pole, electric, power, repair, fix", "department": "DEPT_1", "slaHours": 336, "menuPath": "StreetLights", "active": true, "order": 2 }, { "serviceCode": "GarbageNeedsTobeCleared", "keywords": "garbage, collect, litter, clean, door, waste, remove, sweeper, sanitation, dump, health, debris, throw", "department": "DEPT_25", "slaHours": 336, "menuPath": "Garbage", "active": true, "order": 3 } ] }` -2. Create businessService \(workflow configuration\) using the __/businessservice/\_create. Following is the product configuration for PGR: `1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181` `{ "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", "CSR" ] } ] }, { "sla": null, "state": "PENDINGFORASSIGNMENT", "applicationStatus": "PENDINGFORASSIGNMENT", "docUploadRequired": false, "isStartState": false, "isTerminateState": false, "isStateUpdatable": false, "actions": [ { "action": "ASSIGN", "nextState": "PENDINGATLME", "roles": [ "GRO", "DGRO" ] }, { "action": "REJECT", "nextState": "REJECTED", "roles": [ "GRO", "DGRO" ] } ] }, { "sla": null, "state": "PENDINGFORREASSIGNMENT", "applicationStatus": "PENDINGFORREASSIGNMENT", "docUploadRequired": false, "isStartState": false, "isTerminateState": false, "isStateUpdatable": false, "actions": [ { "action": "REASSIGN", "nextState": "PENDINGATLME", "roles": [ "GRO", "DGRO" ] }, { "action": "REJECT", "nextState": "REJECTED", "roles": [ "GRO", "DGRO" ] } ] }, { "sla": 259200000, "state": "PENDINGATLME", "applicationStatus": "PENDINGATLME", "docUploadRequired": false, "isStartState": false, "isTerminateState": false, "isStateUpdatable": false, "actions": [ { "action": "RESOLVE", "nextState": "RESOLVED", "roles": [ "PGR_LME" ] }, { "action": "REASSIGN", "nextState": "PENDINGFORREASSIGNMENT", "roles": [ "PGR_LME" ] } ] }, { "sla": null, "state": "REJECTED", "applicationStatus": "REJECTED", "isStateUpdatable": false, "docUploadRequired": false, "isStartState": false, "isTerminateState": true, "actions": [ { "action": "REOPEN", "nextState": "PENDINGFORASSIGNMENT", "roles": [ "CFC", "CSR", "CITIZEN" ] }, { "action": "RATE", "nextState": "CLOSEDAFTERREJECTION", "roles": [ "CFC", "CITIZEN" ] } ] }, { "sla": null, "state": "RESOLVED", "applicationStatus": "RESOLVED", "isStateUpdatable": false, "docUploadRequired": false, "isStartState": false, "isTerminateState": true, "actions": [ { "action": "REOPEN", "nextState": "PENDINGFORASSIGNMENT", "roles": [ "CFC", "CSR", "CITIZEN" ] }, { "action": "RATE", "nextState": "CLOSEDAFTERRESOLUTION", "roles": [ "CFC", "CITIZEN" ] } ] }, { "sla": null, "state": "CLOSEDAFTERREJECTION", "applicationStatus": "CLOSEDAFTERREJECTION", "isStateUpdatable": false, "docUploadRequired": false, "isStartState": false, "isTerminateState": true }, { "sla": null, "state": "CLOSEDAFTERRESOLUTION", "applicationStatus": "CLOSEDAFTERRESOLUTION", "isStateUpdatable": false, "docUploadRequired": false, "isStartState": false, "isTerminateState": true } ] }` -3. Using /localization/messages/v1/\_upsert , add localisation \(templates\) for notification messages to be sent. Following are the product notification templates: `1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34` `{ "messages": [ { "code": "PGR_APPLY_PENDINGFORASSIGNMENT_SMS_MESSAGE", "message": "Dear Citizen, Your complaint for has been submitted with ID on . You can track your complaint status on the mSeva Punjab mobile App (download here - ) or your local municipal web portal.", "module": "rainmaker-pgr", "locale": "en_IN" }, { "code": "PGR_RESOLVE_RESOLVED_SMS_MESSAGE", "message": "Dear Citizen, Your complaint for with ID submitted on has been resolved by . If you are not satisfied with service you can REOPEN complaint through mSeva Punjab mobile App (download here - ) or your local municipal web portal or by calling our CSR.", "module": "rainmaker-pgr", "locale": "en_IN" }, { "code": "PGR_REOPEN_PENDINGFORASSIGNMENT_SMS_MESSAGE", "message": "Dear Citizen, Your complaint for with ID submitted on has been RE-OPEN as per your request. You can track your complaint status and connect with our officials on the mSeva Punjab mobile App (download here - ) or your local municipal web portal.", "module": "rainmaker-pgr", "locale": "en_IN" }, { "code": "PGR_REJECT_REJECTED_SMS_MESSAGE", "message": "Dear Citizen, Your complaint for with ID submitted on has been rejected. Reason for Rejection: , Additional Comments: If you wish to re-open the complaint, you can download the mSeva Punjab mobile app (download here - ) or visit your local municipal website.", "module": "rainmaker-pgr", "locale": "en_IN" }, { "code": "PGR_REASSIGN_PENDINGATLME_SMS_MESSAGE", "message": "Dear Citizen, Your complaint for with ID submitted on has been re-assigned to , , . You can track your complaint status and connect with our officials on the mSeva Punjab mobile App (download here - ) or your local municipal web portal.", "module": "rainmaker-pgr", "locale": "en_IN" } ] }` -4. Add Role-Action mapping for the API’s in MDMS. Following are the required entries. They should be mapped to both CITIZEN and appropriate employee roles. `1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49` `{ { "id": {{ID_PLACEHOLDER}}, "name": "Create PGR Request", "url": "/pgr-services/v2/requests/_create", "parentModule": "", "displayName": "Create PGR Request", "orderNumber": 0, "enabled": false, "serviceCode": "pgr-services", "code": "null", "path": "" }, { "id": {{ID_PLACEHOLDER}}, "name": "Update PGR Request", "url": "/pgr-services/v2/requests/_update", "parentModule": "", "displayName": "Update PGR Request", "orderNumber": 0, "enabled": false, "serviceCode": "pgr-services", "code": "null", "path": "" }, { "id": {{ID_PLACEHOLDER}}, "name": "Search PGR Request", "url": "/pgr-services/v2/requests/_search", "parentModule": "", "displayName": "Search PGR Request", "orderNumber": 0, "enabled": false, "serviceCode": "pgr-services", "code": "null", "path": "" }, { "id": {{ID_PLACEHOLDER}}, "name": "Search PGR Request", "url": "/pgr-services/v2/requests/_count", "parentModule": "", "displayName": "Count PGR Request", "orderNumber": 0, "enabled": false, "serviceCode": "pgr-services", "code": "null", "path": "" }` +1. Add master data in MDMS service with the module name as RAINMAKER-PGR. Following is some sample master data for the service: + +```text +{ + "tenantId": "pb", + "moduleName": "RAINMAKER-PGR", + "ServiceDefs": [ + { + "serviceCode": "NoStreetlight", + "keywords": "streetlight, light, repair, work, pole, electric, power, repair, damage, fix", + "department": "Streetlights", + "slaHours": 336, + "menuPath": "StreetLights", + "active": false, + "order": 1 + }, + { + "serviceCode": "StreetLightNotWorking", + "keywords": "streetlight, light, repair, work, pole, electric, power, repair, fix", + "department": "DEPT_1", + "slaHours": 336, + "menuPath": "StreetLights", + "active": true, + "order": 2 + }, + { + "serviceCode": "GarbageNeedsTobeCleared", + "keywords": "garbage, collect, litter, clean, door, waste, remove, sweeper, sanitation, dump, health, debris, throw", + "department": "DEPT_25", + "slaHours": 336, + "menuPath": "Garbage", + "active": true, + "order": 3 + } + ] +} +``` + +Create businessService \(workflow configuration\) using the __/businessservice/\_create. Following is the product configuration for PGR: + +```text +{ + "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", + "CSR" + ] + } + ] + }, + { + "sla": null, + "state": "PENDINGFORASSIGNMENT", + "applicationStatus": "PENDINGFORASSIGNMENT", + "docUploadRequired": false, + "isStartState": false, + "isTerminateState": false, + "isStateUpdatable": false, + "actions": [ + { + "action": "ASSIGN", + "nextState": "PENDINGATLME", + "roles": [ + "GRO", + "DGRO" + ] + }, + { + "action": "REJECT", + "nextState": "REJECTED", + "roles": [ + "GRO", + "DGRO" + ] + } + ] + }, + { + "sla": null, + "state": "PENDINGFORREASSIGNMENT", + "applicationStatus": "PENDINGFORREASSIGNMENT", + "docUploadRequired": false, + "isStartState": false, + "isTerminateState": false, + "isStateUpdatable": false, + "actions": [ + { + "action": "REASSIGN", + "nextState": "PENDINGATLME", + "roles": [ + "GRO", + "DGRO" + ] + }, + { + "action": "REJECT", + "nextState": "REJECTED", + "roles": [ + "GRO", + "DGRO" + ] + } + ] + }, + + { + "sla": 259200000, + "state": "PENDINGATLME", + "applicationStatus": "PENDINGATLME", + "docUploadRequired": false, + "isStartState": false, + "isTerminateState": false, + "isStateUpdatable": false, + "actions": [ + { + "action": "RESOLVE", + "nextState": "RESOLVED", + "roles": [ + "PGR_LME" + ] + }, + { + "action": "REASSIGN", + "nextState": "PENDINGFORREASSIGNMENT", + "roles": [ + "PGR_LME" + ] + } + ] + }, + { + "sla": null, + "state": "REJECTED", + "applicationStatus": "REJECTED", + "isStateUpdatable": false, + "docUploadRequired": false, + "isStartState": false, + "isTerminateState": true, + "actions": [ + { + "action": "REOPEN", + "nextState": "PENDINGFORASSIGNMENT", + "roles": [ + "CFC", + "CSR", + "CITIZEN" + ] + }, + { + "action": "RATE", + "nextState": "CLOSEDAFTERREJECTION", + "roles": [ + "CFC", + "CITIZEN" + ] + } + ] + }, + { + "sla": null, + "state": "RESOLVED", + "applicationStatus": "RESOLVED", + "isStateUpdatable": false, + "docUploadRequired": false, + "isStartState": false, + "isTerminateState": true, + "actions": [ + { + "action": "REOPEN", + "nextState": "PENDINGFORASSIGNMENT", + "roles": [ + "CFC", + "CSR", + "CITIZEN" + ] + }, + { + "action": "RATE", + "nextState": "CLOSEDAFTERRESOLUTION", + "roles": [ + "CFC", + "CITIZEN" + ] + } + ] + }, + { + "sla": null, + "state": "CLOSEDAFTERREJECTION", + "applicationStatus": "CLOSEDAFTERREJECTION", + "isStateUpdatable": false, + "docUploadRequired": false, + "isStartState": false, + "isTerminateState": true + }, + { + "sla": null, + "state": "CLOSEDAFTERRESOLUTION", + "applicationStatus": "CLOSEDAFTERRESOLUTION", + "isStateUpdatable": false, + "docUploadRequired": false, + "isStartState": false, + "isTerminateState": true + } + ] + } +``` + +Using /localization/messages/v1/\_upsert , add localisation \(templates\) for notification messages to be sent. Following are the product notification templates: + +```text +{ + "messages": [ + { + "code": "PGR_APPLY_PENDINGFORASSIGNMENT_SMS_MESSAGE", + "message": "Dear Citizen, Your complaint for has been submitted with ID on . You can track your complaint status on the mSeva Punjab mobile App (download here - ) or your local municipal web portal.", + "module": "rainmaker-pgr", + "locale": "en_IN" + }, + { + "code": "PGR_RESOLVE_RESOLVED_SMS_MESSAGE", + "message": "Dear Citizen, Your complaint for with ID submitted on has been resolved by . If you are not satisfied with service you can REOPEN complaint through mSeva Punjab mobile App (download here - ) or your local municipal web portal or by calling our CSR.", + "module": "rainmaker-pgr", + "locale": "en_IN" + }, + { + "code": "PGR_REOPEN_PENDINGFORASSIGNMENT_SMS_MESSAGE", + "message": "Dear Citizen, Your complaint for with ID submitted on has been RE-OPEN as per your request. You can track your complaint status and connect with our officials on the mSeva Punjab mobile App (download here - ) or your local municipal web portal.", + "module": "rainmaker-pgr", + "locale": "en_IN" + }, + { + "code": "PGR_REJECT_REJECTED_SMS_MESSAGE", + "message": "Dear Citizen, Your complaint for with ID submitted on has been rejected. Reason for Rejection: , Additional Comments: If you wish to re-open the complaint, you can download the mSeva Punjab mobile app (download here - ) or visit your local municipal website.", + "module": "rainmaker-pgr", + "locale": "en_IN" + }, + { + "code": "PGR_REASSIGN_PENDINGATLME_SMS_MESSAGE", + "message": "Dear Citizen, Your complaint for with ID submitted on has been re-assigned to , , . You can track your complaint status and connect with our officials on the mSeva Punjab mobile App (download here - ) or your local municipal web portal.", + "module": "rainmaker-pgr", + "locale": "en_IN" + } + ] +} +``` + +Add Role-Action mapping for the APIs in MDMS. Following are the required entries. They should be mapped to both CITIZEN and appropriate employee roles. + +```text +{ + { + "id": {{ID_PLACEHOLDER}}, + "name": "Create PGR Request", + "url": "/pgr-services/v2/requests/_create", + "parentModule": "", + "displayName": "Create PGR Request", + "orderNumber": 0, + "enabled": false, + "serviceCode": "pgr-services", + "code": "null", + "path": "" + }, + { + "id": {{ID_PLACEHOLDER}}, + "name": "Update PGR Request", + "url": "/pgr-services/v2/requests/_update", + "parentModule": "", + "displayName": "Update PGR Request", + "orderNumber": 0, + "enabled": false, + "serviceCode": "pgr-services", + "code": "null", + "path": "" + }, + { + "id": {{ID_PLACEHOLDER}}, + "name": "Search PGR Request", + "url": "/pgr-services/v2/requests/_search", + "parentModule": "", + "displayName": "Search PGR Request", + "orderNumber": 0, + "enabled": false, + "serviceCode": "pgr-services", + "code": "null", + "path": "" + }, + { + "id": {{ID_PLACEHOLDER}}, + "name": "Search PGR Request", + "url": "/pgr-services/v2/requests/_count", + "parentModule": "", + "displayName": "Count PGR Request", + "orderNumber": 0, + "enabled": false, + "serviceCode": "pgr-services", + "code": "null", + "path": "" + } +``` ### Integration #### Integration Scope -PGR service can be integrated with any organisation or system which wants to track customer queries or complaint. The organisations can customise the workflow depending on there product requirements +PGR service can be integrated with any organisation or system which wants to track customer queries or complaint. The organisations can customise the workflow depending on their product requirements. #### Integration Benefits @@ -63,9 +373,9 @@ PGR service can be integrated with any organisation or system which wants to tra #### Steps to Integration -1. Customer can raise a complaint using the /requests/\_create -2. Organisation or System can search the complaint using /requests/\_searchendpoint -3. Once the complaint is raised the organisation or system can call /requests/\_update endpoint to move the application further in workflow until it get resolved +1. Customer can raise a complaint using the `/requests/_create`. +2. Organisation or System can search the complaint using `/requests/_searchendpoint`. +3. Once the complaint is raised the organisation or system can call `/requests/_update` endpoint to move the application further in workflow until it gets resolved. ### Interaction Diagram @@ -79,12 +389,12 @@ PGR service can be integrated with any organisation or system which wants to tra | :--- | :--- | | Workflow Technical Document | [Workflow Service](https://digit-discuss.atlassian.net/wiki/spaces/DD/pages/664174657/Workflow+Service) | | User Technical Document | [User Service](https://digit-discuss.atlassian.net/wiki/spaces/DD/pages/669450371/User+Service) | -| 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** | -| HRMS Technical Document | **NEEDS TO BE UPDATED** | +| 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 | +| HRMS Technical Document | NEEDS TO BE UPDATED | #### API List diff --git a/modules-features/technical-documentation/municipal-service/trade-license-service.md b/modules-features/technical-documentation/municipal-service/trade-license-service.md index 04ac2825..19e1a567 100644 --- a/modules-features/technical-documentation/municipal-service/trade-license-service.md +++ b/modules-features/technical-documentation/municipal-service/trade-license-service.md @@ -1,26 +1,24 @@ # Trade-License Service - - ### Overview -This service is used to issue license to user after verification. The service is designed in such way that it can be used to serve different type of licenses. Currently used to issue trade licenses, perform stakeholder registration and issue lock down pass. The service is integrated with workflow where we can define the steps for approval of the application. Once the application is approved the license is generated. +This service is used to issue a license to the user after verification. The service is designed in such a way that it can be used to serve different type of licenses. Currently used to issue trade licenses, perform stakeholder registration and issue lockdown pass. The service is integrated with workflow where we can define the steps for approval of the application. Once the application is approved the license is generated. ### Pre-requisites Before you proceed with the documentation, make sure the following pre-requisites are met - -* _Java 8_ +* Java 8 * Kafka server is up and running * egov-persister service is running and has tl-services persister config path added in it * PSQL server is running and database is created ### Key Functionalities -* Used for license generations in trade licenses, stakeholder registration and issue lock down pass -* In stakeholder registration, give roles to applicant on successful application, to access Building Plan Approval services. +* Used for license generations in trade licenses, stakeholder registration and issue lockdown pass +* Define roles to applicants on successful application to access Building Plan Approval services at the time of stakeholder registration * Generate application number and license number -* Support workflow +* Support workflows * Provide notification on various status changes for an application ### Interaction Diagram @@ -29,7 +27,7 @@ Before you proceed with the documentation, make sure the following pre-requisite ### Deployment Details -1. Add mdms configs required for tradelicense and bpa stake holder registration and restart mdms service +1. Add MDMS configs required for Trade License and BPA stakeholder registration and restart MDMS service 2. Deploy the latest version of tl-services service 3. Add tl-service persister yaml path in persister configuration and restart persister service 4. Add Role-Action mapping for API’s @@ -38,41 +36,41 @@ Before you proceed with the documentation, make sure the following pre-requisite ### Configuration Details -Following are the properties in application.properties file in trade license service which are configurable. +Following application properties in the Trade License service are configurable. -| **Property** | **Value** | **Remarks** | +| Property | Value | Remarks | | :--- | :--- | :--- | | egov.idgen.tl.applicationNum.format | PB-TL-\[cy:yyyy-MM-dd\]-\[SEQ\_EG\_TL\_APL\] | The format of the TL application number | | egov.idgen.tl.licensenumber.format | PB-TL-\[cy:yyyy-MM-dd\]-\[SEQ\_EG\_PT\_LN\] | The format of the TL license number | | egov.idgen.bpa.applicationNum.format | PB-SK-\[cy:yyyy-MM-dd\]-\[SEQ\_EG\_TL\_APL\] | The format of the Stake holder application number | | egov.idgen.bpa.licensenumber.format | PB-SK-\[cy:yyyy-MM-dd\]-\[SEQ\_EG\_PT\_LN\] | The format of the Stake holder license number | | egov.tl.max.limit | 100 | Max number of records to be returned | -| citizen.allowed.search.params | tenantId,applicationNumber,limit,offset,licenseNumbers | The search parameters on which citizen can search | -| employee.allowed.search.params | tenantId,applicationNumber,applicationType,status,mobileNumber,fromDate,toDate,licenseNumbers,oldLicenseNumber,limit,offset | The search parameters on which employee can search | +| citizen.allowed.search.params | tenantId, applicationNumber, limit, offset, licenseNumbers | The search parameters on which citizen can search | +| employee.allowed.search.params | tenantId, applicationNumber, applicationType, status, mobileNumber, fromDate, toDate, licenseNumbers, oldLicenseNumber, limit, offset | The search parameters on which employee can search | | persister.save.tradelicense.topic | save-tl-tradelicense | The name of kafka topic on which create request are published | | persister.update.tradelicense.topic | update-tl-tradelicense | The name of kafka topic on which update request are published | -| persister.update.tradelicense.workflow.topic | update-tl-workflow | The name of kafka topic on which status update request are published | +| persister.update.tradelicense.workflow.topic | update-tl-workflow | The name of kafka topic on which update request are published | ### Integration #### Integration Scope -The trade-license service is currently used to issue trade licenses, perform stakeholder registration and issue lock down pass. +The trade-license service is currently used to issue trade licenses, perform stakeholder registration and issue lockdown pass. #### Integration Benefits * Provide backend support for the different license registration process. * Mseva and SMS notifications on application status changes. -* Elastic search index for creating visualizations and Dashboards. -* Bpa Stakeholder registration provides new roles to the user to access Building Plan Approval system. +* The elastic search index for creating visualizations and Dashboards. +* Bpa Stakeholder registration provides new roles to the user to access the Building Plan Approval system. * Supports workflow which is configurable #### Steps to Integration -1. To integrate, host of tl-services service should be overwritten in helm chart. +1. To integrate, host of tl-services service should be overwritten in the helm chart. 2. {servicename}/\_create/ \_create should be added as the create endpoint for creating any license in the system -3. {servicename}/\_search/ \_search should be added as the search endpoint .This method handles all requests to search existing records depending on different search criteria -4. {servicename}/\_update/ \_update should be added as the update endpoint. This method is used to update fields in existing records or to update status of application based on workflow. +3. {servicename}/\_search/ \_search should be added as the search endpoint. This method handles all requests to search existing records depending on different search criteria +4. {servicename}/\_update/ \_update should be added as the update endpoint. This method is used to update fields in existing records or to update the status of the application based on workflow. ### Reference Docs @@ -88,9 +86,9 @@ The trade-license service is currently used to issue trade licenses, perform sta #### API List -In all below endpoints if servicename is BPAREG it is treated as stakeholder registration application and if it is TLor if it is absent then the application is treated as tradelicense application. +In all below endpoints if the service name is BPAREG it is treated as stakeholder registration application and if it is TL or if it is absent then the application is treated as trade license application. -Stake holder registration APIs:- [https://www.getpostman.com/collections/d18b79ccfb69ee8bb526](https://www.getpostman.com/collections/d18b79ccfb69ee8bb526) +Stakeholder registration APIs:- [https://www.getpostman.com/collections/d18b79ccfb69ee8bb526](https://www.getpostman.com/collections/d18b79ccfb69ee8bb526) Trade-License APIs:- [https://www.getpostman.com/collections/99f98723c45f97024831](https://www.getpostman.com/collections/99f98723c45f97024831) @@ -106,27 +104,27 @@ Trade-License APIs:- [https://www.getpostman.com/collections/99f98723c45f9702483 {servicename}/_create, _create This API is used to create an application for the license in the system. - Whenever an application is created a application number is generated and + Whenever an application is created an application number is generated and assigned to the application for future reference. {servicename}/_search, /_search This API is used to search the applications in the system based on various - search parameters like mobile number, application number,status etc. + search parameters like mobile number, the application number, status etc. {servicename}/_update, _update

The _update API is used to update the application information or to forward the application from one state to another.

-

In case of stakeholder registration if application reaches last stage - the role depending on the license type is given to the user.

+

In the case of the stakeholder registration if the application reaches + the last stage the role depending on the license type is given to the user.

{servicename}/{jobname}/_batch, /_batch - Searches trade licenses which are expiring and sends reminder sms to owner's - of the licenses + Searches trade licenses which are expiring and send a reminder SMS to + owner's of the licenses diff --git a/modules-features/technical-documentation/utilities.md b/modules-features/technical-documentation/utilities.md index 2b59ee56..8ada3679 100644 --- a/modules-features/technical-documentation/utilities.md +++ b/modules-features/technical-documentation/utilities.md @@ -1,2 +1,4 @@ # Utilities +Details will be updated soon... + diff --git a/modules-features/testcases.md b/modules-features/testcases.md index ac086d4e..45c7b157 100644 --- a/modules-features/testcases.md +++ b/modules-features/testcases.md @@ -1,2 +1,4 @@ # Quality Assurance +Details will be updated soon... + diff --git a/modules-features/user-guides/README.md b/modules-features/user-guides/README.md index 65dc28ca..8d266b84 100644 --- a/modules-features/user-guides/README.md +++ b/modules-features/user-guides/README.md @@ -2,19 +2,19 @@ description: Illustrative help docs --- -# Modules & User Manuals - -### Introduction To User Modules +# User Manuals DIGIT modules follow structured workflows to allow easy tracking of applications and processes. This section walks you through the various workflows and features supported by each module. -This section contains: +* [Logging In To DIGIT](guide-login.md) +* [Trade License User Manual](guide-tl/) +* [Public Grievances & Redressal User Manual](guide-pgr/) +* [Property Tax User Manual](guide-pt/) +* [mCollect User Manual](guide-mcollect/) + + + -* Logging In To DIGIT -* [Trade License User ](https://app.gitbook.com/@egov-digit/s/external/understand-digit/product-user-guides/trade-license)Guide -* [Public Grievances & Redressal User Guide](https://app.gitbook.com/@egov-digit/s/external/understand-digit/product-user-guides/public-grievance) -* Property Tax User Guide -* mCollect User Guide diff --git a/modules-features/user-guides/guide-login.md b/modules-features/user-guides/guide-login.md index b3bd19fa..5aefe04d 100644 --- a/modules-features/user-guides/guide-login.md +++ b/modules-features/user-guides/guide-login.md @@ -2,77 +2,68 @@ description: Guide to user registration and user profile management --- -# Logging In To DIGIT +# Logging Into DIGIT DIGIT users can sign up to use various modules through the online web portal or the mobile application login interface. -#### User Registration +### User Registration -The first step to logging in to use the **DIGIT** modules is to register as a user. +The first step to logging in to use the **DIGIT** modules is to register as a user. -To register as a user +Enter the ULB url in your browser. For instance, people of Punjab will use the link [https://mseva.lgpunjab.gov.in/citizen/user/register](https://mseva.lgpunjab.gov.in/citizen/user/register) to register for Punjab mSeva services. -1. Enter the ULB url in your browser. For instance, people of Punjab will use the link [https://mseva.lgpunjab.gov.in/citizen/user/register](https://mseva.lgpunjab.gov.in/citizen/user/register) to register for Punjab mSeva services. ![](../../.gitbook/assets/logging1.png) -2. Enter your **Mobile Number** to register as a user. -3. Enter your **Name**. -4. Select your city from the **City** drop-down list. -5. Click on the **Continue** button. -6. The system sends an OTP to your mobile number. Enter the **OTP**. ![](../../.gitbook/assets/logging2.png) -7. Click on the **Resend** button on the screen in case you have not received your OTP. -8. Click on the **Get Started** button. -9. You are registered as a user in the mSeva app. ![](../../.gitbook/assets/logging3.png) +![](https://docs.google.com/drawings/u/0/d/sCySEn2c6u0FD_9SmYqV9XA/image?w=624&h=379&rev=1&ac=1&parent=1pR9OLsrbm5UDtHSuq-Iv2BM78gUTwagbwGpCMGdeqrg) -#### User Login +Enter your **Mobile Number, Name, City** to register as a user. Click on the **Continue** button. -To log in to the system +The system sends an OTP to the given mobile number. Enter the **OTP**. -1. Enter the url [https://egov-micro-qa.egovernments.org/citizen/](https://egov-micro-qa.egovernments.org/citizen/) -2. Click on the **Login** button. -3. Enter your **Mobile Number**. -4. Mobile app users can scan the QR code on the screen to file/track complaints. ![](../../.gitbook/assets/logging4.png) -5. Click on the **Continue** button. -6. Enter the **OTP** sent to the registered mobile number. -7. Click on the **Continue** button. +![](https://docs.google.com/drawings/u/0/d/s2T32WcZI52UesXbpGgcd5Q/image?w=624&h=333&rev=1&ac=1&parent=1pR9OLsrbm5UDtHSuq-Iv2BM78gUTwagbwGpCMGdeqrg) -You are logged in to the app. +Click on the **Resend** button on the screen in case you have not received your OTP. Click on the **Get Started** button after entering the OTP. You are now registered as a user in the DIGIT app. +![](https://docs.google.com/drawings/u/0/d/sNyb8dw-xIYxcNLqvo3_d8w/image?w=624&h=349&rev=1&ac=1&parent=1pR9OLsrbm5UDtHSuq-Iv2BM78gUTwagbwGpCMGdeqrg) -#### Edit User Profile +### User Login -To change your account details +Enter the URL [https://egov-micro-qa.egovernments.org/citizen/](https://egov-micro-qa.egovernments.org/citizen/) to log in to the system. Click on the **Login** button. -1. Click on the drop-down icon next to your profile logo on the top right corner of the window. -2. Click on **Edit Profile**. ![](../../.gitbook/assets/mseva-login.png) -3. Enter your new user **Name** if you want to change the existing profile name. -4. Select the applicable **City** from the drop-down list if you want to change your city settings. -5. Enter your **Email Id** if you want to reset your email address. -6. Click on the camera ![](https://lh4.googleusercontent.com/TByzXzqFM0xmlOY171TFHKEst3YNcF6R-xQPlvOT5IJaD-nucFOcwTp4xeZn94Lwp2eEJ8w_xO_QR5g7ZEjnuGEq8EMJSi7rVw3T_m-qdkfQrS_sEA_duHIC4nKAfa2yTLS35hSA) icon to upload or change your Profile photo. -7. Click on the **Gallery** button to select an image from your photo gallery or files on the computer. ![](../../.gitbook/assets/edit-profile.png) -8. Select the file and click on the **Open** button. This will load the selected image as the profile picture. -9. Click on the **Remove** button to delete the existing profile picture. -10. Click on the **Save** button. +Enter your **Mobile Number**. Mobile app users can scan the QR code on the screen to file/track complaints. Click on the **Continue** button. -The profile changes are saved and applied. +![](https://docs.google.com/drawings/u/0/d/s7OCFfVMKFIftTROaEpzaug/image?w=624&h=364&rev=1&ac=1&parent=1pR9OLsrbm5UDtHSuq-Iv2BM78gUTwagbwGpCMGdeqrg) +Enter the **OTP** sent to the registered mobile number. Click on the **Continue** button. You are logged in to the app. -#### Change Language Settings -Users can change the language of the app from English to Hindi or the local language for ease and convenience. +### Edit User Profile -To change language +Click on the drop-down icon next to your profile logo on the top right corner of the window to change your account details. Click on **Edit Profile**. -1. Click on the button labelled English adjacent to the profile icon. ![](../../.gitbook/assets/logging5.png) -2. Select the preferred language from the list of available languages. +![](https://docs.google.com/drawings/u/0/d/sFKAsXe9liLY7Lo0M8W9t4g/image?w=624&h=276&rev=1&ac=1&parent=1pR9OLsrbm5UDtHSuq-Iv2BM78gUTwagbwGpCMGdeqrg) -The system menu and prompts will now be displayed in the selected language. +Enter your new user **Name** if you want to change the existing profile name. Select the applicable **City** from the drop-down list if you want to change your city settings. Enter your **Email Id** if you want to reset your email address. +![](https://docs.google.com/drawings/u/0/d/sBqvSnRMTqVKhmjaDMEJLYA/image?w=624&h=281&rev=1&ac=1&parent=1pR9OLsrbm5UDtHSuq-Iv2BM78gUTwagbwGpCMGdeqrg) -#### Logging Out +Click on the camera ![](https://lh4.googleusercontent.com/TByzXzqFM0xmlOY171TFHKEst3YNcF6R-xQPlvOT5IJaD-nucFOcwTp4xeZn94Lwp2eEJ8w_xO_QR5g7ZEjnuGEq8EMJSi7rVw3T_m-qdkfQrS_sEA_duHIC4nKAfa2yTLS35hSA) icon to upload or change your Profile photo. Click on the **Gallery** button to select an image from your photo gallery or files on the computer. Select the file and click on the **Open** button. This will load the selected image as the profile picture. Click on the **Remove** button to delete the existing profile picture. -To log out from the app +![](https://lh5.googleusercontent.com/UmbDvYrrd1YR2kFw_T1iygV1tbJ_dmY3MLm1-d-YivLrFzlQEpJHJ0Fp0eBm-E07oowkR0JOhdiPhWQLHRXl8wQlVEiXBGahoT1cnvfpmtSHeGTddpxVXWoHqt1WAaM6DFRP0VZq) -1. Click on the drop-down icon next to your profile logo on the top right corner of the window. -2. Click on Logout. +Click on the **Save** button. The profile changes are saved and applied. + + +### Change Language Settings + +Users can change the language of the app from English to Hindi or the local language for ease and convenience. To change language click on the button labelled English adjacent to the profile icon. + +![](https://lh5.googleusercontent.com/8RLiQNz0rnEHUlMqYyd12AiUNunpCVq2fGCwx6RUJo1NdQzBe8PhM23Ve-I1Ie8u_QRfNayWxdco2mvf2vcNMIRri1BBZarqYX4UY_cZ6BAg-ah1MFOBnMz9-oZTjFUdgLljN2GE) + +Select the preferred language from the list of available languages. The system menu and prompts will now be displayed in the selected language. + + +### Logging Out + +To log out from the app click on the drop-down icon next to your profile logo on the top right corner of the window. Click on Logout. You are logged out of the system. diff --git a/modules-features/user-guides/guide-mcollect.md b/modules-features/user-guides/guide-mcollect.md index 4578e3da..60691ca2 100644 --- a/modules-features/user-guides/guide-mcollect.md +++ b/modules-features/user-guides/guide-mcollect.md @@ -18,9 +18,7 @@ The mCollect module is designed to facilitate the ULBs process miscellaneous typ #### **User roles** -Refer to the table below to understand the different user roles and the scope of action linked to each role. The applicable user roles and action items can vary from one State to another. DIGIT customizes the workflows to suit the requirements defined at the State level. - -**** +Refer to the table below to understand the different user roles and the scope of action linked to each role. The applicable user roles and action items can vary from one State to another. DIGIT customizes the workflows to suit the requirements defined at the State level. @@ -42,8 +40,8 @@ Refer to the table below to understand the different user roles and the scope of

Download Receipts

Print Receipts

- + - @@ -74,10 +72,7 @@ Refer to the table below to understand the different user roles and the scope of ### **Getting Started with MCS** This section of the user manual guides you through the user login process. ULB employees can sign up to use the MCS module through the online web portal or the mobile application login interface. - - Refer to Appendix 1 to learn more about user registration, logging in, editing user profile, and logging out. - ### **Using MCS** @@ -141,7 +136,7 @@ The counter employees collect and process the miscellaneous payments on behalf o CE can process and collect payments for miscellaneous services through the DIGIT web portal or the DIGIT mobile app. **** -**To process new payment** +**To process a new payment** 1. Navigate to the **Universal Collections** option in the sidebar main menu. diff --git a/modules-features/user-guides/guide-mcollect/README.md b/modules-features/user-guides/guide-mcollect/README.md new file mode 100644 index 00000000..c1231d50 --- /dev/null +++ b/modules-features/user-guides/guide-mcollect/README.md @@ -0,0 +1,77 @@ +--- +description: A complete guide to using mCollect module +--- + +# mCollect + +The mCollect module is designed to facilitate the ULBs process miscellaneous types of payments. Miscellaneous payments may include parking fees, advertising fees, rent, challans, etc. The module objective is to process and record payment collections on account of miscellaneous heads within the ULBs. This makes it easy to track payment receipts and generate reports for administrative purposes. + +### Key Features + +The MCS module enables ULB employees to - + +* Capture payment details +* Generate and print payment collection receipts +* Access dashboard analytics +* Generate reports for administration + +### **User roles** + +Refer to the table below to understand the different user roles and the scope of action linked to each role. The applicable user roles and action items can vary from one State to another. DIGIT customizes the workflows to suit the requirements defined at the State level. + +
Citizen pays the applicable fees for miscellaneous services through the - CEs or FEsThe citizen pays the applicable fees for miscellaneous services through + the CEs or FEs
Counter Employee (CE) @@ -65,7 +63,7 @@ Refer to the table below to understand the different user roles and the scope of

Download Receipts

Print Receipts

Field employees also collects miscellaneous payments from the citizens + Field employees also collect miscellaneous payments from the citizens on the field
+ + + + + + + + + + + + + + + + + + + + + + + + +
User Role + Scope of Action + Role Description +
Citizen + +

Search Receipts

+

Download Receipts

+

Print Receipts

+
The citizen pays the applicable fees for miscellaneous services through + the CEs or FEs
Counter Employee (CE) + +

Process New Collection

+

Search Receipts

+

Download Receipts

+

Print Receipts

+
Counter employees collect miscellaneous payments from the citizens online
Field Employee (FE) + +

Process New Collection

+

Search Receipts

+

Download Receipts

+

Print Receipts

+
Field employees also collect miscellaneous payments from the citizens + on the field
+ +### **Using MCS** + +This section guides you through the details of using the MCS module for the defined roles. Click on the relevant role below to learn more about how to use the MCS system. + +1. [Citizen](citizen-user-manual.md) +2. [Counter Employee \(CE\) and Field Employee \(FE\)](employee-user-manual.md) + diff --git a/modules-features/user-guides/guide-mcollect/citizen-user-manual.md b/modules-features/user-guides/guide-mcollect/citizen-user-manual.md new file mode 100644 index 00000000..23d2e61b --- /dev/null +++ b/modules-features/user-guides/guide-mcollect/citizen-user-manual.md @@ -0,0 +1,32 @@ +--- +description: 'Learn how to search, download and print your payment receipts' +--- + +# Citizen User Manual + +The citizen pays the fees for miscellaneous services through the CEs or FEs. Once the payment transaction is complete the citizen can access the payment receipts online. + +![](https://docs.google.com/drawings/u/0/d/sHPfa8rq5qQ18fUbHEBwxsw/image?w=227&h=283&rev=45&ac=1&parent=1GZKzf7O_6WDB5ba1gb6QUT6CqipoQzuRuWT44fTAgGo) + +**Citizens can** + +* Search receipts +* Download receipts +* Print receipts + +### **Search Download And Print Receipts** + +Citizens can search for payment receipts and download or print these online. To search for payment receipts navigate to the **Collections** option in the sidebar main menu. + +![](https://lh3.googleusercontent.com/IEjyNR2jqJ5Lk6bRw2UC_4HG7xu8g496jqpCs4NmGRi8TXGvWt3cVFYElr_uzHvggHj3CjH4DI_r4Gs-BFd3Rfp_LoMfotgwkcArovKhvPkFGtJ2QRkKJ8r7RWfiqtrbtERcHDB7) + +Enter the relevant search parameter. The system enables you to search using payment **Receipt No.** or **Service Category**, or payee **Mobile No.** Click on the **Search** button. + +The system will display the relevant search results in the panel below. Click on the relevant record to view the payment receipt. + +The system will generate a pdf format of the payment receipt. Click on the download icon on the pdf page to download the receipt. + +Click on the print icon on the pdf page to print the receipt. + +Click on the **Reset** button to renew your search with different parameters. + diff --git a/modules-features/user-guides/guide-mcollect/employee-user-manual.md b/modules-features/user-guides/guide-mcollect/employee-user-manual.md new file mode 100644 index 00000000..eba31b7a --- /dev/null +++ b/modules-features/user-guides/guide-mcollect/employee-user-manual.md @@ -0,0 +1,81 @@ +--- +description: >- + This section illustrates the steps for different employee user roles at the + ULB level +--- + +# Employee User Manual + +### **CE And FE** + +The counter employees collect and process the miscellaneous payments on behalf of the citizens. **** + +![](https://docs.google.com/drawings/u/0/d/sdqYT5-oQRjT_c5OP_fcsbA/image?w=303&h=297&rev=128&ac=1&parent=1GZKzf7O_6WDB5ba1gb6QUT6CqipoQzuRuWT44fTAgGo) + +**The CE role can -** + +* Collect payment +* Search payment receipts +* Print receipts +* Download payment receipts + +### **Collect Payment** + +CE can process and collect payments for miscellaneous services through the DIGIT web portal or the DIGIT mobile app. To process a new payment navigate to the **Universal Collections** option in the sidebar main menu. + +![](https://docs.google.com/drawings/u/0/d/sHDxtCHirCj-8f8WY383r5g/image?w=289&h=357&rev=59&ac=1&parent=1GZKzf7O_6WDB5ba1gb6QUT6CqipoQzuRuWT44fTAgGo) + +Click on the **New Collection** button on the screen. This will open a new collection form page. + +![](https://docs.google.com/drawings/u/0/d/sZFok4oTVR3-Z5P6RpiHlrQ/image?w=624&h=184&rev=57&ac=1&parent=1GZKzf7O_6WDB5ba1gb6QUT6CqipoQzuRuWT44fTAgGo) + +Enter the **Mobile No.** and **Consumer Name** of the payee. + +![](https://docs.google.com/drawings/u/0/d/sU091UrGzf-BIhQXc-K1OnA/image?w=598&h=349&rev=65&ac=1&parent=1GZKzf7O_6WDB5ba1gb6QUT6CqipoQzuRuWT44fTAgGo) + +Select the applicable **Service Category.** + +{% hint style="info" %} +The system will prompt the input of Tax amount, CGST, SGST, Field Fee, or any other details depending on the selected Service Category. +{% endhint %} + +Enter the **From Date** and **To Date** to identify the applicable payment period. ****Enter any additional information in the **Comments** field. + +Click on the **Next** button to move to the payment section. The **Payment Collection Details** page displays the fee details and capture payment form. The **Fee Details** panel displays the fee breakup and **Total Amount** details. + +![](https://lh6.googleusercontent.com/MvPGlTveclKajRWJnyKrRrbSyOKfDKkw1NzE0X9tCFUioKlz5NrPXU_nvVrFEuqLbpU20bJG-RoSsJlW7GCr_u0hCnRbqgiu3Kfwl-UYS3pOLB7W6YOm_ffNonFLtJrSpCR8q-nu) + +The **Capture Payment** panel displays the available payment methods. Click on the preferred payment tab. The available payment tabs are **Cash, Cheque, Credit/Debit Card.** + +Enter the **Paid By** and the **Payee Name** details. + +![](https://docs.google.com/drawings/u/0/d/s_tv2UAnfFyxWdg76C7_GMQ/image?w=624&h=331&rev=71&ac=1&parent=1GZKzf7O_6WDB5ba1gb6QUT6CqipoQzuRuWT44fTAgGo) + +Enter the **Payer Mobile No.** + +Enter the **Cheque No., Cheque Date, IFSC, Bank Name,** and **Bank Branch** details in case of payment by cheque. Enter your credit card or debit card **Last 4 digits, Transaction No.**, and **Re-enter Transaction No.** details if you have selected the Credit/Debit Card payment option. + +Enter the **Gen/G8 Receipt No**. issued at the payment counter in case payments are made offline. Enter **Gen/G8 Receipt Issue Date** mentioned on the receipt. + +Click on the **Generate Receipt** button once the payment is collected or processed. The system will display the payment success acknowledgement message. + +![](https://lh4.googleusercontent.com/L-wJWESDZNSQDjPpdBtWKm4j4gyzxc4v6TYDCmchZ7OuJeUfq3ipiMovnboiFj2aKsQ7AM6Vb4cwGlJiEftxc5dXNEf8tMM3I0fFpZ9pzFNaAiDS4wpcnyqTmRDlw7zPmu4bxMdJ) + +Click on the **Download** button to download/view the receipt. Click on the **Print** button to print the receipt. + +### **Search Receipts** + +To search for payment receipts navigate to the Universal Collections page in the sidebar main menu. + +![](https://lh3.googleusercontent.com/IEjyNR2jqJ5Lk6bRw2UC_4HG7xu8g496jqpCs4NmGRi8TXGvWt3cVFYElr_uzHvggHj3CjH4DI_r4Gs-BFd3Rfp_LoMfotgwkcArovKhvPkFGtJ2QRkKJ8r7RWfiqtrbtERcHDB7) + +Enter the relevant search parameter. The system enables you to search using payment **Receipt No**. or **Service Category**, or payee **Mobile No.** Click on the **Search** button. + +The system will display the relevant search results in the panel below. Click on the relevant record to view the payment receipt. The system will generate a pdf format of the payment receipt. + +Click on the download icon on the pdf page to download the receipt. Click on the print icon on the pdf page to print the receipt. + +Click on the **Reset** button to renew your search with different parameters. + +![](https://lh3.googleusercontent.com/u3oLM8vb8NQGxqz_AK7ZvHmtMX_99oQB_VBr4qMODxiqqAjBrjesi8p--HC-58sjeczNGShKz8Jd-lCqeUO5f-AxQIaRyrWwu8xhSOF48WGAc-3KS1v8JOnIDw0tfRGKHvXtXaMy) + diff --git a/modules-features/user-guides/guide-pgr/README.md b/modules-features/user-guides/guide-pgr/README.md index 41b77005..a73df556 100644 --- a/modules-features/user-guides/guide-pgr/README.md +++ b/modules-features/user-guides/guide-pgr/README.md @@ -4,8 +4,6 @@ description: A complete guide to using the PGR module # Public Grievance & Redressal -### **Introduction To PGR** - The Public Grievance Redressal or the PGR is a standardized solution offering on DIGIT platform to register and redress citizen grievances. It provides a transparent and trackable mechanism to solve public grievances by inducing responsive administration. PGR enables the citizens to file the complaints using various channels and helps the municipal employees to resolve them timely. ### Key Features @@ -74,10 +72,14 @@ Refer to the table below to understand the different user roles and the scope of -### User Manual Sections +### Using PGR + +This section guides you through the details of using the PGR module for each role. Click on the relevant role below to learn more about how to use the PGR system. -* Citizen Manual -* Employee Manual +* [Citizens](citizen-guide.md) +* [CSR](employee-guide.md#csr) +* [GRO](employee-guide.md#gro) +* [FME](employee-guide.md#fme) diff --git a/modules-features/user-guides/guide-pgr/citizen-guide.md b/modules-features/user-guides/guide-pgr/citizen-guide.md index 90b20541..819ac483 100644 --- a/modules-features/user-guides/guide-pgr/citizen-guide.md +++ b/modules-features/user-guides/guide-pgr/citizen-guide.md @@ -17,72 +17,67 @@ The Citizen role can - ### File Complaints -The File Complaints option allows citizens to register their complaints. -To file complaints - -1. Navigate to **Complaints** Home page. -2. Click on the **File Complaints** tab on the screen. This will open the complaint form page. -3. Select the relevant **Complaint Type** and the subtype from the drop-down list of options. -4. Refer to the list of complaint types available in PGR. ![](../../../.gitbook/assets/pgr-complaint1.png) -5. Enter any additional information in the **Complaint Additional Details** field. -6. Click on the map ![](https://lh6.googleusercontent.com/Tb0JpM-oURDy9qhH7F4LITbbrFVqAB8aWv69et5RaDEyzN4wLKA0KBGBGtcWXyn8xhwR9K0tf_9w3SKPhMu3_3go2w_KG3axcTko-OlvM7_ndMyKxnF2NNvnvXMnOjNjrNlEFm0_) icon to pinpoint the **Complaint Location**. -7. The **City** field will display the city specified in your profile by default. You can change the city if required. -8. Choose the applicable **Locality/Mohalla** from the drop-down list. -9. Enter the **House No.** and **Street Name**. -10. Enter any **Landmark** to identify the exact location for the listed complaint. -11. Click on the camera ![](https://lh5.googleusercontent.com/i3Z0ifdkN7rCTzGL4tuRylboF_6NII2XsA39nq8rjyODj70xnI6E8AacqgJ1yoOazCnti1BJzTXXOybYcGgXpEyiTsugTgx6s078mjLIXoneJ5P7MCMysdMhYDHHazmMcnN92-Qn) icon to upload any photos for the complaint. -12. Click on the **Submit Complaint** button once you have finished filling in all the details. ![](../../../.gitbook/assets/pgr-complaint2.png) -13. The system will display the Complaint Registered Successfully message along with the **Complaint No**. -14. Click on the **Continue** button. Your complaint details are available on the dashboard. ![](../../../.gitbook/assets/pgr-complaint3.png) -15. The bell icon on the top right corner of the complaint tab will display any notifications received for the complaint. -16. Click on the bell ![](https://lh5.googleusercontent.com/vODtR2YU20TBPUG_0UJRjeh9gtAX7LKHP-dYrLbGuvz1d9VF2ZFcVoVvYKqjCxrP_TFcT0s4BhlSa1at8AvAjnH8Y0ez2L8ZKuVnH6VdaUNCqpk91VPxM0vYbexdz7jxk9g5rSSB) icon to view the complaint details. +The File Complaints option allows citizens to register their complaints. + +To file complaints navigate to **Complaints** Home page. Click on the **File Complaints** tab on the screen. This will open the complaint form page. Select the relevant **Complaint Type** and the subtype from the drop-down list of options. Refer to the [list of complaint types](complaint-types-list.md) available in PGR. + +![](../../../.gitbook/assets/pgr-user-manual-1.png) + +Enter any additional information in the **Complaint Additional Details** field. Click on the map ![](https://lh6.googleusercontent.com/Tb0JpM-oURDy9qhH7F4LITbbrFVqAB8aWv69et5RaDEyzN4wLKA0KBGBGtcWXyn8xhwR9K0tf_9w3SKPhMu3_3go2w_KG3axcTko-OlvM7_ndMyKxnF2NNvnvXMnOjNjrNlEFm0_) icon to pinpoint the **Complaint Location**. The **City** field will display the city specified in your profile by default. You can change the city if required. Choose the applicable **Locality/Mohalla** from the drop-down list. Enter the **House No.** and **Street Name**. Enter any **Landmark** to identify the exact location for the listed complaint. + +Click on the camera ![](https://lh5.googleusercontent.com/i3Z0ifdkN7rCTzGL4tuRylboF_6NII2XsA39nq8rjyODj70xnI6E8AacqgJ1yoOazCnti1BJzTXXOybYcGgXpEyiTsugTgx6s078mjLIXoneJ5P7MCMysdMhYDHHazmMcnN92-Qn) icon to upload any photos for the complaint. Click on the **Submit Complaint** button once you have finished filling in all the details. + +![](https://lh3.googleusercontent.com/ben8tfc8Lp0Do6Pht3bRAVYFBvldAvmdg6nCHNy7SXM8vgKwDmiXT6sZ3wD00_REKLWJu8prNoefhBfPDxxtT-8A8p69N6pZxshMd8yET9JsGz7fSyvT1tz2YJlnBDlRmHdXDzZ3) + + The system will display the Complaint Registered Successfully message along with the **Complaint No**. Click on the **Continue** button. Your complaint details are available on the dashboard. + +![](https://lh6.googleusercontent.com/MsZIJ3A2-bTvvv_NpxWb3t3u6O9VbdnC_jcZV64AMOlBOHd6Q2l2dBsJo6Lp2cfCuC8z3GDPrUkwT68GfQnc8ls76GsoGeg1dCO48k4Shw0Tv69n-jWKD-5CN6pTwM1jabhtgCbk) + +The bell icon on the top right corner of the complaint tab will display any notifications received for the complaint. Click on the bell ![](https://lh5.googleusercontent.com/vODtR2YU20TBPUG_0UJRjeh9gtAX7LKHP-dYrLbGuvz1d9VF2ZFcVoVvYKqjCxrP_TFcT0s4BhlSa1at8AvAjnH8Y0ez2L8ZKuVnH6VdaUNCqpk91VPxM0vYbexdz7jxk9g5rSSB) icon to view the complaint details. + +![](https://lh4.googleusercontent.com/JsuSwZN1YEjovJ9Mezq5STjFjnB-KoMTc-bL3RlIZsYkccDYgMdzd48mtYXf0cNfzvtOc1gpkHT7KdVdZpfo1ZraW4A39P7WU-KGm99pQ9_flbuHvlOyJ-zeIKRbyjhmio3fhNE5) ### My Complaints -My Complaints tab enables citizens to track the status of their complaints. -To view or track complaints +My Complaints tab enables citizens to track the status of their complaints. + +To view or track complaints click on **My Complaints** tab. The system will display all complaints filed by you or from your account and the corresponding status. Click on the **Open** button corresponding to any complaint to view the complaint details. -1. Click on **My Complaints** tab. -2. The system will display all complaints filed by you or from your account and the corresponding status. -3. Click on the **Open** button corresponding to any complaint to view the complaint details. ![](../../../.gitbook/assets/pgr-complaint4.png) -4. The complaint summary view contains the **Complaint Details**, **Complaint Timeline**, and **Comments** text box. The complaint timeline indicates the action taken on the complaint and the current or pending action status of the complaint. ![](../../../.gitbook/assets/pgr-complaint5.png) -5. Enter any additional information about the complaint in the **Comments** section. +![](https://lh6.googleusercontent.com/Qrp5X0sRtvLoRYpWhrwGJqbiNIFcDBrwykegC3IbeUbryJrF2uGYUJZJvcAplJuYzqSFDiU8pMB0IKW_LG6W238LwCqpwixImfLBP6l0FLR6M1wyZVC-0JkDYbdmODmFCw3p0tnE) + +The complaint summary view contains the **Complaint Details**, **Complaint Timeline**, and **Comments** text box. The complaint timeline indicates the action taken on the complaint and the current or pending action status of the complaint. + +![](https://lh6.googleusercontent.com/sCstNQhHsU_4VSjNaeNShwwlWP9JVv_hRyB4SJ9POwUqROVSnMYPgSqcKcsWvPtN-Y_UJP0okQ5xGlkTqsb0Mp6TET-E60tkOZVPUYwoSqpt2LrIziZmNKIHulAbuMj-yfp3VDKn) + + Enter any additional information about the complaint in the **Comments** section. ### Rate Complaints -The PGR module enables the citizens to give their feedback on resolved complaints. -To rate resolved complaints - -1. Navigate to the **Complaints** menu option in the sidebar. -2. Click on the **My Complaints** tab. -3. Scroll down to the complaint you want to rate. -4. You can rate only complaints marked as Closed. -5. Scroll down to the **Complaint Timeline** section. ![](../../../.gitbook/assets/pgr-complaint6.png) -6. Click on the **Rate** button on the timeline. ![](../../../.gitbook/assets/pgr-complaint7.png) -7. Click on the number of stars on the screen to rate the work on the complaint on five. -8. Click on the most appropriate feedback statement to rate the work. -9. Add any additional information in the **Comments** section. -10. Click on the **Submit** button. -11. The system displays an acknowledgement for your ratings. -12. Click on the **Go To Home** button to navigate back to the home page. +The PGR module enables the citizens to give their feedback on resolved complaints. -### Reopen Complaints +To rate resolved complaints navigate to the **Complaints** menu option in the sidebar. Click on the **My Complaints** tab. Scroll down to the complaint you want to rate. You can rate only complaints marked as Closed. Scroll down to the **Complaint Timeline** section. + +![](https://lh4.googleusercontent.com/YrDkHeVMyf8WdXykJ8oEkQbX43nhn4u2g7Zvmfh1FXNvCHJrkj2eS6bCgeOL1ZC5vRM9YN6Z3XmYu4BWd55GaUI854VkF_09bDOjjkoIvR5nwn7Swl4g7zI4tHVEHXPxzYRIIREb) -To reopen the complaint + Click on the **Rate** button on the timeline. + +![](https://lh5.googleusercontent.com/TI3k2EiJUD0lB5zwTqKtgFYn5VVJQwRtcMpQBaUC6y9Z7Fcg4OJrTm42S0iO9qTVBBzgfDTcu0C5qarsgzthwRvEzzrM2KOnbt6CLNWAUyOy48COADImO-haH_EDM_vLbpsxO1dZ) + +Click on the number of stars on the screen to rate the work on the complaint on five. Click on the most appropriate feedback statement to rate the work. Add any additional information in the **Comments** section. Click on the **Submit** button. + +The system displays an acknowledgement for your ratings. Click on the **Go To Home** button to navigate back to the home page. + +### Reopen Complaints -1. Navigate to **Complaints > My Complaints** menu option in the sidebar. -2. Click on the closed complaint that you want to reopen. -3. Scroll down to the **Complaint Timeline** section. ![](../../../.gitbook/assets/pgr-complaint8.png) -4. Click on the **Re-Open** button on the timeline. +To reopen the complaint navigate to **Complaints > My Complaints** menu option in the sidebar. Click on the closed complaint that you want to reopen. Scroll down to the **Complaint Timeline** section. Click on the **Re-Open** button on the timeline. -![](https://lh3.googleusercontent.com/K8DjKt00FSoGT-MOFHp4TAbhPOasficXgB7Qzl7U-GleSYbHzM4a0JwNgxu1Jw0rk7rAQC_PMftcV0O_s6krZs7VTQAe2LdbaPb2ftt_uSwDYz9x8xu6uy2CbYplB1LqJ1e0RoIn)The Re-Open button will be available only for 5 days after the complaint is resolved and closed by the department employee. The number of days can vary depending on the State or ULBs. The citizen or CSR will not be able to reopen complaints once this period is over. ![](../../../.gitbook/assets/pgr-complaint9.png) +![](https://lh6.googleusercontent.com/4wAdWqA_U-UpkWgBFt9Nfqz25_SMQskdaBrclRtRd6tSOei5sj3TqrLH96kViDib4X9QFEnd7mzxMl-FzDJK7k1K-ENldTmt8dfTwidrDmNZdusuZM5zE19c2sGoXEJ3Wu-RAnMo) +{% hint style="info" %} +The Re-Open button will be available only for 5 days after the complaint is resolved and closed by the department employee. The number of days can vary depending on the State or ULBs. The citizen or CSR will not be able to reopen complaints once this period is over. +{% endhint %} +![](https://lh6.googleusercontent.com/_0q7cIz6f_poIUNzZTFJkEESK1JN0fgO7urTnmndOvypUh85LnR8A7i01HWSVt_YoWgqMfEgnfzKvE2_Jf-9Z3UNhg5X2he4-B1VpHov7zURq-o8krkYSnjS321n2_8C1L15hsJi) -1. Select the appropriate reason for reopening the complaint. -2. Click on the camera icon to upload any photos related to the complaint. -3. Enter any additional information in the **Comments** section. -4. Click on the **Continue** button once done. -5. The system displays an acknowledgement message stating the complaint is reopened. -6. Click on the **Go To Home** button to navigate back to the home page. +Select the appropriate reason for reopening the complaint. Click on the camera icon to upload any photos related to the complaint. Enter any additional information in the **Comments** section. Click on the **Continue** button once done. The system displays an acknowledgement message stating the complaint is reopened. Click on the **Go To Home** button to navigate back to the home page. diff --git a/modules-features/user-guides/guide-pgr/complaint-types-list.md b/modules-features/user-guides/guide-pgr/complaint-types-list.md new file mode 100644 index 00000000..56b88077 --- /dev/null +++ b/modules-features/user-guides/guide-pgr/complaint-types-list.md @@ -0,0 +1,156 @@ +# Complaint Types List + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Complaint Types + Complaints Sub-Types +
Streetlights +
    +
  1. Streetlight not working
  2. +
  3. Installation of new street light
  4. +
+
Garbage +
    +
  1. Garbage needs to be cleared
  2. +
  3. Burning of garbage
  4. +
  5. Damaged garbage bin
  6. +
  7. Non-sweeping of road
  8. +
  9. Congress grass-cutting
  10. +
+
Drains +
    +
  1. Overflowing/Blocked drain
  2. +
  3. Cleaning of drains
  4. +
  5. Water entered house rainy season
  6. +
+
Water & Sewerage +
    +
  1. Illegal discharge of sewage
  2. +
  3. Block/overflowing sewage
  4. +
  5. Shortage of water
  6. +
  7. Dirty water supply
  8. +
  9. Broken water pipe/leakage
  10. +
  11. Water pressure is very less
  12. +
  13. No water supply
  14. +
  15. Sewage main hole cover missing or broken
  16. +
  17. Sewerage main hole cover raising
  18. +
  19. Cleaning of sewerage moves slurry gear
  20. +
+
Property Tax/ House Tax +
    +
  1. How to pay property tax
  2. +
  3. Wrong calculation
  4. +
  5. Receipt not generated
  6. +
  7. Others
  8. +
+
Roads & Footpaths +
    +
  1. Damaged road
  2. +
  3. Waterlogged road
  4. +
  5. Manhole cover missing or broken
  6. +
  7. Damaged/Blocked footpath
  8. +
  9. Construction material lying on road
  10. +
  11. Illegal rehries on road
  12. +
  13. Road jalli broken
  14. +
+
Mosquitoes +
    +
  1. Request spraying or fogging operation
  2. +
+
Animals +
    +
  1. Stray animals
  2. +
  3. Dead animals
  4. +
+
Public Toilets +
    +
  1. Dirty or smelly public toilets
  2. +
  3. Public toilet damaged
  4. +
  5. No water or electricity in public toilet
  6. +
+
Land Violations +
    +
  1. Illegal shops on footpath
  2. +
  3. Illegal construction
  4. +
  5. Illegal parking
  6. +
+
Trees +
    +
  1. Illegal cutting of trees
  2. +
  3. Cutting or trimming of tree required
  4. +
+
Open Defecation +
    +
  1. Open defecation
  2. +
+
Parks +
    +
  1. Parks require maintenance
  2. +
+
Others
+ + + diff --git a/modules-features/user-guides/guide-pgr/employee-guide.md b/modules-features/user-guides/guide-pgr/employee-guide.md index 8569815c..92535add 100644 --- a/modules-features/user-guides/guide-pgr/employee-guide.md +++ b/modules-features/user-guides/guide-pgr/employee-guide.md @@ -1,149 +1,191 @@ --- -description: Guide to processing citizen complaints +description: >- + This section illustrates the steps for different employee user roles at the + ULB level --- # Employee User Manual -Citizen complaints are routed through different workflows. The workflows represent a methodical and rational approach to complaint resolution. +### CSR -These workflows include - +Complaints can also be registered by ULB counter employees on behalf of the citizen. -* File Complaints -* Search Complaints -* Reopen Complaints -* Rate Complaints -* Assign Complaints -* Re-Assign Complaints -* Share Complaints -* Reject Complaints -* Resolve Complaints +The CSR or counter employees can perform the following actions on PGR - + +1. [File Complaints](employee-guide.md#file-complaints) +2. [Search or Track Complaints](employee-guide.md#search-complaints) +3. [Reopen Complaints](employee-guide.md#reopen-complaints) + +![](https://docs.google.com/drawings/u/0/d/sU6rjcwIb9fCKVVn6TmBleg/image?w=425&h=156&rev=18&ac=1&parent=1pR9OLsrbm5UDtHSuq-Iv2BM78gUTwagbwGpCMGdeqrg) ### File Complaints -To file complaints on behalf of the citizen - -1. Navigate to the Home page and click on the **Complaints** card. -2. Else, click on the **Complaints** menu option in the sidebar. -3. Click on the **File Complaint** tab on the screen. This will open the complaint form page. ![](../../../.gitbook/assets/pgr-complaint10.png) -4. Enter the **Citizen Name**. -5. Enter **Citizen Mobile No.** -6. Select the relevant **Complaint Type** and the subtype from the drop-down list of options. Refer to the list of complaint types available in PGR. -7. Enter any additional information in the **Complaint Additional Details** field. -8. The **City** field will display the city specified in your profile by default. You can change the city if required. -9. Choose the applicable **Locality/Mohalla** from the drop-down list. -10. Enter the **House No.** and **Street Name**. -11. Enter any **Landmark** to identify the exact location for the listed complaint. -12. Click on **File Complaint** button once you have finished filling in all the details. -13. The system will display the Complaint Registered Successfully message along with the Complaint No. ![](../../../.gitbook/assets/pgr-complaint11.png) -14. Click on the **Continue** button. Your complaint details are available on the dashboard. -15. Click on the complaint to view the complaint details. +To file complaints on behalf of the citizen navigate to the Home page and click on the **Complaints** card. Else, click on the **Complaints** menu option in the sidebar. Click on the **File Complaint** tab on the screen. This will open the complaint form page. + +![](https://lh4.googleusercontent.com/llPFd12TlabRIESvIJXz2_vz4TApCLaeJ7eNHiVO2ewXD6-m-V_q_hKab0CrqEXTQ-bYjLVktaIKM5fMq3VRhdoE9sA4epGjS_9BLM3lfw5jRqJX80g4QPcR1-xLwVd7elGtYcvT) + +Enter the **Citizen Name**. and the **Citizen Mobile No.** Select the relevant **Complaint Type** and the subtype from the drop-down list of options. Refer to the list of complaint types available in PGR. Enter any additional information in the **Complaint Additional Details** field. The **City** field will display the city specified in your profile by default. You can change the city if required. Choose the applicable **Locality/Mohalla** from the drop-down list. Enter the **House No.** and **Street Name**. Enter any **Landmark** to identify the exact location for the listed complaint. + +Click on **File Complaint** button once you have finished filling in all the details. The system will display the Complaint Registered Successfully message along with the Complaint No. + +![](https://lh6.googleusercontent.com/MsZIJ3A2-bTvvv_NpxWb3t3u6O9VbdnC_jcZV64AMOlBOHd6Q2l2dBsJo6Lp2cfCuC8z3GDPrUkwT68GfQnc8ls76GsoGeg1dCO48k4Shw0Tv69n-jWKD-5CN6pTwM1jabhtgCbk) + + Click on the **Continue** button. Your complaint details are available on the dashboard. Click on the complaint to view the complaint details. ### Search Complaints -Employees can search for specific complaints using the registered mobile number of citizens or by entering the last few digits of the complaint number. -To search complaints +Employees can search for specific complaints using the registered mobile number of citizens or by entering the last few digits of the complaint number. + +To search complaints navigate to Complaints Home page. Enter **Citizen Mobile No.** Or, enter the last 6 digits of the Complaint No. + +![](https://lh4.googleusercontent.com/qh822UDOWboq_Ju_HgXnXavD4X3g86gj3EJU29avURDeUK-z-wONTFroyDniyw98-wOUDxnklOQZuDSDskSnHqgFhLpWqUpRGGU86gO0CKXgfdr-9BOO33cc-ENuwwTT9AtX1JY8) -1. Navigate to Complaints Home page. -2. Enter **Citizen Mobile No.** -3. Or, enter the last 6 digits of the Complaint No. ![](../../../.gitbook/assets/pgr-complaint12.png) -4. Click on the **Search** button. -5. The system will retrieve and display the matching records. -6. Click on the **Clear Search** button to initiate a fresh search. ![](../../../.gitbook/assets/pgr-complaint13.png) +Click on the **Search** button. The system will retrieve and display the matching records. Click on the **Clear Search** button to initiate a fresh search. + +![](https://lh6.googleusercontent.com/OUsA9G3Jh6SN9J3fxUz8JCJ59tc4-w2OK9EqxYNkKsU4wbGNFrbfw_FyPXLsR90C64v_CX-nNKE83ZJ7YCRuCad2HgciR-In2Fx2qt94RJvlb-p5grwHPPib6FxkPVanHXj359DL) ### Reopen Complaints -To reopen the complaint +To reopen the complaints navigate to **Complaints > My Complaints** menu option in the sidebar. Click on the closed complaint that you want to reopen. Scroll down to the **Complaint Timeline** section. Click on the **Re-Open** button on the timeline. + +![](https://lh6.googleusercontent.com/4wAdWqA_U-UpkWgBFt9Nfqz25_SMQskdaBrclRtRd6tSOei5sj3TqrLH96kViDib4X9QFEnd7mzxMl-FzDJK7k1K-ENldTmt8dfTwidrDmNZdusuZM5zE19c2sGoXEJ3Wu-RAnMo) + +{% hint style="info" %} +The Re-Open button will be available only for 5 days after the complaint is resolved and closed by the department employee. The number of days can vary depending on the State or ULBs. The citizen or CSR will not be able to reopen complaints once this period is over. +{% endhint %} -1. Navigate to **Complaints > My Complaints** menu option in the sidebar. -2. Click on the closed complaint that you want to reopen. -3. Scroll down to the **Complaint Timeline** section. -4. Click on the **Re-Open** button on the timeline. ![](../../../.gitbook/assets/pgr-complaint14.png) -5. ![](https://lh3.googleusercontent.com/K8DjKt00FSoGT-MOFHp4TAbhPOasficXgB7Qzl7U-GleSYbHzM4a0JwNgxu1Jw0rk7rAQC_PMftcV0O_s6krZs7VTQAe2LdbaPb2ftt_uSwDYz9x8xu6uy2CbYplB1LqJ1e0RoIn)The Re-Open button will be available only for 5 days after the complaint is resolved and closed by the department employee. The number of days can vary depending on the State or ULBs. The citizen or CSR will not be able to reopen complaints once this period is over. ![](../../../.gitbook/assets/pgr-complaint15.png) -6. Select the appropriate reason for reopening the complaint. -7. Click on the camera icon to upload any photos related to the complaint. -8. Enter any additional information in the **Comments** section. -9. Click on the **Continue** button once done. -10. The system displays an acknowledgement message stating the complaint is reopened. -11. Click on the **Go To Home** button to navigate back to the home page. +![](https://lh6.googleusercontent.com/_0q7cIz6f_poIUNzZTFJkEESK1JN0fgO7urTnmndOvypUh85LnR8A7i01HWSVt_YoWgqMfEgnfzKvE2_Jf-9Z3UNhg5X2he4-B1VpHov7zURq-o8krkYSnjS321n2_8C1L15hsJi) + +Select the appropriate reason for reopening the complaint. Click on the camera icon to upload any photos related to the complaint. Enter any additional information in the **Comments** section. Click on the **Continue** button once done. + +The system displays an acknowledgement message stating the complaint is reopened. Click on the **Go To Home** button to navigate back to the home page. + +### GRO + +The Grievance Routing Officer or GRO manages the complaints queue. The role ensures the complaints are routed to the appropriate employees for prompt action. + + +![](https://docs.google.com/drawings/u/0/d/seDcaL8vC1txsB-nX-fjHdQ/image?w=550&h=183&rev=117&ac=1&parent=1pR9OLsrbm5UDtHSuq-Iv2BM78gUTwagbwGpCMGdeqrg) + +GROs can + +1. [Assign complaints](employee-guide.md#assign-complaints) +2. [Re-Assign complaints](employee-guide.md#re-assign-complaints) +3. [Share complaints](employee-guide.md#share-complaints) +4. [Reject complaints](employee-guide.md#reject-complaints) +5. Call citizens +6. Comment on complaints ### Assign Complaints -Grievances filed by citizens are assigned to specific employees who are responsible for acting on and resolving the complaints. -To assign complaints +Grievances filed by citizens are assigned to specific employees who are responsible for acting on and resolving the complaints. + +To assign complaints navigate to the Home page and click on the Complaints card. Or, navigate to **Complaints > Open Complaints.** The GRO Complaint page contains two tabs - **Unassigned** and **Assigned** complaints. + +![](https://lh5.googleusercontent.com/-P3BKRAfx7ULwO19jjfo4XTgmNmXP8sSdTqNb4DqUnB9pcp6nIqxEIWsJUBEWBWfUTInqAce9_IfvMSxVhsbzJJymSzVnz3zuhU5LC4BEhLXDJ7YVXj_2vYTf_wTXgm7JgK3_0YA) + + Click on the **Unassigned** tab. The list of unassigned complaints is available on the screen. Click on the **Complaint** you want to assign. This will open the **Complaint Summary** page. + +![](https://lh6.googleusercontent.com/tQ-aPaGuXMR3lY05sOgW0dQF_yAsSP9i-5Cuz1o9rTV8RLZv1R21g4BLQkSu2-WfkNUHcHyiQNySOfSoy5fZ3Cbt5kfWbi6M642K2aqSwvkMcGaJ1xLJylVmJfj-E6lEeKlHPJja) -1. Navigate to the Home page and click on the Complaints card. -2. Or, navigate to **Complaints > Open Complaints.** -3. The GRO Complaint page contains two tabs - **Unassigned** and **Assigned** complaints. ![](../../../.gitbook/assets/pgr-complaint16.png) -4. Click on the **Unassigned** tab. The list of unassigned complaints is available on the screen. -5. Click on the **Complaint** you want to assign. This will open the **Complaint Summary** page. ![](../../../.gitbook/assets/pgr-complaint17.png) -6. Click on the **Assign** button available in the bottom right corner of the screen. This will display the list of employees. -7. Select an employee. ![](../../../.gitbook/assets/pgr-complaint18.png) -8. Click on the **Assign** button. +Click on the **Assign** button available in the bottom right corner of the screen. This will display the list of employees. Select an employee. -The complaint is assigned to the selected employee. +![](https://lh4.googleusercontent.com/CPZcAOizrd2_jW6_Lk1s5KwAQSgfIRvHbiEafVD7aJM0E8DCUy8GP1Nzy0muVsJRT1rbRktfwAmhA33d6Ro5VUM-9nmkemeaZVXllKBvOPjnBFY0x1s7aQuHVRrtg38-XUk6Djcz) +Click on the **Assign** button. + +The complaint is assigned to the selected employee. ### Re-Assign Complaints -Assigned complaints can be re-assigned by the GRO depending on the situation and requirements. -To re-assign complaints +Assigned complaints can be re-assigned by the GRO depending on the situation and requirements. + +To re-assign complaints navigate to the Home page and click on the **Complaints** card. Click on the **Assigned** tab. Click on the complaint you want to re-assign. Click on the **Re-Assign** button available on the bottom right corner of the screen. Select the employee to whom the complaint should be assigned. Click on the **Assign** button. + +![](https://lh3.googleusercontent.com/g2wsvH-_uJJBNBnWfhja8DkRoMJRIhHYuIWVXmQxiQ9CJFLzvpj-sIuefUQdHdA0JEizKLg2ucCSDy8uAozQd3BCdun662mDCBXEY0WgekODHtiT9SaFVtySFx6bJQQPaWEkinG6) -1. Navigate to the Home page and click on the **Complaints** card. -2. Click on the **Assigned** tab. -3. Click on the complaint you want to re-assign. -4. Click on the **Re-Assign** button available on the bottom right corner of the screen. -5. Select the employee to whom the complaint should be assigned. -6. Click on the **Assign** button. ![](../../../.gitbook/assets/pgr-complaint19.png) -7. The Complaint is re-assigned to the selected employee. + The Complaint is re-assigned to the selected employee. ### Share Complaints GROs can share complaints with other department users based on the requirements. -To share complaints +To share complaints click on the complaint you want to share. -1. Click on the complaint you want to share. ![](../../../.gitbook/assets/pgr-complaint20.png) -2. Click on the share icon in blue on the top right corner of the screen. ![](../../../.gitbook/assets/pgr-complaint21.png) -3. Select the appropriate channel. -4. The system will redirect you to the selected channel interface. -5. Select the person or list of people for sharing. -6. Click on the **Send** button. +![](https://lh4.googleusercontent.com/-XhFUUKrYfG_6zvZZvLT8VP28JMjmjInSk3OH9qgPjGQ4iGl3cde-m-UivlEzUePFbDrU8RYPpHh-kZPjGkyna5smWeJP9dhvMLA1wrEbe-FpCenhpVXSG7e3UQuOQwrZI-fpe4F) -The complaint is shared with the selected recipients. +Click on the share icon in blue on the top right corner of the screen. +![](https://lh3.googleusercontent.com/ECLvDJ-AX9Tjgf45YFvW49Y3tgsEHTpUbR8BAmZSkH5RkmVUPZZyCHjOqaGTDlNyljzssd6lHR0GoEdj4eeytTRHdohA2jAa5WzQ927ScpPeZd79IfkaoEJO2ZOfOrfEV5wMHZzh) + + Select the appropriate channel. The system will redirect you to the selected channel interface. Select the person or list of people for sharing. Click on the **Send** button. + +The complaint is shared with the selected recipients. ### Reject Complaints -In certain cases, the GRO might reject registered complaints. This usually happens when the complaint is beyond the operational scope of the department or the complaint is invalid. -To reject complaints +In certain cases, the GRO might reject registered complaints. This usually happens when the complaint is beyond the operational scope of the department or the complaint is invalid. + +To reject complaints navigate to the Home page and click on the **Complaints** card. Click on the relevant **Complaint**. This will open the **Complaint Summary** page. Click on the **Reject** button available in the bottom right corner of the screen. Select the appropriate **Reason to Reject**. + +![](https://lh3.googleusercontent.com/yR9fMB96HvC0C0tvWtN-AEJezqJ9mqE99RKlx0zcxMkmZ6OS1-x94CfD9f4SFErh3pMtSoE6Z3WNDaOEGmjL-bcpLBvT7OvNeNGdY31AZa0Uqwa_wvktQHzJpFB11217k5jlcmGQ) + + Add any additional information in the **Comments** space. Click on the **Submit** button. The complaint is rejected. + +### **FME** + +First Mile Employees or FMEs are responsible for acting on citizen complaints. + +FMEs can - + +1. [Request Re-Assign](employee-guide.md#request-re-assign) +2. [Mark Resolved](employee-guide.md#resolve-complaints) +3. Call citizens +4. Comment on complaints +5. [Search complaints](employee-guide.md#search-complaints) +6. [Share complaints](employee-guide.md#share-complaints) -1. Navigate to the Home page and click on the **Complaints** card. -2. Click on the relevant **Complaint**. This will open the **Complaint Summary** page. -3. Click on the **Reject** button available in the bottom right corner of the screen. -4. Select the appropriate **Reason to Reject**. ![](../../../.gitbook/assets/pgr-complaint22.png) -5. Add any additional information in the **Comments** space. -6. Click on the **Submit** button. -7. The complaint is rejected. +![](https://docs.google.com/drawings/u/0/d/szovKDR3VG6ANH92_TvpdDQ/image?w=511&h=201&rev=61&ac=1&parent=1pR9OLsrbm5UDtHSuq-Iv2BM78gUTwagbwGpCMGdeqrg) + +### + +### **Request Re-Assign** + +FMEs work on the assigned complaints. In some cases, the FMEs may request complaints to be reassigned to some other employee. + +To request reassign navigate to the **Complaints** menu option in the sidebar. Click on **Open Complaints**. Search for a specific complaint using the **Citizen Mobile No**. or inputting the last 6 digits of the **Complaint No.** + +![](https://lh3.googleusercontent.com/Vv8ny3w8w0sZAikd4m6IBOX88tVLqRbzBRUVaAbK6OkNuPFGr62Z3BaDoWsEZd8-8PVHGL_r3DOipAuquLM2QHkMIvzozxMy-2OgMRC338fK5YPUotfakHleUBnyvupXsjkAffU4) + +Else, click on the relevant complaint from the list of open complaints. Click on the **Request Re-Assign** button available in the bottom right corner of the screen. + +![](https://lh5.googleusercontent.com/T7WDN_gtW0hKtf4hIgBwlbmDmyxyMEgxWGIiACKWM9ufmVaeCeb1SHtNQvWwnfjeg_UoCZ-QPzQiZEtiAWb5rZMFDl22hOpyWZY4FQwyvCssMK-FkUgAgdRVj9Rfc6fBFkGj0uTm) + +Select a specific reason for requesting a re-assign. + +![](https://lh3.googleusercontent.com/r2XYgPDVi1clkK7pGV--aX2b1hdE_YKGav1rpDurKhiJD3SUHctZJ4_-oQ1U9yY0ybSWgDGi7ef9cKTrH-frc4QszzovLw6fcdifQw50QrgKRvhYNQ9yvZzQBHCd9nr5h5Su4qe-) + +Enter any additional information in the **Comments** section. Click on the **Request Re-Assign** button. ### Resolve Complaints -Once the complaints are actioned on the FME marks the issue resolved. The complaint is closed subsequently. -To mark the complaint resolved +Once the complaints are actioned on the FME marks the issue resolved. The complaint is closed subsequently. + +To mark the complaint resolved navigate to the **Complaints** menu option in the sidebar. Click on **Open Complaints**. Search for a specific complaint using the **Citizen Mobile No.** or inputting the last 6 digits of the **Complaint No.** + +![](https://lh3.googleusercontent.com/Vv8ny3w8w0sZAikd4m6IBOX88tVLqRbzBRUVaAbK6OkNuPFGr62Z3BaDoWsEZd8-8PVHGL_r3DOipAuquLM2QHkMIvzozxMy-2OgMRC338fK5YPUotfakHleUBnyvupXsjkAffU4) -1. Navigate to the **Complaints** menu option in the sidebar. -2. Click on **Open Complaints**. -3. Search for a specific complaint using the **Citizen Mobile No.** or inputting the last 6 digits of the **Complaint No.** ![](../../../.gitbook/assets/pgr-complaint23.png) -4. Else, click on the relevant complaint from the list of open complaints. -5. Click on the **Mark Resolved** button available in the bottom right corner of the screen. ![](../../../.gitbook/assets/pgr-complaint24.png) -6. Click on the camera icon to upload photos as evidence that the issue has been resolved. ![](../../../.gitbook/assets/pgr-complaint25.png) -7. Enter any additional information related to the issue resolution in the **Comments** section. -8. Click on the **Mark Resolved** button. ![](../../../.gitbook/assets/pgr-complaint26.png) -9. The system will display an acknowledgement message. -10. Click on the **Go To Home** button to navigate back to the home page. + Else, click on the relevant complaint from the list of open complaints. ****Click on the **Mark Resolved** button available in the bottom right corner of the screen. +![](https://lh5.googleusercontent.com/T7WDN_gtW0hKtf4hIgBwlbmDmyxyMEgxWGIiACKWM9ufmVaeCeb1SHtNQvWwnfjeg_UoCZ-QPzQiZEtiAWb5rZMFDl22hOpyWZY4FQwyvCssMK-FkUgAgdRVj9Rfc6fBFkGj0uTm) + Click on the camera icon to upload photos as evidence that the issue has been resolved. +![](https://lh3.googleusercontent.com/gftZ8mTmU0sjjwpXDC967oJ2ef_Yyxo8COLkzTzdElyPkp1SKJ6SG_QeDwBlE6X2b_dc8KiLKx4Kz2s1LDMCrJWZ0LrS82BHn0WNwq0v5riuP3bsDMlTdYwL_4D2gf-gfTLIqwC1) + Enter any additional information related to the issue resolution in the **Comments** section. Click on the **Mark Resolved** button. +![](https://lh4.googleusercontent.com/Z5Ff0K7osHhExaqw8-XiqbWEM4xroEHOthwPyMMFglXLzKBZ_w7M9SJvgA6aARzFsLsO0E4gMuHrGgi3KKbqXn_nCXzH__jePIzBYsLA2Y0n3r8PPj0maItO2b7oSH39eqT_LWtD) +The system will display an acknowledgement message. Click on the **Go To Home** button to navigate back to the home page. diff --git a/modules-features/user-guides/guide-pt.md b/modules-features/user-guides/guide-pt.md deleted file mode 100644 index 27d81116..00000000 --- a/modules-features/user-guides/guide-pt.md +++ /dev/null @@ -1,668 +0,0 @@ -# Property Tax - -### **Introduction to PT** - -The Property Tax \(PT\) module offers the citizens and governance bodies a convenient and transparent means of processing property taxes. Local governing bodies identify the applicable tax slabs for different types of properties. The PT module assesses properties, calculates tax amount, processes tax payment and generates tax collection reports. - - -The PT module enables citizens to pay property taxes online. It facilitates the governing bodies process property tax payments. - - -### **Using PT** - -This section guides you through the details of using the PT module for each role. Click on the relevant role below to learn more about how to use the PT system. - -1. Citizens -2. Counter Employee \(CE\) -3. Document Verifier \(DV\) -4. Field Inspector \(FI\) -5. Approver - -#### **Citizens and CE** - -Citizens represent individuals, communities, or business entities who are the system end-users. The PT module allows property owners to register their property details online. These details are then used for various property related transactions. - - -The citizen can also approach the Counter Employee \(CE\) to register new property, assess property or pay property tax. - -![](https://docs.google.com/drawings/u/0/d/seSp91QR2XSdophhuwmkCJA/image?w=425&h=232&rev=266&ac=1&parent=1q5Qmal_ywLqWn-MBuGYWdfkTLSyN9MnVg4tEXL4D9es) - -**The Citizen or CE role can -** - -* Add new property -* Edit property -* Search property -* Assess property -* Re-assess property -* Transfer property -* Pay property tax -* Download payment receipts - -**Add New Property** - -Citizens or CE can add new property details through the DIGIT web portal or the DIGIT mobile app. -**** - -**To add new property** - -1. Click on the Property Tax card available in the Citizen Services section of the Home page. - -![](https://docs.google.com/drawings/u/0/d/seDWOsUhRoTzs1JxJAujc0Q/image?w=624&h=290&rev=7&ac=1&parent=1q5Qmal_ywLqWn-MBuGYWdfkTLSyN9MnVg4tEXL4D9es) - -1. Click on the Add New Property button on the screen. This will open a new form page. - -![](https://docs.google.com/drawings/u/0/d/sGXT_05YQYLufoBH-h-j6Xg/image?w=624&h=352&rev=11&ac=1&parent=1q5Qmal_ywLqWn-MBuGYWdfkTLSyN9MnVg4tEXL4D9es) - -1. The system will display the Required Documents - Property Tax list. Note the list of documents valid for address, identity, registration, usage, special category, and occupancy proofs. - -![](https://lh4.googleusercontent.com/avJIPMSxsehU02dTK8QvpZbJoeSHU7xdRQNe304PMqHAiVZNofim7-P8fs7lvKTOrkQk-jYzdHSLIF8IjpqwXOfbLp2iBNYvDiLKbtC0fBr2aoIjoYaPU7ByyabBUWIDVcD_C-pQ) - -1. Click on the Print button to get a hard copy of the documents list for reference. -2. Click on the Apply button to proceed with adding your property. -3. The form sections are available on the top of the page. - -![](https://lh4.googleusercontent.com/rknBMmpi-TvKiA9-BIEf8LQjAr9eGVeHQsVclqPuTozHvicGhl2dV8YDY0Ogh3rrqGKvPu1UZlpXFiAsiuJyClZ_pq3dKDTBl2Sst48WVtng5m6h9i774zh9aQzbbQj2pul05Qqb) - -**Add Property Form Sections** - -The add property form page contains various sections that include - -* Property Address -* Property Details -* Owner Details -* Document Info -* Summary - -1. Enter the following information in the Property Address section. - 1. The system will display the New Property form page. - -![](https://docs.google.com/drawings/u/0/d/sH7DsvB9k7W2f1N2DERQplg/image?w=624&h=328&rev=1&ac=1&parent=1q5Qmal_ywLqWn-MBuGYWdfkTLSyN9MnVg4tEXL4D9es) - -1. 1. The City field displays the registered city by default. Click on the drop-down list to select a different city. - 2. Enter the House/Shop No. - 3. Enter the Building/Colony Name. - 4. Enter the Street Name. - 5. Enter the Locality/Mohalla. - 6. Enter the Pincode. - 7. Enter the Existing Property ID in case there is a legacy property ID available for the listed property. -2. Click on the Next button to move to the next section. -3. Enter the following details in the Property Details section - 1. Select the applicable Property Usage Type from the drop-down list available. - 2. Select the Property Type. - -![](https://lh3.googleusercontent.com/ed-f8D4t_UWDuuixclY9-qEsWFf0W_Y2q9dI79zEHsXqdRBbFBni-PXKndENVMcHqc2WSVY9-sDy94QZ9QmKqbA3trWn4GNbZC2Rq19-Q3PKXSMGqC-r1b0PU5SLQ6hdFhXnNFkL) - -1. 1. Check Yes or No to indicate Whether rainwater harvesting structure provided on the property? - 2. Enter Vasika No. if applicable. - 3. Enter Vasika Date. - 4. Enter Allotment Letter No., if applicable. - 5. Enter Allotment Date. - -![](https://lh5.googleusercontent.com/CgVWTR3yGwL-7F5v9FXuK8IBn_4e6mwyXk5B1DC4r59dp0dcEUVPzifBTMJz7LD-SV4GyGtePWFU7oa7Yckfxa_xPa4kZsLYQaZeWbv5aY54ZROICaEUGQGnETwze7oX40pJAV4A) - -1. 1. Enter Firm/Business Name if the property is listed as commercial or institutional. - 2. Enter any information in the Remarks field. - 3. Check the box Do you have any inflammable material stored on your property? if it is true. - 4. Check the box adjacent to Height of property more than 36 feet? if it is true. - 5. Fill in the Unit details if the selected property usage type is Commercial, Institutional, Other Non-Residential, or Residential. - -![](https://lh4.googleusercontent.com/da9LgCwWYkIa7o9_elF2O9IYBBtGcPLY7Y9VbhPWF56nF7avjIee63vydNKOEbGSWUcv0aJ1bE6ucy1dHlVkNQ9PXctQov8VuXnCeZT8FicqPUn1O2onmRInxeJ9p7DhAg5Inq7k) - -1. 1. The Unit Usage Type by default accepts the Property Usage Type. - 2. Select the most appropriate Sub Usage Type for the listed property in case of Commercial or Institutional properties. - 3. Select the most applicable option for type of Occupancy. - 4. Enter the Built-up-area \(sq ft\) value of the property. - 5. Select Floor to identify the relevant floor of the property. - 6. Click on +Add One More Unit button to add more units. -2. Click on the Next button to proceed to enter the Owner Details. -3. Enter the following information in the Owner Details section. - 1. Select the relevant Type of Ownership. - 2. Enter the Owner’s Name. - -![](https://lh3.googleusercontent.com/lxO2AMspTiXmE4Ye6M9gtEQmUmkon-vwGyHRE0gMgWsV8Teq4dsrQb7sdF-CI2YobtUD0FYVFihUgqN3kmx6D4XZ1qAIhKI2o4wjHznI2V3iDzllw94UvhGZjR2RDLl8OvdJMku8) - -1. 1. Check the applicable Gender of the owner. - 2. Enter owner’s Mobile No. - 3. Enter owner’s Guardian’s Name. - 4. Select Relationship of the owner with the guardian. - 5. Enter the applicable Special Category. - 6. Enter the owner’s Email Id. - 7. Enter Correspondence Address. - 8. Check the Same as property address box if the correspondence address is the same as the address of the listed property. The Correspondence Address field is auto-populated in that case. -2. Click on the Next button to move to the Documents section. -3. Upload the required documents in the Documents section of the application form. - 1. In the Select Document field, select the type of document you are uploading for Address Proof, Identity Proof, Registration Proof, Usage Proof, and Construction Proof. - -![](https://lh4.googleusercontent.com/qKE-yjtQ3e_6egULk3hb7wlMgf6WN2nx7EVVVT_fmbiphre5LYU9fAIhrXQGzE5zfIhyiZnp0C-9Whl6TqaJTjwG1brk2n2T4cENRxjGGD-wcGifcYG9ImXZrReBwcfVHYQc-GZB) - -1. 1. Click on the Upload File button to upload the documents. -2. Click on the Next button to proceed to the next section. -3. The Application Summary page provides all the information filled in by the applicant. -4. Click on the Edit icon ![](https://lh5.googleusercontent.com/GWZgkD_fJ_h5mpX5dL-uypyhPaNjo8AsKD80Xu3EeextT7nDW0z3Z6GQDRsmLEIa9k3C5y-zL1qsVaNpoWG7pzVRP6IJ_bOcAW-RVoF1blCqAJMZFTxlVyDSv_Okoi2ri235oyUG) to make any changes to the application. - -![](https://lh3.googleusercontent.com/6Sd6gL52tJiRKx1qiZTByO1DIeb9Y8HzR8GAYcND1UkjPOE4deKt2bv48KebjBi1VvFvF9x_5bR1O5FjJlBYt0fVdfClcPrYygOeTZFvW1OILXFC7cWMc9yFfNsKNQ3a36gXIWMD) - -1. Click on the Add Property button once the details are reviewed and corrected. -2. The system displays the New Property Successfully Added acknowledgement message. -3. The Property ID is available along with this message. - -![](https://lh6.googleusercontent.com/reDjopRtDZbg0L5SK2uz1j8wYowD5a8HI9BJcBhCVKnmUWpvUhj1rAdAt7BE_wdsFdfJKIzoLy92Xr8sIiXN1Sx62VACXaByJonT95H5hGiBYLcRop8tJzRaC8JAR7xo_r8D-afy) - -1. Click on the Download button on top of the message box to download the application. -2. Click on the Print button to print the application. - -**Search Property** - -To search for submitted application or track the status of submitted applications - -1. Navigate to the Property Tax home page. There are two search options available. Users can search by property or application. - -![](https://lh6.googleusercontent.com/FHUQwQLSOAp3sEDD8Ek_rFvpzMrMgEouz325KF5bXUkqdHV6itXzTJl_exRddHDzbyL0mV_0JvotM6NgOd55Ge3hN5og5O3WOZkGO_PIJxIUqDKQQpjDH5C8Pb06IuAXf52SVAxS) - -**Search by Property** - -1. Click on the Search Property tab. -2. Enter the ULB. The system displays the registered City or ULB details by default. -3. Enter any of the following search parameters or combinations to refine the search for property. - 1. Enter the Owner Mobile No. - 2. Enter the Unique Property ID allotted by the system. - 3. Enter the Existing Property ID if there is any legacy ID linked to the property. -4. Click on the Search button to view the results. -5. Click on the Reset button to renew search with different parameters. - -**Search by Application** - -1. Click on Search Application. - -![](https://lh6.googleusercontent.com/vjL27TvS3qFDTf4pxpCzVRQBw9A3U4uh7ZzWCjNVGt-m80GxWVBFadXw9YDtfRBKbPD6ZmAyIDmQAIdqnmIyMBupjSPO0SlTWrZSCpbKiiJ3cKBUFxGYGe3PoS-o45rTHFPzYMM8) - -1. Enter any of the following search parameters or combinations to refine the search for property. - 1. Enter the Application No. - 2. Enter the Owner Mobile No. - 3. Enter the Unique Property ID. -2. Click on the Search button to view the search results. -3. The search results show the filtered list of property entries along with the application status. - -![](https://lh3.googleusercontent.com/rd4FhXx12OniH-A7WcIm5uJVHI3fkIOyyu_TA47tvhkQR3Qa56VmnixiF0RS3YHTik2SzXT1uXpLD5assNNtFfLts1joJfXndT_CCQW5cPFh4ZGbvZ6p6rzUkYy61FCUowIjSw7U) - -1. An Active Status means the listed property is pending for further action. -2. Inworkflow status means there is some action going on for the listed property and hence it is not accessible for any other action. Once the action is complete the status will change to Active. -3. Click on the Unique Property ID or Application No. hyperlink to access the details. -4. Click on the Reset button to renew search parameters. - -**Assess Property** - -Listed properties are assessed every financial year to calculate the property tax amount. - - -**To assess property** - -1. Navigate to the Property Tax >> Assess & Search menu option on the sidebar. Alternatively, click on the Property Tax card on the Home page. -2. Enter the required search parameter to refine your search for properties. - -![](https://lh5.googleusercontent.com/YQIKrJvAIcU6yE-5MOQWXbWTJOy1WGS1dk8NDMn-xzj4qB79oGnep2G5wzoPaZAOLc2_an4nU9-g4G9jy0hREZBDdV2l0eORNNwFAPUvnUA9bJ0TUB09zVk5Tmf9oJrYYIjiBX7n) - -1. Click on the Search button to view the results. -2. Click on the relevant Unique Property ID. - -![](https://lh6.googleusercontent.com/6iPTZJK92wv0yS3kMkB2NXop4teyS_6UXwH1C841IPokf-jHjvBXgH-9Hmrougtjd-kzhfPx3UUPdD4xUlZ0m4Pm2_R9uRTktwCSkMixMPOd9OtsUGarbJLBvFPjY4U4nqYqtj5K) - -1. Scroll down the Property Information page to view the property details. -2. Expand the Assessment History panel to view the previous assessment details. - -![](https://lh5.googleusercontent.com/uY8Wqdz6KdY2X1vGa-MK3m_SDIfQsKK-9P1zRLTOkkedWtddU4DxM6n_X8wa4XBPD9Hs11ypr1lEde8Ia7We_TfSPj8vyhiXmbgktTjk_JIhLRMbmMtVI9eCiy3W-FHgM07hgxH4) - -1. Click on the Re-Assess button if you want to reassess the property. -2. Expand the Payment History panel to view earlier payments made for the listed property. - -![](https://lh4.googleusercontent.com/bNWAla1ISv-bwzTrhuVHrYM4QWYjL-ZEXd_2KIuVV3v4lz_x5STPNRbmZ94ibM4QJBnit-cSiewgER1GcFRWzdmtmKZl9hFqCRyQDsNRE6Uvcynzs4YZyluQNXv-OQX-7ebq3xSZ) - -1. Click on the Download Receipt button to get a soft copy of the listed payment. -2. Expand the Application History panel to view the property application details. - -![](https://lh6.googleusercontent.com/1USYixM9oeKX25VvYTVCHIDGYcTvYle_KhgiVe8y3Gfe_BqxEe_F5igMG-suYVAoDvU4pnNDChdwD4S8hiUpx51975POaG0JGgPbb-iLHWWcytt7-_PkWdO67AgioHrRdYEbF-hg) - -1. Click on the View Details button to fetch application details. -2. Click on the Assess Property button. - -![](https://lh5.googleusercontent.com/tZATKna3N_8B6tXfvKcgb-XCM9ATi9vZCVmmrMumZMdSK4h2zrHXqAi0BA5eNhzbU19vYQ7qK5TSxSysn7qHFPx2w9QyG4JXxUoUXHOn0enziITozvJ5fyl5PomDLCIZyyqnZ36t) - -1. Select the relevant Financial Year. - -![](https://lh6.googleusercontent.com/7pvJgswJnSaiQUF8hIbSvllw9foHlKxZtWFmzIMPvwX3OIRc9QQryqwvzEKME00xLHwD2nnAoLIuFwpvxXAPxjbl7drABENtT5RzBKVe-KWG8poluGt726a0rgsrYJR9O-UizTQU) - -1. The panel will display the Property Tax Amount details. - -![](https://lh4.googleusercontent.com/wHL08KYdLXfFkZcDKL2TG1-1-HnEhA_h68Jcg86qENZR70VGqIcHTmngILGR7QJDU9kaLvndKlsyipZWeDXx9az_gBu5Z2LBKM9NxTlDhqCY2vbS2L3cLQnhgH_KSwSvoxZIH4Ir) - -1. Click on the Add Rebate button to apply any rebates or discounts on the tax amount. This feature is not available for the citizens. - -![](https://lh4.googleusercontent.com/ybq1uI3TJnFWutfB7Sl2XDNDa40zBJorF5rw0Bxif4AZP6LTUdCde1TPYcgsZzU-ACpmkopxXvg-4BME4zckR7hmURWR--5e9Srv4Y0sWmkTIov4oRwvwycbH7fzntWYj_sVF4v6) - -1. Enter any Additional Charges amount, if applicable. -2. Select the appropriate Reason for Charges. -3. Enter any Additional Rebate amount, if applicable. -4. Select the appropriate Reason for Rebate. -5. Click on the Submit button to apply the rebate or charges to the tax amount. -6. Click on the Calculation Details button to view the calculation logic applied for calculating the tax amount. -7. ![](https://lh5.googleusercontent.com/s3ifiw-rcyi8j6yrCd5UzM3u-ZonIO37mmbVifttTPeRGRmb7vOqXpykO0HyBiZ8m6m46WO3y9fHP5lZbF6JyFSK7sYJqUKYw67e9W3t7D55W4lVjdZBXhpbOXk_053EEjhDTgCx) -8. Click on the OK button to move back to the Assessment page. -9. Click on Assess Property once you complete reviewing all details. -10. The system will display the assessment success acknowledgement message. - -![](https://lh6.googleusercontent.com/0tFvRflW44Rsa-iB3EnJeBF3ylH1EBDR1fdkm_sVy2JrOFw6JlhTVeD38co-sF5ZNAR1rvTNGralI2SLVH77Yv1OM_gOt9400JDuvpaEPf1Vh8SDod5fzBSMJjUdDMQON6-vaWdh) - -1. Click on the Proceed to Payment button to pay the property tax. -2. Else click on the Home button to navigate back to the home page. - -**Pay Property Tax** - -Applicants have to pay the property tax once the property is assessed for the specified financial year. - - -**To make payment for property tax** - -1. Click on the Proceed to Payment button after the property assessment is complete. -2. The Payment Collection Details panel displays the tax Fee Details. - -![](https://lh4.googleusercontent.com/jNGXHfB7V0ULF4vurJ9_uvVsLv45gT8iU8pxfwl3FPGBoTDvYplxCRlnUik1IL_q6JZdK2l47S93noNAPbzGbrXi-CXSJB4nMuoNqkwgaXnA1_o0MDinJD8ebczBl0TaLs9JMd3y) - -1. Enter the payment details. The system allows you to pay by cash, cheque, or credit/debit card. -2. Click on the Cash, Cheque, Credit/Debit Card tab depending on the preferred payment method. - -![](https://lh6.googleusercontent.com/RAS_nMy-XzjGV4jgrlDt_4Z9tPgOhg9xv1VYD0gxyD1YDIU5BsTk0wG3VoUCo5ZxRM_IoKhrodDLEXPscTSEqOwgK4FxL6hv-YAv9gL7arhCRYzQGH9M_0C1E-o-ouiahrESJudx) - -1. Enter payment details as requested on the screen. -2. Click on the Generate Receipt button to confirm the payment. -3. The screen displays the success acknowledgement message along with the Payment Receipt No. - -![](https://lh4.googleusercontent.com/BU-xErD0A1R3VFG5JXXrnbVtLRi6vXW-xdgMDINCjPXj8gLBmVszFBYNXLv5YS82W9bqkTbWANOd3ElJQHdKvkjtuCitxrjS-vKCCqxsCQC6o0NKt36mMMvbkoxhJZFFPSoYjJU_) - -1. Once the payment is complete the Property Tax Receipt is issued. -2. Click on the Download or Print button to download or print the tax Payment Receipt. - -**Transfer Property Ownership** - -The PT module allows users to transfer the ownership of property. - **To transfer the ownership of property** - -1. Search for the property by entering the Unique Property ID or any other search parameter. -2. Click on the Unique Property Id. to open the application. -3. Scroll down the Property Information page. -4. Click on the Transfer Ownership button available in the Owner Details panel. - -![](https://lh4.googleusercontent.com/6dtWmonW-iVq01CEaDyxqcKx-BHLc6vl_LPQ7b2MpOehJTdHuaQgPJRHam-ybLxlt-7ayY_AaM2uOTqiLF0ei2sJKEZZDATEpz0J3FYhtEsEuMSwFWPwvIF1rRTevn4vtvU7hH_q) - -1. The system will display the list of Required Documents - Transfer to Ownership. - -![](https://lh4.googleusercontent.com/T8cgKoAm-ImI6zmXpSCeJEytjbY3xnYjQ-Mh_u5Fzx0N_EXihIjVIg0844Mf9TrGawZehBoWj-DINauCRZWIo3SfmsfsjLVQZbKXskadd0xDEKTt8OGX4XeLcechY-WSrZhBmFGw) - -![](https://lh3.googleusercontent.com/GqFf3jzNE86DEkP5I0YoxtXohoqWTLs2gTETNhKeOHaJ4jwLZ3Law_S41frAMT_ZrrS-upunUD9vVnEACgnfzCM0QbjvWKkhJBR9WKf0uKq_N1SykvoBLUUCUjj17WMRadOpbrNs) - -1. Click on the Print button to print the list of documents. -2. Click on the Transfer Ownership button to proceed with the mutation process. -3. The Transfer of Ownership form page is displayed. - -![](https://lh4.googleusercontent.com/oOa1-k5wm6m3uBQIrxrhUbC-NSIik90F7c0EIuRWA9uI8_C_g4snuT8xaefHQi-RYqclnrCW6-7Am79SYJyNuBKLR-p_YTj9xdLC6arjOoLhTftvVsUN01J07e8RPVGYWczf49Dv) - -1. The application timeline shows three sections - - 1. **Transfer Details** - 2. **Document Upload** - 3. **Summary** -2. The Transfer Details page includes three panels - -3. Transferor Details - This panel displays the current owner details. - -![](https://lh6.googleusercontent.com/-9hzOXmyYV2_Ly1s6JMiMtiHHJk_qJIVrLQmfm6i_9VjxGhtYCP5dC9VGtLw9LN2yvjcOtG6wJvRxL-G7MSgWUZwT7c-toWVygvdIekkDhr3ZEO0XWmoDJMsdq78HHjNRll-soiV) - -1. Transferee Details - This panel requires the user to input the details of the individual to whom the property is to be transferred. - -![](https://lh3.googleusercontent.com/iImFmw944uN6LzcSkRYD8hrZ3FJfjqx6KvBKBAbAHo1GFhGIXbu0X6TIOJ_xFbc-FospbkKLRU5i7-BgC8jKUsCG9tDqrIvFcVfxVF1yn06tm9K5Mrb3Z8nlXEk05zmdlSbOfr_a) - -1. 1. Enter the following details in the form - - 2. Select Ownership Type. - 3. Enter the Name of the transferee. - 4. Select Gender of the transferee. - 5. Enter Mobile No. of the transferee. - 6. Enter Guardian’s Name of the transferee. - 7. Enter Relationship with Guardian of the transferee. - 8. Enter Email address of the transferee. - 9. Select the relevant Special Applicant Category. - 10. Enter the Correspondence Address of the transferee. -2. Registration Details - this panel requires the user to input the registration details in context to the transfer of the property ownership. - -![](https://lh3.googleusercontent.com/1ctDCpWc4mt9YfbGLdZezDrRB9Azl9-QmQgkooQFqh3BpHFtJrbRWZOpBAG-uKWw0XyFqvJcQP85kwpcrAZ-B1-zEQH6d3Pg8WipXNm9leQvX9Ssgraz8-XCXoXnbiPtb-6B4DAS) - -1. 1. Enter the following details in the form - 2. Select Reason for Property Transfer. - 3. Enter Property Market Value. - 4. Enter Registration Document No. - 5. Enter Registration Document Issue Date - 6. Enter Registration Document Value. - 7. Enter any Remarks. -2. Click on the Next Step button to move to the Document Upload section. - -![](https://lh4.googleusercontent.com/049i_rSz_pe0UA1OuEPg0uKoaaNmAYp_FFaV-qyG-eaG18P42n-QA_52S2PpzTQQN7DCcmntCKkhF0k0-OY8oD-2KDuyAvBFa4xLW9brAHUnMhdnqHe95hP_inb2uc8XBrE55WaI) - -1. Select Document you want to upload for Address Proof, Identity Proof, and Registration Proof. -2. Click on the Upload File button to upload the scanned documents copy. -3. Click on the Next Step button to move to the Summary section. - -![](https://lh3.googleusercontent.com/Md0jGktoVEPKOz_wgxlOVtMEfo465oW1k2zLOdtXWaJ_opmk_tyEya2wnUzNJkVXDfwGrXHO1eELOwOK-LdeonsTIk6CjoUmIlcOLJll82-HG77nG51B0td8SiSlImxkmnemanO9) - -1. The Summary page will display the filled-in application details. -2. Scroll down the page to review the information entered. -3. Click on the Previous Step button to go back and make any changes in the form. -4. Click on the Submit button once all details are reviewed. -5. The screen will display the application success message. -6. Click on the Download button on top of the message box to download the application. -7. Click on the Print button to print the application. - -**Edit Property** - -To make any changes in the application - -1. Navigate to the Home page. -2. Search for the application you want to verify by entering any of the search parameters. -3. Click on the Application No. to open the application. -4. Scroll down the form to review the filled in details. - -![](https://lh6.googleusercontent.com/cv9YddYgtCY9fMs06J_1s94F7NHI_wwJwNb3cHzDjfGfSvNj6k3iH4pygQmtZvkQ5jD31XzouFvLjeSNFacFe46v3_2BvD0DHTSEsSASdCzd9iG4k4K7R2oV3SgPdM0C83hFcP9v) - -1. Click on the Edit Property button available at the bottom of the page. -2. Change any details in the form as required. -3. Click on the Update Property button once all changes are complete. - -![](https://lh6.googleusercontent.com/XtsThM4bEc0a60zbxxolazcaz12HF8-_b6LnFhL283sUwkbzlZhtvfAehFSdOlvrebWfbr1sqcq4-haLIRjjYbivtc14pFNMDwfzuXguuiRTJOoo86Ok-ic6P6RsZm917gPXA-u5) - -### - -#### **Document Verifier \(DV\)** - -DV is responsible for verifying the supporting documents uploaded by the property applicants or the counter employee on behalf of the applicants. - -![](https://docs.google.com/drawings/u/0/d/ssjByWbt4ZhFtc_JSzb898A/image?w=425&h=141&rev=1&ac=1&parent=1q5Qmal_ywLqWn-MBuGYWdfkTLSyN9MnVg4tEXL4D9es) - -**The DV can** - -* Reject applications -* Verify and forward applications -* Edit applications - -**Reject Applications** - -Property applications are rejected if the supporting documents uploaded by the applicant fails to comply with the property regulatory requirements or the details provided in the form are incorrect. - - -**To reject applications** - -1. Navigate to the Home page. -2. Search for the application you want to verify by entering any of the search parameters. -3. Click on the Application No. to open the application. -4. Scroll down the form to review the filled in details. - -![](https://lh6.googleusercontent.com/IKibaRZvBvTUPqIrcz3NkCzlRoVs7DY_OS-pB5pe_mrupKdZbp3I-wIsVZJGpi7_WDNEgsgXmOm7b-fDHcCqGNiLjuhbITkKKmnULj2QUkRZnHPE3oeDfS2plZhOwZLVWLyv5Xgs) - -1. Click on the Take Action button available at the bottom of the page. -2. Click on Reject. - -![](https://lh6.googleusercontent.com/UqUs5TKUHCy5GY8M4qplD0yGjWMTt2KaudLcfNIm9fecYlJeD9Elirxvgq7SPMBgxFzYD2B_ud-fDvxJhRUnJlqkLBFaIft6L8ELqqQPQE4aGtOFulWVeOsLQucDYeYFTZOBlbYI) - -1. Enter your Comments to state the reason for rejection. -2. Click on the Upload Files button to upload any supporting documents to validate the rejection. -3. Click on the Reject button. - -The applicant will receive a rejection notification on his mobile number or email address. - -**Verify and Forward** - -The DV verifies and forwards the property application to the Field Inspector if the DV finds all information and documents provided by the applicant correct. - - -**To verify and forward the application** - -1. Navigate to the Home page. -2. Search for the application you want to verify by entering any of the search parameters. -3. Click on the Application No. to open the application. -4. Scroll down the form to review the filled in details. - -![](https://lh6.googleusercontent.com/IKibaRZvBvTUPqIrcz3NkCzlRoVs7DY_OS-pB5pe_mrupKdZbp3I-wIsVZJGpi7_WDNEgsgXmOm7b-fDHcCqGNiLjuhbITkKKmnULj2QUkRZnHPE3oeDfS2plZhOwZLVWLyv5Xgs) - -1. Click on the Take Action button available at the bottom of the page. -2. Click on the Verify and Forward button. -3. Select the relevant Assignee Name from the list of available employees for subsequent processing. - -![](https://lh4.googleusercontent.com/gO3C_nMkBmlMkAhsF8cDfgeoIU7UTUBwwGoAqax7y4pzrRWxpCzt33jx7zqFYSGXBVFIqJ067GS0tyv6RlJYt91VDdKe3nYGS65ia7ZOz-pLuKoOnXOlL9D52fvpeakS7HfwGZa2) - -1. Enter any additional information in the Comments field in context to the application for the assignee’s knowledge. -2. Click on Upload Files to upload any supporting documents for the application. -3. Click on the Verify and Forward button. - -The property application is assigned to the selected Assignee for subsequent processing. - - -**Edit Application** - -1. Navigate to the Home page. -2. Search for the application you want to verify by entering any of the search parameters. -3. Click on the Application No. to open the application. -4. Scroll down the form to review the filled in details. - -![](https://lh6.googleusercontent.com/IKibaRZvBvTUPqIrcz3NkCzlRoVs7DY_OS-pB5pe_mrupKdZbp3I-wIsVZJGpi7_WDNEgsgXmOm7b-fDHcCqGNiLjuhbITkKKmnULj2QUkRZnHPE3oeDfS2plZhOwZLVWLyv5Xgs) - -1. Click on the Take Action button available at the bottom of the page. -2. Click on the Edit button. -3. Change any details in the form as required. - -#### **Field Inspector \(FI\)** - -FI is responsible for inspecting and verifying the field details of the property in the application. - -![](https://docs.google.com/drawings/u/0/d/sebiHTPfZebdhOw9dZ7MGqw/image?w=425&h=151&rev=1&ac=1&parent=1q5Qmal_ywLqWn-MBuGYWdfkTLSyN9MnVg4tEXL4D9es) - -**The FI can** - -* Send applications back to citizens -* Send back -* Reject applications -* Verify and forward applications -* Edit applications - -**Send Back To Citizen** - -FI sends back the applications to the citizens if some vital information is missing in the application or there is a mistake in the information provided. - - - -**To send applications back to citizen** - -1. Navigate to the Home page. -2. Search for the application you want to verify by entering any of the search parameters. -3. Click on the Application No. to open the application. -4. Scroll down the form to review the filled in details. - -![](https://lh3.googleusercontent.com/oocVw_MeILKm1l20nzynbbW01rpxbJuj6--fPme-4uvxYbwCQ3tv2oM36e6Ts4ENjw6z4rODqKhu5i5UXTStSQKt9ktxzaIFcWHNTTiDzmvP8717BIOwlvY76pWVUxGt1Y9SA2r1) - -1. Click on the Take Action button available at the bottom of the page. -2. Click on the Send Back to Citizen button. -3. Enter any Comments stating why the application is sent back. - -![](https://lh4.googleusercontent.com/QxYlS-XjQVPXT78nQ9YicS7bVuT4xXdPPlAjzEsOQiLo45Mo36gCRDK0Aj5ULXBg4ry0SFkCWmTKRnHvp-zzIGudS648wyHeuXTC2XsiuwJ2fKpa09n4zUn03Ddl_phDSHNfl_P9) - -1. Click on the Upload Files button to upload any files or images in context to the application. -2. Click on the Send Back to Citizen button. - -The system displays a success acknowledgement message stating that the application is sent back to the initiator. - -**Send Back** - -The FI can send back the PT application to the DV if there is any mistake or lapses in the document verification process. - - -**To send back applications to the DV** - -1. Navigate to the Home page. -2. Search for the application you want to verify by entering any of the search parameters. -3. Click on the Application No. to open the application. -4. Scroll down the form to review the filled in details. - -![](https://lh5.googleusercontent.com/CAkPIW393cavBhrnb849mvjo0Lf2P2dPXNA_cNDbMYiu19aca-VA8enxxoPvvujjj68fiQ1riE4g7Z_pRK-IJKDfoeABTLXeL_X0I6hLzGjXGMh4dtEj5SP2zcWS10tWMW9XPFe4) - -1. Click on the Take Action button available at the bottom of the page. -2. Click on the Send Back button. - -![](https://lh5.googleusercontent.com/LF0t4mF5vsbIUqjefvG70mcgO1yxgBduldOF7KP1f5Y8HBKBKUMd2xphgRhkMLw2TPcnv_Fg1_pjNgDmn3yy7oyZwLNu1W8D4V7_w5Sc7uj7RqSp5NcOl2UJXCLqQsUupoJWf5fD) - -1. Select the Assignee Name who will be responsible for verifying the application. -2. Enter any Comments stating why the application is sent back. -3. Click on the Upload Files button to upload any files or images in context. -4. Click on the Send Back button. - -The application is assigned back to the selected assignee for verification of documents. - -**Reject Applications** - -Property tax applications are rejected if the supporting documents uploaded by the applicant fails to comply with the license requirements or the details provided in the form are incorrect. - - -**To reject applications** - -1. Navigate to the Home page. -2. Search for the application you want to verify by entering any of the search parameters. -3. Click on the Application No. to open the application. -4. Scroll down the form to review the filled in details. - -![](https://lh3.googleusercontent.com/e1R1lyArskwD4OY6fvNVXswWI5s3LygDHGH_ceBpKNJ3lYx822PNy-K56cLCJaqYkhy9kfrIqDoMwUrERZt5h3eNVgD63QvzD2eJEl_ugFAiVnzV24tgDii5pfaJ4pJYX5WT1IXw) - -1. Click on the Take Action button available at the bottom of the page. -2. Click on Reject. - -![](https://lh6.googleusercontent.com/UqUs5TKUHCy5GY8M4qplD0yGjWMTt2KaudLcfNIm9fecYlJeD9Elirxvgq7SPMBgxFzYD2B_ud-fDvxJhRUnJlqkLBFaIft6L8ELqqQPQE4aGtOFulWVeOsLQucDYeYFTZOBlbYI) - -1. Enter your Comments to state the reason for rejection. -2. Click on the Upload Files button to upload any supporting documents to validate the rejection. -3. Click on the Reject button. - -The applicant will receive a rejection notification on his mobile number or email address. - -**Verify and Forward** - -The FI verifies and forwards the property application to the Approver if the information and documents provided by the applicant are correct. - - -**To verify and forward the application** - -1. Navigate to the Home page. -2. Search for the application you want to verify by entering any of the search parameters. -3. Click on the Application No. to open the application. -4. Scroll down the form to review the filled in details. - -![](https://lh4.googleusercontent.com/L54G0ik5rYE3dKBIS3LPBpSSknbWRWQ_c5zlI4wKLLPOnUa-YBPbD02Bp8Xw0OXbjpzOmv2IVym8wgzDqRtVAVFYkwpVIlpHbDnvVCKIpIGFbns4_nB2bSHDl0McSOovo2ZF4sFi) - -1. Click on the Take Action button available at the bottom of the page. -2. Click on the Verify and Forward button. -3. Select the relevant Assignee Name from the list of available employees for subsequent processing. - -![](https://lh4.googleusercontent.com/gO3C_nMkBmlMkAhsF8cDfgeoIU7UTUBwwGoAqax7y4pzrRWxpCzt33jx7zqFYSGXBVFIqJ067GS0tyv6RlJYt91VDdKe3nYGS65ia7ZOz-pLuKoOnXOlL9D52fvpeakS7HfwGZa2) - -1. Enter any additional information in the Comments field in context to the application for the assignee’s knowledge. -2. Click on Upload Files to upload any supporting documents for the application. -3. Click on the Verify and Forward button. - -The property application is assigned to the selected Assignee for subsequent processing. - -**** - -#### **Approver** - -Approver is responsible for the final approval of the PT application. - -![](https://docs.google.com/drawings/u/0/d/sPGS5RZdl0H86fBMJ49Dn8g/image?w=425&h=138&rev=1&ac=1&parent=1q5Qmal_ywLqWn-MBuGYWdfkTLSyN9MnVg4tEXL4D9es) - -**The Approver can** - -* Send applications back to field inspectors -* Reject applications -* Approve applications - -**Send Back** - -The Approver can send back the property application to the FI or DV if there is any mistake or lapses in the document verification process. - - -**To send back applications to the DV or FI** - -1. Navigate to the Home page. -2. Search for the application you want to verify by entering any of the search parameters. -3. Click on the Application No. to open the application. -4. Scroll down the form to review the filled in details. - -![](https://lh4.googleusercontent.com/zDdpBxKH3znbdKcuRFQHmBGXcpsvWs8Udbs2RBNtVger_uQ7DsXXx0Bh3SMumttLVlTstqZPrYIqgRG2ehB6BWTe4TzuYXSQc_VBn7RZUD7C_YlevcWHwSBWkJQqocZF-EJzJCX0) - -1. Click on the Take Action button available at the bottom of the page. -2. Click on the Send Back button. - -![](https://lh5.googleusercontent.com/LF0t4mF5vsbIUqjefvG70mcgO1yxgBduldOF7KP1f5Y8HBKBKUMd2xphgRhkMLw2TPcnv_Fg1_pjNgDmn3yy7oyZwLNu1W8D4V7_w5Sc7uj7RqSp5NcOl2UJXCLqQsUupoJWf5fD) - -1. Select the Assignee Name who will be responsible for verifying the application. -2. Enter any Comments stating why the application is sent back. -3. Click on the Upload Files button to upload any files or images in context. -4. Click on the Send Back button. - -The application is assigned back to the selected assignee for verification of application. - - -**Reject Applications** - -Property applications are rejected if the supporting documents uploaded by the applicant fails to comply with the regulatory requirements or the details provided in the form are incorrect. - - -To reject applications - -1. Navigate to the Home page. -2. Search for the application you want to verify by entering any of the search parameters. -3. Click on the Application No. to open the application. -4. Scroll down the form to review the filled in details. - -![](https://lh4.googleusercontent.com/l73mJXkfayKQ2EQcFw72Y33KMvJuItBWV3OAzoEDA5-O614rNzaIJue9ZX7lYr5P3Jk9GZnCB0cfsc2w1swqgGxu11q0wE7KRij4cd2NavsU6Os8sMGDx1IkcdUlG2UJs7RXWbWQ) - -1. Click on the Take Action button available at the bottom of the page. -2. Click on Reject. - -![](https://lh6.googleusercontent.com/UqUs5TKUHCy5GY8M4qplD0yGjWMTt2KaudLcfNIm9fecYlJeD9Elirxvgq7SPMBgxFzYD2B_ud-fDvxJhRUnJlqkLBFaIft6L8ELqqQPQE4aGtOFulWVeOsLQucDYeYFTZOBlbYI) - -1. Enter your Comments to state the reason for rejection. -2. Click on the Upload Files button to upload any supporting documents to validate the rejection. -3. Click on the Reject button. - -The applicant will receive a rejection notification on his mobile number or email address. - - -**Approve Applications** - -The Approver signs off the PT application once the information and documents provided by the applicant are found correct. - - -To approve the application - -1. Navigate to the Home page. -2. Search for the application you want to verify by entering any of the search parameters. -3. Click on the Application No. to open the application. -4. Scroll down the form to review the filled in details. - -![](https://lh6.googleusercontent.com/79QnqnrTlcpv9Injybe0v_8Wgo9dVvwKFFX_3DyG1yqM6GV1obgv7lUks5nZ-ZPWltD3ps7Ar6eAPpPhgcydtImjCUXOgmLoPoIFj_xbtOkPV-7KaykycnArmvBFvPLGA3YxGN01) - -1. Click on the Take Action button available at the bottom of the page. -2. Click on the Approve button. - -![](https://lh4.googleusercontent.com/FK9qMm0lMtuirKg8IaqBLn1IdKIYJ4bkcbpOSRUEmTD5ZoOaP3KQLKxeUZiDnEXyDh4xfBP_5FYVd-OK8U8NeKDMcJlSectELXGQbbiDQICl0cdIXWVJHpUMSwokE-mNwAwn7OnX) - -1. Select the relevant Assignee Name from the list of available employees for subsequent processing. -2. Enter any additional information in the Comments field in context to the application for the assignee’s knowledge. -3. Click on Upload Files to upload any supporting documents for the application. -4. Click on the Approve button. - -The property application is approved. - - -**** - diff --git a/modules-features/user-guides/guide-pt/README.md b/modules-features/user-guides/guide-pt/README.md new file mode 100644 index 00000000..f6b15562 --- /dev/null +++ b/modules-features/user-guides/guide-pt/README.md @@ -0,0 +1,102 @@ +--- +description: An illustrative guide to using the property tax module +--- + +# Property Tax + +### **Introduction to PT** + +The Property Tax \(PT\) module offers the citizens and governance bodies a convenient and transparent means of processing property taxes. Local governing bodies identify the applicable tax slabs for different types of properties. The PT module assesses properties, calculates tax amount, processes tax payment and generates tax collection reports. +The PT module enables citizens to pay property taxes online. It facilitates the governing bodies process property tax payments. + +### User roles + +Refer to the table below to understand the different user roles and the scope of action linked to each role. The applicable user roles and action items can vary from one State to another. DIGIT customizes the workflows to suit the requirements defined at the State level. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
User RoleScope of ActionRole Description
Citizen +

Add Property

+

Search Property

+

Edit Property

+

Assess Property

+

Re-Assess Property

+

Pay Property Tax

+

Transfer Property Ownership

+

Download Receipts/Applications

+
Individuals and Community groups
Counter Employee (CE) +

Add Property

+

Search Property

+

Edit Property

+

Assess Property

+

Re-Assess Property

+

Pay Property Tax

+

Transfer Property Ownership

+

Download Receipts/Applications

+
Counter employees who assist citizens register new property details, transfer + ownership of property, pay property tax on their behalf
Document Verifier (DV) +

Verify and forward

+

Send Back

+

Edit Application

+
Employees responsible for verifying the supporting documents submitted + by citizens for a new property or transfer of ownership of property
Field Inspector (FI) +

Verify and forward

+

Send Back

+

Reject

+

Edit

+
Employees who go on to the field (i.e. location of property) and physically + verifies the information provided by the applicant is correct
Approver +

Approve

+

Send Back

+

Reject

+

Cancel

+
An employee who has the final authority to approve or reject the property + registration
+ +### **Using PT** + +This section guides you through the details of using the PT module for each role. Click on the relevant role below to learn more about how to use the PT system. + +1. [Citizens](citizen-user-manual.md) +2. [Counter Employee \(CE\)](citizen-user-manual.md) +3. [Document Verifier \(DV\)](employee-user-manual.md#document-verifier-dv) +4. [Field Inspector \(FI\)](employee-user-manual.md#field-inspector-fi) +5. [Approver](employee-user-manual.md#approver) + +### + +#### **** + diff --git a/modules-features/user-guides/guide-pt/citizen-user-manual.md b/modules-features/user-guides/guide-pt/citizen-user-manual.md new file mode 100644 index 00000000..0105de66 --- /dev/null +++ b/modules-features/user-guides/guide-pt/citizen-user-manual.md @@ -0,0 +1,283 @@ +--- +description: >- + Learn how to add new property, assess or transfer property and pay property + tax +--- + +# Citizen User Manual + +### **Citizens and CE** + +Citizens represent individuals, communities, or business entities who are the system end-users. The PT module allows property owners to register their property details online. These details are then used for various property-related transactions. + +The citizen can also approach the Counter Employee \(CE\) to register new property, assess property or pay property tax. + +![](https://docs.google.com/drawings/u/0/d/seSp91QR2XSdophhuwmkCJA/image?w=425&h=232&rev=266&ac=1&parent=1q5Qmal_ywLqWn-MBuGYWdfkTLSyN9MnVg4tEXL4D9es) + +**The Citizen or CE role can -** + +* [Add new property](citizen-user-manual.md#add-new-property) +* [Edit property](citizen-user-manual.md#edit-property) +* [Search property](citizen-user-manual.md#search-property) +* [Assess property](citizen-user-manual.md#assess-property) +* [Re-assess property](citizen-user-manual.md#assess-property) +* [Transfer property](citizen-user-manual.md#transfer-property-ownership) +* [Pay property tax](citizen-user-manual.md#pay-property-tax) +* [Download payment receipts](citizen-user-manual.md#pay-property-tax) + +### **Add New Property** + +Citizens or CE can add new property details through the DIGIT web portal or the DIGIT mobile app. + +To add a new property click on the **Property Tax** card available in the **Citizen Services** section of the Home page. + +![](https://docs.google.com/drawings/u/0/d/seDWOsUhRoTzs1JxJAujc0Q/image?w=624&h=290&rev=7&ac=1&parent=1q5Qmal_ywLqWn-MBuGYWdfkTLSyN9MnVg4tEXL4D9es) + +Click on the **Add New Property** button on the screen. This will open a new form page. + +![](https://docs.google.com/drawings/u/0/d/sGXT_05YQYLufoBH-h-j6Xg/image?w=624&h=352&rev=11&ac=1&parent=1q5Qmal_ywLqWn-MBuGYWdfkTLSyN9MnVg4tEXL4D9es) + +The system will display the **Required Documents - Property Tax** list. Note the list of documents valid for address, identity, registration, usage, special category, and occupancy proofs. + +![](https://lh4.googleusercontent.com/avJIPMSxsehU02dTK8QvpZbJoeSHU7xdRQNe304PMqHAiVZNofim7-P8fs7lvKTOrkQk-jYzdHSLIF8IjpqwXOfbLp2iBNYvDiLKbtC0fBr2aoIjoYaPU7ByyabBUWIDVcD_C-pQ) + +Click on the **Print** button to get a hard copy of the documents list for reference. Click on the **Apply** button to proceed with adding your property. The form sections are available on the top of the page. + +![](https://lh4.googleusercontent.com/rknBMmpi-TvKiA9-BIEf8LQjAr9eGVeHQsVclqPuTozHvicGhl2dV8YDY0Ogh3rrqGKvPu1UZlpXFiAsiuJyClZ_pq3dKDTBl2Sst48WVtng5m6h9i774zh9aQzbbQj2pul05Qqb) + +**Add Property Form Sections** + +The add property form page contains various sections that include + +* **Property Address** +* **Property Details** +* **Owner Details** +* **Document Info** +* **Summary** + +Enter the following information in the **Property Address** section. + +The system will display the New Property form page. + +![](https://docs.google.com/drawings/u/0/d/sH7DsvB9k7W2f1N2DERQplg/image?w=624&h=328&rev=1&ac=1&parent=1q5Qmal_ywLqWn-MBuGYWdfkTLSyN9MnVg4tEXL4D9es) + +The **City** field displays the registered city by default. Click on the drop-down list to select a different city. Enter the **House/Shop No.**, **Building/Colony Name**, **Street Name**, **Locality/Mohalla**, and the **Pincode**. Enter the **Existing Property ID** in case there is a legacy property ID available for the listed property. + +Click on the **Next** button to move to the next section. + +Enter the following details in the Property Details section + +Select the applicable **Property Usage Type** and the **Property Type** from the drop-down list available. + +![](https://lh3.googleusercontent.com/ed-f8D4t_UWDuuixclY9-qEsWFf0W_Y2q9dI79zEHsXqdRBbFBni-PXKndENVMcHqc2WSVY9-sDy94QZ9QmKqbA3trWn4GNbZC2Rq19-Q3PKXSMGqC-r1b0PU5SLQ6hdFhXnNFkL) + +Check **Yes** or **No** to indicate **Whether rainwater harvesting structure provided on the property?** Enter **Vasika No.** and **Vasika Date** if applicable. Enter **Allotment Letter No.** and **Allotment Date** if applicable. + +![](https://lh5.googleusercontent.com/CgVWTR3yGwL-7F5v9FXuK8IBn_4e6mwyXk5B1DC4r59dp0dcEUVPzifBTMJz7LD-SV4GyGtePWFU7oa7Yckfxa_xPa4kZsLYQaZeWbv5aY54ZROICaEUGQGnETwze7oX40pJAV4A) + +Enter **Firm/Business Name** if the property is listed as commercial or institutional. Enter any information in the **Remarks** field. Check the box **Do you have any inflammable material stored on your property?** if it is true. Check the box adjacent to **Height of property more than 36 feet?** if it is true. Fill in the **Unit** details if the selected property usage type is **Commercial**, **Institutional**, **Other Non-Residential**, or **Residential**. + +![](https://lh4.googleusercontent.com/da9LgCwWYkIa7o9_elF2O9IYBBtGcPLY7Y9VbhPWF56nF7avjIee63vydNKOEbGSWUcv0aJ1bE6ucy1dHlVkNQ9PXctQov8VuXnCeZT8FicqPUn1O2onmRInxeJ9p7DhAg5Inq7k) + +The **Unit Usage Type** by default accepts the **Property Usage Type** value. Select the applicable **Sub Usage Type** for the listed property in case of **Commercial** or **Institutional** properties. Select the most applicable option for the type of **Occupancy**. Enter the **Built-up-area \(sq ft\)** value of the property. **Select Floor** to identify the relevant floor of the property. Click on **+Add One More Unit** button to add more units. + +Click on the **Next** button to proceed to enter the **Owner Details**. + +Enter the following information in the **Owner Details** section. Select the relevant **Type of Ownership**. Enter the **Owner’s Name**. + +![](https://lh3.googleusercontent.com/lxO2AMspTiXmE4Ye6M9gtEQmUmkon-vwGyHRE0gMgWsV8Teq4dsrQb7sdF-CI2YobtUD0FYVFihUgqN3kmx6D4XZ1qAIhKI2o4wjHznI2V3iDzllw94UvhGZjR2RDLl8OvdJMku8) + +Check the applicable Gender of the owner. Enter the owner’s **Mobile No.** and **Guardian’s Name**. Select **Relationship** of the owner with the guardian. Enter the applicable **Special Category**. Enter the owner’s **Email Id** and the **Correspondence Address**. Check the **Same as property address** box if the correspondence address is the same as the address of the listed property. The **Correspondence Address** field is auto-populated in that case. + +Click on the **Next** button to move to the **Documents** section. + +Upload the required documents in the **Documents** section of the application form. In the **Select Document** field, select the type of document you are uploading for **Address Proof**, **Identity Proof**, **Registration Proof**, **Usage Proof**, and **Construction Proof**. + +![](https://lh4.googleusercontent.com/qKE-yjtQ3e_6egULk3hb7wlMgf6WN2nx7EVVVT_fmbiphre5LYU9fAIhrXQGzE5zfIhyiZnp0C-9Whl6TqaJTjwG1brk2n2T4cENRxjGGD-wcGifcYG9ImXZrReBwcfVHYQc-GZB) + +Click on the **Upload File** button to upload the documents. + +Click on the **Next** button to proceed to the next section. + +The **Application Summary** page provides all the information filled in by the applicant. Click on the **Edit** icon ![](https://lh5.googleusercontent.com/GWZgkD_fJ_h5mpX5dL-uypyhPaNjo8AsKD80Xu3EeextT7nDW0z3Z6GQDRsmLEIa9k3C5y-zL1qsVaNpoWG7pzVRP6IJ_bOcAW-RVoF1blCqAJMZFTxlVyDSv_Okoi2ri235oyUG) to make any changes to the application. + +![](https://lh3.googleusercontent.com/6Sd6gL52tJiRKx1qiZTByO1DIeb9Y8HzR8GAYcND1UkjPOE4deKt2bv48KebjBi1VvFvF9x_5bR1O5FjJlBYt0fVdfClcPrYygOeTZFvW1OILXFC7cWMc9yFfNsKNQ3a36gXIWMD) + +Click on the **Add Property** button once the details are reviewed and corrected. The system displays the New Property Successfully Added acknowledgement message. + +The **Property ID** is available along with this message. + +![](https://lh6.googleusercontent.com/reDjopRtDZbg0L5SK2uz1j8wYowD5a8HI9BJcBhCVKnmUWpvUhj1rAdAt7BE_wdsFdfJKIzoLy92Xr8sIiXN1Sx62VACXaByJonT95H5hGiBYLcRop8tJzRaC8JAR7xo_r8D-afy) + +Click on the **Download** button on top of the message box to download the application. Click on the **Print** button to print the application. + +### **Search Property** + +To search for a submitted application or track the status of submitted applications navigate to the **Property Tax** home page. There are two search options available. Users can search by property or application. + +![](https://lh6.googleusercontent.com/FHUQwQLSOAp3sEDD8Ek_rFvpzMrMgEouz325KF5bXUkqdHV6itXzTJl_exRddHDzbyL0mV_0JvotM6NgOd55Ge3hN5og5O3WOZkGO_PIJxIUqDKQQpjDH5C8Pb06IuAXf52SVAxS) + +To Search by Property click on the **Search Property** tab. Enter the **ULB**. The system displays the registered City or ULB details by default. Enter any of the following search parameters or combinations to refine the search for property. Enter the **Owner Mobile No**. or the **Unique Property ID** allotted by the system. Enter the **Existing Property ID** if there is any legacy ID linked to the property. + +Click on the **Search** button to view the results. Click on the **Reset** button to renew search with different parameters. + +To Search by Application click on the **Search Application** tab. + +![](https://lh6.googleusercontent.com/vjL27TvS3qFDTf4pxpCzVRQBw9A3U4uh7ZzWCjNVGt-m80GxWVBFadXw9YDtfRBKbPD6ZmAyIDmQAIdqnmIyMBupjSPO0SlTWrZSCpbKiiJ3cKBUFxGYGe3PoS-o45rTHFPzYMM8) + +Enter any of the following search parameters or combinations to refine the search for property. Enter the **Application No.** or the **Owner Mobile No.** or the **Unique Property ID**. + +Click on the **Search** button to view the search results. Click on the **Reset** button to renew search with different parameters. + +The search results show the filtered list of property entries along with the application **Status.** + +![](https://lh3.googleusercontent.com/rd4FhXx12OniH-A7WcIm5uJVHI3fkIOyyu_TA47tvhkQR3Qa56VmnixiF0RS3YHTik2SzXT1uXpLD5assNNtFfLts1joJfXndT_CCQW5cPFh4ZGbvZ6p6rzUkYy61FCUowIjSw7U) + +An **Active** Status means the listed property is pending for further action. **Inworkflow** status means there is some action going on for the listed property and hence it is not accessible for any other action. Once the action is complete the status will change to **Active**. + +Click on the **Unique Property ID** or **Application No.** hyperlink to access the property details. + +### **Assess Property** + +Listed properties are assessed every financial year to calculate the property tax amount. + +To assess property navigate to the **Property Tax >> Assess & Search** menu option on the sidebar. Alternatively, click on the **Property Tax** card on the Home page. Enter the required search parameter to refine your search for properties. + +![](https://lh5.googleusercontent.com/YQIKrJvAIcU6yE-5MOQWXbWTJOy1WGS1dk8NDMn-xzj4qB79oGnep2G5wzoPaZAOLc2_an4nU9-g4G9jy0hREZBDdV2l0eORNNwFAPUvnUA9bJ0TUB09zVk5Tmf9oJrYYIjiBX7n) + +Click on the **Search** button to view the results. Click on the relevant **Unique Property ID**. + +![](https://lh6.googleusercontent.com/6iPTZJK92wv0yS3kMkB2NXop4teyS_6UXwH1C841IPokf-jHjvBXgH-9Hmrougtjd-kzhfPx3UUPdD4xUlZ0m4Pm2_R9uRTktwCSkMixMPOd9OtsUGarbJLBvFPjY4U4nqYqtj5K) + +Scroll down the **Property Information** page to view the property details. Expand the **Assessment History** panel to view the previous assessment details. + +![](https://lh5.googleusercontent.com/uY8Wqdz6KdY2X1vGa-MK3m_SDIfQsKK-9P1zRLTOkkedWtddU4DxM6n_X8wa4XBPD9Hs11ypr1lEde8Ia7We_TfSPj8vyhiXmbgktTjk_JIhLRMbmMtVI9eCiy3W-FHgM07hgxH4) + +Click on the **Re-Assess** button if you want to reassess the property. Expand the **Payment History** panel to view earlier payments made for the listed property. + +![](https://lh4.googleusercontent.com/bNWAla1ISv-bwzTrhuVHrYM4QWYjL-ZEXd_2KIuVV3v4lz_x5STPNRbmZ94ibM4QJBnit-cSiewgER1GcFRWzdmtmKZl9hFqCRyQDsNRE6Uvcynzs4YZyluQNXv-OQX-7ebq3xSZ) + +Click on the **Download Receipt** button to get a soft copy of the listed payment. Expand the **Application History** panel to view the property application details. + +![](https://lh6.googleusercontent.com/1USYixM9oeKX25VvYTVCHIDGYcTvYle_KhgiVe8y3Gfe_BqxEe_F5igMG-suYVAoDvU4pnNDChdwD4S8hiUpx51975POaG0JGgPbb-iLHWWcytt7-_PkWdO67AgioHrRdYEbF-hg) + +Click on the **View Details** button to fetch application details. Click on the **Assess Property** button. + +![](https://lh5.googleusercontent.com/tZATKna3N_8B6tXfvKcgb-XCM9ATi9vZCVmmrMumZMdSK4h2zrHXqAi0BA5eNhzbU19vYQ7qK5TSxSysn7qHFPx2w9QyG4JXxUoUXHOn0enziITozvJ5fyl5PomDLCIZyyqnZ36t) + +Select the relevant **Financial Year**. + +![](https://lh6.googleusercontent.com/7pvJgswJnSaiQUF8hIbSvllw9foHlKxZtWFmzIMPvwX3OIRc9QQryqwvzEKME00xLHwD2nnAoLIuFwpvxXAPxjbl7drABENtT5RzBKVe-KWG8poluGt726a0rgsrYJR9O-UizTQU) + +The panel will display the **Property Tax** Amount details. + +![](https://lh4.googleusercontent.com/wHL08KYdLXfFkZcDKL2TG1-1-HnEhA_h68Jcg86qENZR70VGqIcHTmngILGR7QJDU9kaLvndKlsyipZWeDXx9az_gBu5Z2LBKM9NxTlDhqCY2vbS2L3cLQnhgH_KSwSvoxZIH4Ir) + +Click on the **Add Rebate** button to apply any rebates or discounts on the tax amount. This feature is not available for the citizens. + +![](https://lh4.googleusercontent.com/ybq1uI3TJnFWutfB7Sl2XDNDa40zBJorF5rw0Bxif4AZP6LTUdCde1TPYcgsZzU-ACpmkopxXvg-4BME4zckR7hmURWR--5e9Srv4Y0sWmkTIov4oRwvwycbH7fzntWYj_sVF4v6) + +Enter any **Additional Charges** amount, if applicable. Select the appropriate **Reason for Charges**. Enter any **Additional Rebate** amount, if applicable. Select the appropriate **Reason for Rebate**. + +Click on the **Submit** button to apply the rebate or charges to the tax amount. Click on the **Calculation Details** button to view the calculation logic applied for calculating the tax amount. + +![](https://lh6.googleusercontent.com/8ObFHMDJk5Us3RsKPtsHIVyflPp3hBjC4iB4rcVuTNsLorTMF3zVqBB6-j7DclRJmv1tlzLEAuGujvwodxt8pAxymKxe7EQG7bhsahZs7l1mDxEZTqbZEiKCTBAn5ZiAg9SNmGOK) + +Click on the **OK** button to move back to the Assessment page. + +Click on **Assess Property** once you complete reviewing all details. The system will display the assessment success acknowledgement message. + +![](https://lh6.googleusercontent.com/0tFvRflW44Rsa-iB3EnJeBF3ylH1EBDR1fdkm_sVy2JrOFw6JlhTVeD38co-sF5ZNAR1rvTNGralI2SLVH77Yv1OM_gOt9400JDuvpaEPf1Vh8SDod5fzBSMJjUdDMQON6-vaWdh) + +Click on the **Proceed to Payment** button to pay the property tax. Else click on the **Home** button to navigate back to the home page. + +### **Pay Property Tax** + +Applicants have to pay the property tax once the property is assessed for the specified financial year. + +To make payment for property tax click on the **Proceed to Payment** button after the property assessment is complete. The **Payment Collection** Details panel displays the tax **Fee Details**. + +![](https://lh4.googleusercontent.com/jNGXHfB7V0ULF4vurJ9_uvVsLv45gT8iU8pxfwl3FPGBoTDvYplxCRlnUik1IL_q6JZdK2l47S93noNAPbzGbrXi-CXSJB4nMuoNqkwgaXnA1_o0MDinJD8ebczBl0TaLs9JMd3y) + +Enter the payment details. The system allows you to pay by cash, cheque, or credit/debit card. Click on the **Cash**, **Cheque**, **Credit/Debit Card** tab depending on the preferred payment method. + +![](https://lh6.googleusercontent.com/RAS_nMy-XzjGV4jgrlDt_4Z9tPgOhg9xv1VYD0gxyD1YDIU5BsTk0wG3VoUCo5ZxRM_IoKhrodDLEXPscTSEqOwgK4FxL6hv-YAv9gL7arhCRYzQGH9M_0C1E-o-ouiahrESJudx) + +Enter payment details as requested on the screen. Click on the **Generate Receipt** button to confirm the payment. The screen displays the success acknowledgement message along with the **Payment Receipt No.** + +![](https://lh4.googleusercontent.com/BU-xErD0A1R3VFG5JXXrnbVtLRi6vXW-xdgMDINCjPXj8gLBmVszFBYNXLv5YS82W9bqkTbWANOd3ElJQHdKvkjtuCitxrjS-vKCCqxsCQC6o0NKt36mMMvbkoxhJZFFPSoYjJU_) + +Once the payment is complete the **Property Tax Receipt** is issued. Click on the **Download** or **Print** button to download or print the tax Payment Receipt. + +### **Transfer Property Ownership** + +The PT module allows users to transfer the ownership of property. + +To transfer the ownership of property search for the property by entering the **Unique Property ID** or any other search parameter. Click on the **Unique Property ID** to open the application. Scroll down the **Property Information** page. Click on the **Transfer Ownership** button available in the **Owner Details** panel. + +![](https://lh4.googleusercontent.com/6dtWmonW-iVq01CEaDyxqcKx-BHLc6vl_LPQ7b2MpOehJTdHuaQgPJRHam-ybLxlt-7ayY_AaM2uOTqiLF0ei2sJKEZZDATEpz0J3FYhtEsEuMSwFWPwvIF1rRTevn4vtvU7hH_q) + +The system will display the list of **Required Documents - Transfer to Ownership**. + +![](https://lh4.googleusercontent.com/T8cgKoAm-ImI6zmXpSCeJEytjbY3xnYjQ-Mh_u5Fzx0N_EXihIjVIg0844Mf9TrGawZehBoWj-DINauCRZWIo3SfmsfsjLVQZbKXskadd0xDEKTt8OGX4XeLcechY-WSrZhBmFGw) + +![](https://lh3.googleusercontent.com/GqFf3jzNE86DEkP5I0YoxtXohoqWTLs2gTETNhKeOHaJ4jwLZ3Law_S41frAMT_ZrrS-upunUD9vVnEACgnfzCM0QbjvWKkhJBR9WKf0uKq_N1SykvoBLUUCUjj17WMRadOpbrNs) + +Click on the **Print** button to print the list of documents. Click on the **Transfer Ownership** button to proceed with the mutation process. The **Transfer of Ownership** form page is displayed. + +![](https://lh4.googleusercontent.com/oOa1-k5wm6m3uBQIrxrhUbC-NSIik90F7c0EIuRWA9uI8_C_g4snuT8xaefHQi-RYqclnrCW6-7Am79SYJyNuBKLR-p_YTj9xdLC6arjOoLhTftvVsUN01J07e8RPVGYWczf49Dv) + +The application timeline shows three sections - + +1. **Transfer Details** +2. **Document Upload** +3. **Summary** + +The Transfer Details page includes three panels - + +**Transferor Details** - This panel displays the current owner details. + +![](https://lh6.googleusercontent.com/-9hzOXmyYV2_Ly1s6JMiMtiHHJk_qJIVrLQmfm6i_9VjxGhtYCP5dC9VGtLw9LN2yvjcOtG6wJvRxL-G7MSgWUZwT7c-toWVygvdIekkDhr3ZEO0XWmoDJMsdq78HHjNRll-soiV) + +**Transferee Details** - This panel requires the user to input the details of the individual to whom the property is to be transferred. + +![](https://lh3.googleusercontent.com/iImFmw944uN6LzcSkRYD8hrZ3FJfjqx6KvBKBAbAHo1GFhGIXbu0X6TIOJ_xFbc-FospbkKLRU5i7-BgC8jKUsCG9tDqrIvFcVfxVF1yn06tm9K5Mrb3Z8nlXEk05zmdlSbOfr_a) + +Enter the following details in the form - + +Select applicable **Ownership Type**. Enter the **Name**, **Gender**, and **Mobile No.** of the transferee. Enter **Guardian’s Name** of the transferee and the **Relationship with Guardian**. Enter the **Email** address of the transferee. Select the relevant **Special Applicant Category**. Enter the **Correspondence Address** of the transferee. + +**Registration Details** - This panel requires the user to input the registration details in context to the transfer of the property ownership. + +![](https://lh3.googleusercontent.com/1ctDCpWc4mt9YfbGLdZezDrRB9Azl9-QmQgkooQFqh3BpHFtJrbRWZOpBAG-uKWw0XyFqvJcQP85kwpcrAZ-B1-zEQH6d3Pg8WipXNm9leQvX9Ssgraz8-XCXoXnbiPtb-6B4DAS) + +Enter the following details in the form. + +Select **Reason for Property Transfer**. Enter **Property Market Value**, the **Registration Document No.** and the **Registration Document Issue Date**. Enter the **Registration Document Value**. Enter any **Remarks**. + +Click on the **Next** Step button to move to the **Document Upload** section. + +![](https://lh4.googleusercontent.com/049i_rSz_pe0UA1OuEPg0uKoaaNmAYp_FFaV-qyG-eaG18P42n-QA_52S2PpzTQQN7DCcmntCKkhF0k0-OY8oD-2KDuyAvBFa4xLW9brAHUnMhdnqHe95hP_inb2uc8XBrE55WaI) + +**Select Document** you want to upload for **Address Proof**, **Identity Proof**, and **Registration Proof**. Click on the **Upload File** button to upload the copy of scanned documents. + +Click on the **Next Step** button to move to the **Summary** section. + +![](https://lh3.googleusercontent.com/Md0jGktoVEPKOz_wgxlOVtMEfo465oW1k2zLOdtXWaJ_opmk_tyEya2wnUzNJkVXDfwGrXHO1eELOwOK-LdeonsTIk6CjoUmIlcOLJll82-HG77nG51B0td8SiSlImxkmnemanO9) + +The **Summary** page will display the filled-in application details. Scroll down the page to review the information entered. Click on the **Previous Step** button to go back and make any changes in the form. + +Click on the **Submit** button once all details are reviewed. The screen will display the application success message. Click on the **Download** button on top of the message box to download the application. Click on the **Print** button to print the application. + +### **Edit Property** + +To make any changes in the application navigate to the **Home** page. Search for the application you want to verify by entering any of the search parameters. Click on the **Application No.** to open the application. Scroll down the form to review the filled in details. + +![](https://lh6.googleusercontent.com/cv9YddYgtCY9fMs06J_1s94F7NHI_wwJwNb3cHzDjfGfSvNj6k3iH4pygQmtZvkQ5jD31XzouFvLjeSNFacFe46v3_2BvD0DHTSEsSASdCzd9iG4k4K7R2oV3SgPdM0C83hFcP9v) + +Click on the **Edit Property** button available at the bottom of the page. Change any details in the form as required. Click on the **Update Property** button once all changes are complete. + +![](https://lh6.googleusercontent.com/XtsThM4bEc0a60zbxxolazcaz12HF8-_b6LnFhL283sUwkbzlZhtvfAehFSdOlvrebWfbr1sqcq4-haLIRjjYbivtc14pFNMDwfzuXguuiRTJOoo86Ok-ic6P6RsZm917gPXA-u5) + +### + diff --git a/modules-features/user-guides/guide-pt/employee-user-manual.md b/modules-features/user-guides/guide-pt/employee-user-manual.md new file mode 100644 index 00000000..bc2addad --- /dev/null +++ b/modules-features/user-guides/guide-pt/employee-user-manual.md @@ -0,0 +1,199 @@ +--- +description: >- + This section illustrates the steps for different employee user roles at the + ULB level +--- + +# Employee User Manual + +### **Document Verifier \(DV\)** + +DV is responsible for verifying the supporting documents uploaded by the property applicants or the counter employee on behalf of the applicants. + +![](https://docs.google.com/drawings/u/0/d/ssjByWbt4ZhFtc_JSzb898A/image?w=425&h=141&rev=1&ac=1&parent=1q5Qmal_ywLqWn-MBuGYWdfkTLSyN9MnVg4tEXL4D9es) + +**The DV can** + +* [Reject applications](employee-user-manual.md#reject-applications) +* [Verify and forward applications](employee-user-manual.md#verify-and-forward) +* [Edit applications](employee-user-manual.md#edit-application) + +### **Reject Applications** + +Property applications are rejected if the supporting documents uploaded by the applicant fails to comply with the property regulatory requirements or the details provided in the form are incorrect. + +To reject applications navigate to the **Home** page. Search for the application you want to verify by entering any of the search parameters. Click on the **Application No.** to open the application. Scroll down the form to review the filled in details. + +![](https://lh6.googleusercontent.com/IKibaRZvBvTUPqIrcz3NkCzlRoVs7DY_OS-pB5pe_mrupKdZbp3I-wIsVZJGpi7_WDNEgsgXmOm7b-fDHcCqGNiLjuhbITkKKmnULj2QUkRZnHPE3oeDfS2plZhOwZLVWLyv5Xgs) + +Click on the **Take Action** button available at the bottom of the page. Click on **Reject**. + +![](https://lh6.googleusercontent.com/UqUs5TKUHCy5GY8M4qplD0yGjWMTt2KaudLcfNIm9fecYlJeD9Elirxvgq7SPMBgxFzYD2B_ud-fDvxJhRUnJlqkLBFaIft6L8ELqqQPQE4aGtOFulWVeOsLQucDYeYFTZOBlbYI) + +Enter your **Comments** to state the reason for rejection. Click on the **Upload Files** button to upload any supporting documents to validate the rejection. Click on the **Reject** button. + +The applicant will receive a rejection notification on his mobile number or email address. + +### **Verify and Forward** + +The DV verifies and forwards the property applications to the Field Inspector if the DV finds all information and documents provided by the applicant correct. + +To verify and forward the application navigate to the Home page. Search for the application you want to verify by entering any of the search parameters. Click on the **Application No.** to open the application. Scroll down the form to review the filled in details. + +![](https://lh6.googleusercontent.com/IKibaRZvBvTUPqIrcz3NkCzlRoVs7DY_OS-pB5pe_mrupKdZbp3I-wIsVZJGpi7_WDNEgsgXmOm7b-fDHcCqGNiLjuhbITkKKmnULj2QUkRZnHPE3oeDfS2plZhOwZLVWLyv5Xgs) + +Click on the **Take Action** button available at the bottom of the page. Click on the **Verify and Forward** button. Select the relevant **Assignee Name** from the list of available employees for subsequent processing. + +![](https://lh4.googleusercontent.com/gO3C_nMkBmlMkAhsF8cDfgeoIU7UTUBwwGoAqax7y4pzrRWxpCzt33jx7zqFYSGXBVFIqJ067GS0tyv6RlJYt91VDdKe3nYGS65ia7ZOz-pLuKoOnXOlL9D52fvpeakS7HfwGZa2) + +Enter any additional information in the **Comments** field in context to the application for the assignee’s knowledge. Click on **Upload Files** to upload any supporting documents for the application. Click on the **Verify and Forward** button. + +The property application is assigned to the selected assignee for subsequent processing. + + +### **Edit Application** + +To edit applications navigate to the **Home** page. Search for the application you want to verify by entering any of the search parameters. Click on the **Application No.** to open the application. Scroll down the form to review the filled in details. + +![](https://lh6.googleusercontent.com/IKibaRZvBvTUPqIrcz3NkCzlRoVs7DY_OS-pB5pe_mrupKdZbp3I-wIsVZJGpi7_WDNEgsgXmOm7b-fDHcCqGNiLjuhbITkKKmnULj2QUkRZnHPE3oeDfS2plZhOwZLVWLyv5Xgs) + +Click on the **Take Action** button available at the bottom of the page. Click on the **Edit** button. Change any details in the form as required. + +### **Field Inspector \(FI\)** + +FI is responsible for inspecting and verifying the field details of the property in the application. + +![](https://docs.google.com/drawings/u/0/d/sebiHTPfZebdhOw9dZ7MGqw/image?w=425&h=151&rev=1&ac=1&parent=1q5Qmal_ywLqWn-MBuGYWdfkTLSyN9MnVg4tEXL4D9es) + +**The FI can** + +* [Send applications back to citizens](employee-user-manual.md#send-back-to-citizen) +* [Send back](employee-user-manual.md#send-back) +* [Reject applications](employee-user-manual.md#reject-applications-1) +* [Verify and forward applications](employee-user-manual.md#verify-and-forward-1) +* [Edit applications](employee-user-manual.md#edit-application) + +### **Send Back To Citizen** + +FI sends back the applications to the citizens if some vital information is missing in the application or there is a mistake in the information provided. + +To send applications back to the citizen navigate to the **Home** page. Search for the application you want to verify by entering any of the search parameters. Click on the **Application No.** to open the application. Scroll down the form to review the filled in details. + +![](https://lh3.googleusercontent.com/oocVw_MeILKm1l20nzynbbW01rpxbJuj6--fPme-4uvxYbwCQ3tv2oM36e6Ts4ENjw6z4rODqKhu5i5UXTStSQKt9ktxzaIFcWHNTTiDzmvP8717BIOwlvY76pWVUxGt1Y9SA2r1) + +Click on the **Take Action** button available at the bottom of the page. Click on the **Send Back to Citizen** button. Enter any **Comments** stating why the application is sent back. + +![](https://lh4.googleusercontent.com/QxYlS-XjQVPXT78nQ9YicS7bVuT4xXdPPlAjzEsOQiLo45Mo36gCRDK0Aj5ULXBg4ry0SFkCWmTKRnHvp-zzIGudS648wyHeuXTC2XsiuwJ2fKpa09n4zUn03Ddl_phDSHNfl_P9) + +Click on the **Upload Files** button to upload any files or images in context to the application. Click on the **Send Back to Citizen** button. + +The system displays a success acknowledgement message stating that the application is sent back to the initiator. + +### **Send Back** + +The FI can send back the PT application to the DV if there is any mistake or lapses in the document verification process. + +To send back applications to the DV navigate to the Home page. Search for the application you want to verify by entering any of the search parameters. Click on the **Application No.** to open the application. Scroll down the form to review the filled in details. + +![](https://lh5.googleusercontent.com/CAkPIW393cavBhrnb849mvjo0Lf2P2dPXNA_cNDbMYiu19aca-VA8enxxoPvvujjj68fiQ1riE4g7Z_pRK-IJKDfoeABTLXeL_X0I6hLzGjXGMh4dtEj5SP2zcWS10tWMW9XPFe4) + +Click on the **Take Action** button available at the bottom of the page. Click on the **Send Back** button. + +![](https://lh5.googleusercontent.com/LF0t4mF5vsbIUqjefvG70mcgO1yxgBduldOF7KP1f5Y8HBKBKUMd2xphgRhkMLw2TPcnv_Fg1_pjNgDmn3yy7oyZwLNu1W8D4V7_w5Sc7uj7RqSp5NcOl2UJXCLqQsUupoJWf5fD) + +Select the **Assignee Name** who will be responsible for verifying the application. Enter any **Comments** stating why the application is sent back. Click on the **Upload Files** button to upload any files or images in context. Click on the **Send Back** button. + +The application is assigned back to the selected assignee for verification of documents. + +### **Reject Applications** + +Property tax applications are rejected if the supporting documents uploaded by the applicant fails to comply with the license requirements or the details provided in the form are incorrect. + +To reject applications navigate to the **Home** page. Search for the application you want to verify by entering any of the search parameters. Click on the **Application No.** to open the application. Scroll down the form to review the filled in details. + +![](https://lh3.googleusercontent.com/e1R1lyArskwD4OY6fvNVXswWI5s3LygDHGH_ceBpKNJ3lYx822PNy-K56cLCJaqYkhy9kfrIqDoMwUrERZt5h3eNVgD63QvzD2eJEl_ugFAiVnzV24tgDii5pfaJ4pJYX5WT1IXw) + +Click on the **Take Action** button available at the bottom of the page. Click on **Reject**. + +![](https://lh6.googleusercontent.com/UqUs5TKUHCy5GY8M4qplD0yGjWMTt2KaudLcfNIm9fecYlJeD9Elirxvgq7SPMBgxFzYD2B_ud-fDvxJhRUnJlqkLBFaIft6L8ELqqQPQE4aGtOFulWVeOsLQucDYeYFTZOBlbYI) + +Enter your **Comments** to state the reason for rejection. Click on the **Upload Files** button to upload any supporting documents to validate the rejection. Click on the **Reject** button. + +The applicant will receive a rejection notification on his mobile number or email address. + +### **Verify and Forward** + +The FI verifies and forwards the property applications to the Approver if the information and documents provided by the applicant are correct. + +To verify and forward the application navigate to the **Home** page. Search for the application you want to verify by entering any of the search parameters. Click on the **Application No.** to open the application. Scroll down the form to review the filled in details. + +![](https://lh4.googleusercontent.com/L54G0ik5rYE3dKBIS3LPBpSSknbWRWQ_c5zlI4wKLLPOnUa-YBPbD02Bp8Xw0OXbjpzOmv2IVym8wgzDqRtVAVFYkwpVIlpHbDnvVCKIpIGFbns4_nB2bSHDl0McSOovo2ZF4sFi) + +Click on the **Take Action** button available at the bottom of the page. Click on the **Verify and Forward** button. Select the relevant **Assignee Name** from the list of available employees for subsequent processing. + +![](https://lh4.googleusercontent.com/gO3C_nMkBmlMkAhsF8cDfgeoIU7UTUBwwGoAqax7y4pzrRWxpCzt33jx7zqFYSGXBVFIqJ067GS0tyv6RlJYt91VDdKe3nYGS65ia7ZOz-pLuKoOnXOlL9D52fvpeakS7HfwGZa2) + +Enter any additional information in the **Comments** field in context to the application for the assignee’s knowledge. Click on **Upload Files** to upload any supporting documents for the application. Click on the **Verify and Forward** button. + +The property application is assigned to the selected assignee for subsequent processing. + +### **Approver** + +The Approver is responsible for the final approval of the PT application. + +![](https://docs.google.com/drawings/u/0/d/sPGS5RZdl0H86fBMJ49Dn8g/image?w=425&h=138&rev=1&ac=1&parent=1q5Qmal_ywLqWn-MBuGYWdfkTLSyN9MnVg4tEXL4D9es) + +**The Approver can** + +* [Send applications back to field inspectors](employee-user-manual.md#send-back-1) +* [Reject applications](employee-user-manual.md#reject-applications-2) +* [Approve applications](employee-user-manual.md#approve-applications) + +### **Send Back** + +The Approver can send back the property applications to the FI or DV if there is any mistake or lapses in the document verification process. + +To send back applications to the DV or FI navigate to the **Home** page. Search for the application you want to verify by entering any of the search parameters. Click on the **Application No.** to open the application. Scroll down the form to review the filled in details. + +![](https://lh4.googleusercontent.com/zDdpBxKH3znbdKcuRFQHmBGXcpsvWs8Udbs2RBNtVger_uQ7DsXXx0Bh3SMumttLVlTstqZPrYIqgRG2ehB6BWTe4TzuYXSQc_VBn7RZUD7C_YlevcWHwSBWkJQqocZF-EJzJCX0) + +Click on the **Take Action** button available at the bottom of the page. Click on the **Send Back** button. + +![](https://lh5.googleusercontent.com/LF0t4mF5vsbIUqjefvG70mcgO1yxgBduldOF7KP1f5Y8HBKBKUMd2xphgRhkMLw2TPcnv_Fg1_pjNgDmn3yy7oyZwLNu1W8D4V7_w5Sc7uj7RqSp5NcOl2UJXCLqQsUupoJWf5fD) + +Select the **Assignee Name** who will be responsible for verifying the application. Enter any **Comments** stating why the application is sent back. Click on the **Upload Files** button to upload any files or images in context. Click on the **Send Back** button. + +The application is assigned back to the selected assignee for verification of application. + +### **Reject Applications** + +Property applications are rejected if the supporting documents uploaded by the applicant fails to comply with the regulatory requirements or the details provided in the form are incorrect. + +To reject applications navigate to the Home page. Search for the application you want to verify by entering any of the search parameters. Click on the **Application No.** to open the application. Scroll down the form to review the filled in details. + +![](https://lh4.googleusercontent.com/l73mJXkfayKQ2EQcFw72Y33KMvJuItBWV3OAzoEDA5-O614rNzaIJue9ZX7lYr5P3Jk9GZnCB0cfsc2w1swqgGxu11q0wE7KRij4cd2NavsU6Os8sMGDx1IkcdUlG2UJs7RXWbWQ) + +Click on the **Take Action** button available at the bottom of the page. Click on **Reject**. + +![](https://lh6.googleusercontent.com/UqUs5TKUHCy5GY8M4qplD0yGjWMTt2KaudLcfNIm9fecYlJeD9Elirxvgq7SPMBgxFzYD2B_ud-fDvxJhRUnJlqkLBFaIft6L8ELqqQPQE4aGtOFulWVeOsLQucDYeYFTZOBlbYI) + +Enter your **Comments** to state the reason for rejection. Click on the **Upload Files** button to upload any supporting documents to validate the rejection. Click on the **Reject** button. + +The applicant will receive a rejection notification on his mobile number or email address. + +### **Approve Applications** + +The Approver signs off the PT application once the information and documents provided by the applicant are found correct. + +To approve the application navigate to the Home page. Search for the application you want to verify by entering any of the search parameters. Click on the **Application No.** to open the application. Scroll down the form to review the filled in details. + +![](https://lh6.googleusercontent.com/79QnqnrTlcpv9Injybe0v_8Wgo9dVvwKFFX_3DyG1yqM6GV1obgv7lUks5nZ-ZPWltD3ps7Ar6eAPpPhgcydtImjCUXOgmLoPoIFj_xbtOkPV-7KaykycnArmvBFvPLGA3YxGN01) + +Click on the **Take Action** button available at the bottom of the page. Click on the **Approve** button. + +![](https://lh4.googleusercontent.com/FK9qMm0lMtuirKg8IaqBLn1IdKIYJ4bkcbpOSRUEmTD5ZoOaP3KQLKxeUZiDnEXyDh4xfBP_5FYVd-OK8U8NeKDMcJlSectELXGQbbiDQICl0cdIXWVJHpUMSwokE-mNwAwn7OnX) + +Select the relevant **Assignee Name** from the list of available employees for subsequent processing. Enter any additional information in the **Comments** field in context to the application for the assignee’s knowledge. Click on **Upload Files** to upload any supporting documents for the application. Click on the **Approve** button. + +The property application is approved. + diff --git a/modules-features/user-guides/guide-tl.md b/modules-features/user-guides/guide-tl.md deleted file mode 100644 index 17e7ef07..00000000 --- a/modules-features/user-guides/guide-tl.md +++ /dev/null @@ -1,749 +0,0 @@ -# Trade License - -### **Introduction to Trade License** - -The Trade License \(TL\) module offers the citizens and governance bodies a convenient and transparent means of processing trade licenses. Trade license is the permission issued by the local governing bodies to carry on specified business or trading activity within the authorized area. It is a mandatory document required to run a business or commercial activity of any type. - - -The TL module enables citizens to apply for trade licenses or renew existing licenses online. It facilitates the governing bodies to validate and approve the license applications. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
User Role - Scope of Action - Role Description -
Citizen - -

Apply for Trade License

-

Pay for license

-

Track status of license

-

Download payment receipts

-
Individuals and business entities
Counter Employee (CE) - -

Apply for a Trade License

-

Complete the Payment for Trade License

-

Keep a track of the status of the Trade License

-

Download/Print payment receipts, applications, TL certificate

-
Counter employees who assist citizens and file new trade license applications - or renewal applications on their behalf
Document Verifier (DV) - -

Verify and forward

-

Send Back

-

Edit

-
Employees responsible for verifying the supporting documents submitted - by citizens for new trade license or renewal of existing licenses
Field Inspector (FI) - -

Verify and forward

-

Send Back

-

Reject

-

Edit

-
Employees who go on to the field (i.e. location of trade) and physically - verifies the information provided by the applicant is correct, checks safety - precaution followed by the trade owner
Approver - -

Approve

-

Send Back

-

Reject

-

Cancel TL

-
The employee who has the final authority to approve or reject the application
- -\*\*\*\* - -### **Using TL** - -This section guides you through the details of using the TL module for each role. Click on the relevant role below to learn more about how to use the TL system. - -1. Citizens -2. Counter Employee \(CE\) -3. Document Verifier \(DV\) -4. Field Inspector \(FI\) -5. Approver - - - - -#### **Citizens and CE** - -Citizens represent individuals, communities, or business entities who are the system end-users. The TL module allows business owners to apply for a trade license online or even apply for renewal of an existing license. - -The citizen can also approach the Counter Employee \(CE\) to submit new TL applications or raise renewal requests for existing licenses. - -![](https://docs.google.com/drawings/u/0/d/sd-LrBh27pu0GXrg1gv1_aQ/image?w=425&h=384&rev=143&ac=1&parent=1-UsBUntevcj1rpVyD7UPVKYh53dRt8xSD5x658AZMCk) - -**The Citizen or CE role can -** - -* Apply for new TL -* Renew trade license -* Search application -* Pay license fee -* Download payment receipts, license certificates, or applications - -**Apply For New TL** - -Citizens or CE can apply for a new trade license through the DIGIT web portal or the DIGIT mobile app. - - -To apply for new TL - -1. Click on the Trade License card available in the Citizen Services section of the DIGIT home page. - -![](https://docs.google.com/drawings/u/0/d/sqRD79LrdfKCRrJCRFl-PzQ/image?w=624&h=290&rev=3&ac=1&parent=1-UsBUntevcj1rpVyD7UPVKYh53dRt8xSD5x658AZMCk) - -1. Click on the New Application button on the screen. This will open the TL application form page. - -![](https://lh5.googleusercontent.com/A3Rg9bbLpb5Zf35k82PPbfzT2b4anONcRpIiAr2jGxFnaHCsB4Dv9AO4AUodRfuPATb5TCwbN6aXHwy9DyyI6DOC90dOPqU4MT8AGLHV4g1CMqV8MmZFAOK0sJdWcgmBmmtif-mT) - -1. The system will display the Required Documents - Trade License list. -2. Click on the Print button to get a hard copy of the documents list for reference. -3. Click on the Apply button to proceed with the trade license application. -4. The form sections are available on the top of the page. - -![](https://lh4.googleusercontent.com/jCbqoAKwYAT24VwwxRvUyVv9sExIHhtCOc_nxSsuip2Gfo_k_6U3ZDZggXnIlxKvwaClsdmg4yIpz7Q5Qkupl-KErALuQbViajO5KVkWKfcdaWCJ5HqmFvP1I8iz_IrwqqPikVO1) - -1. The New Application form page contains various sub-sections - 1. Trade Details - 2. Owner Details - 3. Documents - 4. Summary -2. The system will display the Trade Details page. -3. The page contains 4 panels - Trade Details, Trade Unit, Accessories, and Trade Location Details. -4. In the Trade Details panel, enter the following details - - -![](https://lh4.googleusercontent.com/BvUqG-3XQRa-IDpwGvgnBDZvBsDOfnzk5Up5694u7J6oO6Sk61W-fvKNz3BBCsOIoxiq8FagRF9odjhxjYlKVN7-OkkSnL7a7fk4u5r9jNFm5SgAVYmbAFl2aNRAP0PblYg1dnXn) - -1. 1. Select the applicable Financial Year. - 2. Select the relevant License Type from the drop-down list. - 3. Enter the Name of Trade. - 4. Select the appropriate Structure Type. - 5. Select the appropriate Structure Sub Type. - 6. Enter the Trade Commencement Date. - 7. Enter the Trade GST No. if applicable. - 8. Enter the Operational Area \(Sq Ft\). - 9. Enter the Number of Employees for the listed trade. -2. In the Trade Unit panel, provide the following details - - -![](https://lh5.googleusercontent.com/jieF4BEmQTqs0CuITSsKLLtQqKPbLmRAKyGXNxYy5DVjKjOPmL1-YVXJ8o-s1YgKUyeMl4j02gWR91EXNIWz-L-ENFrFsEPUt8pyGd4meOyMXVniFuM4DDt5CMUr_sM-01GmhYcA) - -1. 1. Select the applicable Trade Category. - 2. Select the relevant Trade Type. - 3. Select the relevant Trade Sub Type. - 4. Enter the applicable UOM \(Unit of Measurement\). - 5. Enter the UOM value. - 6. Click on the ![](https://lh5.googleusercontent.com/9i0yqS0fLNvPb0l1gizOYKxicZ5sT5BtAOT4aESaCW7d4Xj8MWRuof_nI3hH4d5LjAffv-Fd8qzqa3c5GIn_XiVQXGbfR1a7o75-jvIPeh7ZhRzMMKGmGJnTTyVBBkq32j_zWcNr) icon to add more trade units. -2. In the Accessories panel, enter the following details - - -![](https://lh4.googleusercontent.com/34HRkcaaNf3tasjBSWz0gDAvNOsMwrluqzQIXRgtJJhPNfSZzAQZJe-9wK5zfwWV9sXAeItEkTuOqYx6DptToVqId8wTrBiIBT5dblI105X4nv9MMQZwMhOn5Ua146IUSECZ-pgP) - -1. 1. Select the applicable Accessories for the listed trade. - 2. Select the corresponding UOM for the selected accessories. - 3. Enter the UOM value. - 4. Enter the Accessory Count. - 5. Click on the ![](https://lh4.googleusercontent.com/74xRfp424rm8Ae4GQHxb2UgVT2DXnOwATZ5JMMtUP2Cf8q8sJwzOf7dyuXw7Ldq8OXD2r7_R0L9r7ju3m4xlsw4gVuiS_PGzsBWCs3ERQSTQ9UASQvG1pzhBtbtgAK9H8TIjIJZj) icon to add more accessories. -2. Enter the following details in the Trade Location Details panel - - -![](https://lh5.googleusercontent.com/22cP9lB0x6WO-kb7drIYKo8UH0cRe89sugBUKimIyY6C-ux9T3Evc2leG7yetW9VgtR9KRRqhsOCUQsl-WuF_sI3K1pvK25ebU0C6Hu7HeB7MlNLr9RWLg7hZUY5_k2kjHJYoJKm) - -1. 1. Select the City. The system displays the registered city by default. - 2. Enter the Property ID/UID for the listed premises. - 3. Enter the Door/House No. - 4. Enter the Building/Colony Name. - 5. Enter the Street Name. - 6. Enter Mohalla. - 7. Enter the Pincode. - 8. Click on the map icon to provide the GIS coordinates for the location. - 9. Enter the Electricity Connection No. for the listed premise. -2. Click on the Next Step button to move to the Owner Details section. - -![](https://lh4.googleusercontent.com/aiYy62Wj7aWu6vCsDp1-tUIzXHeAXUtQ4Z1_-vr45tUfwGyub_z_l3avqFzQrfTDWNC3uCQsFtZX256S9PlSq4pqsR6nhGROWtxely0tADmx2x4vyHLRMHzSNrI3L6dBUapzco94) - -![](https://lh4.googleusercontent.com/vWe3mOhqQRrF8ypAP0rSUrzF0qFFb3wI1XrynVsba5yHgrGRWeD61U_y9E9sfrc1lTSZITIUFjKV1MvHqynx26k25VxU2xrcY7f_fkJM6iKw0O6f9aiK8ZFVpP9JQKSFLWa1mi2g) - -1. Select the Type of Ownership. -2. Select the Type of Sub-Ownership. -3. Provide the following information in the Owner Information section. - 1. Enter the owner Mobile No. - 2. Enter the owner Name. - 3. Enter the owner’s Father/Husband’s Name. - 4. Check Father or Husband to indicate the relationship of the given name with the owner. - 5. Check the appropriate Gender of the owner. - 6. Enter the Date of Birth of the owner. - 7. Enter the owner’s Email ID. - 8. Enter the owner’s PAN No. - 9. Enter the owner’s Correspondence Address. - 10. Select the applicable Special Owner Category from the drop down list. -4. Click on the Next Step button to move to the Documents section. - -![](https://lh3.googleusercontent.com/QDdw5Mji5A5fRYLf_Ut599jJ-BfdpFrkI3gBYhNpvwcGSn2Ml-N8s4FC_xpT_WeolRsDpj4sW8xutmm88cGlhvOm4wm8nM8nbStuhEdxSe3wZQnTTAoYR49nE6CdPwf7KD8LuB1K) - -1. Click on the Upload File button to browse and upload the required documents for processing the TL. -2. Click on the Next Step button once all the documents are uploaded. - -![](https://lh4.googleusercontent.com/7CPEGm70rvdYtSpgqOuGN9jaeanpSpSiXZGrHUWVLQPIxz9lOj6Szf-_MQhwdqbEjY9sbCd01_kmOrJDczXInyQoXZOdBASaKfOnyYfGwpS3wECURqkcNTd1iP57SF-qW7sQ0lmQ) - -1. The Application Summary page provides all the information filled in by the applicant. -2. The Application Summary panel on top of the page provides the Trade License Tax and Total Amount details. This amount has to be paid by the applicant. -3. Click on the View Breakup button to fetch the fee details. - -![](https://lh4.googleusercontent.com/kJ8GioEmvY_9VUxiuO4uHivXu1sERZt-wuXQd_GB78SOwabFUoZU8ZqBowf82F6dfauTjLjUNuUtPPzggKkBdFPTYdkR_ZtFFkCWP2ZzKxMuiUUEiHvcKk0qXrNfm69sdwiHUdkT) - -1. Scroll down the page to view the filled in details. -2. Click on the Edit icon ![](https://lh5.googleusercontent.com/P9dpjpL2J0qb1z2Oa00E3Lq5W3mDIEt1g_wZxKbmNtzGBjedDbtnb464cQz0ALsHbiVX8mQpO5-Ixd80bm0oJ9tygd4yJIqh1GYXRVDwhb4UFf7C1DrlcJxTnDwmRoj_9VPQWDx5) to make any changes to the application. -3. Click on the Submit Application button. -4. The system displays the Application Submitted Successfully acknowledgement message. - -![](https://lh3.googleusercontent.com/uZPCH59BeObRDHvahjkkzSG4WsvHUrR8vagS3dyK8OnHPbkgLRnVEyAwLcU1tWn8rcgj6DXEv_bXJuvThSfQCK0eOvH-U0bkPJm-J8m-VzdvHSGuThGdn9PpVDu-FQ9ELm9sD0VF) - -1. The Trade License Application No. is available along with this message. -2. Click on the Download button to download a copy of the application. -3. Click on the Print button to print the application. - -**Renew Trade License** - -Citizens can renew their existing trade applications on the DIGIT portal. CE can also apply for TL renewal on behalf of the citizens. -**** - -**To renew TL** - -1. Navigate to the home page and then click on the Trade License option. -2. Click on My Applications. -3. Click on the Renew Now button on the specific license. - -![](https://lh4.googleusercontent.com/AIdYdmPsMws5vQ0nsoUXcVeTlJI3vO1zx_8AvI0Ckuv64trW6P1usBonC-boIhe5DHuNtkQGlFGvEJlArdp9N7ZS295blqKy2QWV5YzC-ApOYguMEHkrGKSTCtPXctba85tjJ65x) - -1. The system will display the license details. -2. Click on the Take Action button. -3. Click on the Edit button to make any changes to the existing license details. -4. Click on the Submit for Renewal button to apply for renewal. - -![](https://lh3.googleusercontent.com/GG25eCOAdnLBxLCt8d7NRr8BHP1Bm5QVqMnH8R50yTEZ3gyGSQ9nv2aBLCJhEBlAhqGPUD86dqzjuoGsSiKtbz-rdijYFG1nG_L2Y9JQJuQ3m1i6h7zuahwBLrooyTVzDt4SWVAU) - -The Trade License is submitted for renewal. - -**Search Application** - -To search for submitted application or track the status of submitted applications - -1. **Navigate to the Trade License home page.** - -![](https://lh6.googleusercontent.com/C38Srk3CObmsrw8AFrii-ZKAdW4uJnEGC9JI-MFgE9rJQMs5Wl6PMnGcUgnmxwz_td_FkZhj_rfP1vLhaE5an-_GmnQguqslAUBpX_RGtUhILHpb9IcmG-1dN8HF9f6hLkojdGDw) - -1. Enter at least one of the listed search parameters in the Search panel. - -The listed search parameters include - -* Application No. -* Trade License No. -* Owner Mobile No. -* Application Type -* From Date -* To Date -* Application Status - -1. Click on the Search button. -2. The system displays the records matching the listed parameter. - -![](https://lh5.googleusercontent.com/E4f-9yWZZUQuUAiLF9F3vR9WUXRU3KMsIwsIsMLOw9-tSXWXi-dZ805OxAqqBzO8ddThJYd4X47ys4qNcE1FZ87HIIZqPCVtZtKZtcc6WiiA1trFm8YtGkYTPKn_zTna45jH8rEq) - -1. Click on the Application No. link. -2. The screen displays the application details. -3. Scroll down the page to view the details. - -![](https://lh5.googleusercontent.com/wwssUJSEF6Y2Zvocm3RDS3kt_btJzwXorsOSM5gW6VNx3S1ltAxXkVSmiHYghwi0HwtLeJ9vIOZdVMPGxgDn2D37JGAUGAh7BV90TydWxZOVVxGc3fpw-K0aNMc1hBYAQt5cJ4bh) - -1. Click on the Take Action button and click on Edit option to edit the form details. -2. The Task Status panel on the top of the Application displays the current status of the application. - -![](https://lh6.googleusercontent.com/IBncnMqelOyxSodY9RBH6Nr9fRReVSEu6s-ODOr_Nonc25ack5G8GZ_4ZBu_mnmqXVTwTngE98PoW6ozXc9uaXFSTLFCEPKMncGYeXY6a5id3V_pSEIvKOt9otoV1GGRpO3VVK_D) - -1. Click on the View History button on the top right corner of the Task Status panel to view the actions taken on the application till date. - -![](https://lh5.googleusercontent.com/rn3oh8pUdYWR5c4rlw3z93rxTgon-3wnJ7bjjdOedKNLeTinrywQVZNS57uBVnsVu8MxBEV7IIQ3WGn4K4-zjMRCPNxvOOlwpGRcHFaZ_x34FIjV2XQeFMhoBly3kgo740vdrzL9) - -**Pay Trade License Fee** - -Applicants have to pay the license fee once the TL application is approved. The application status changes to Pending for Payment. - - -To make payment for trade license fee - -1. Click on your Application No. to open the application. -2. Click on the Take Action button. - -![](https://docs.google.com/drawings/u/0/d/sbOzlGK9JL1r6C9jDKtSgCw/image?w=624&h=337&rev=10&ac=1&parent=1-UsBUntevcj1rpVyD7UPVKYh53dRt8xSD5x658AZMCk) - -![](https://lh3.googleusercontent.com/gsartsRkbToFx3BM4IrS5YY6eYSJr_r4KH4Eij-f-kOa5-RYJCWWa8_EsOSmQ8ICx3LRfOF8ZcXebgjpTrti-YD5XiqAYoegsVJgfPKYytV1GB6oqSt5JhRyplQM3iOx6zciJcj0) - -1. Click on Pay. -2. Enter the payment details. The system allows you to pay by cash, cheque, or credit/debit card. -3. Click on the Cash, Cheque, Credit/Debit Card tab depending on the preferred payment method. - -![](https://lh5.googleusercontent.com/cLCAGQooKpMNjnUkZfqoPWaP10xsEZhusPL5RO3pfnrCNAP3Jo_O_P6eNb0maLL1-zSRAv_hxYXsp4lMI_ay3rH-wMtQ0UrEqhiMwhRyAchg-FpGdI1MlXcYnI_-yNU3YsZ1f1SY) - -1. Enter payment details as requested on the screen. -2. Click on the Generate Receipt button to confirm the payment. -3. The screen displays the success acknowledgement message along with the Payment Receipt No. - -![](https://lh4.googleusercontent.com/c70FyxfyFdtdTN_SI1sYmn8RHE918ep4SGojTM7TResyC_Qwn0qHosDTgigr1KY5_zVogW0yyS48VtZsmiYD9NsAqXyrY2T6bLRI8tjYFu7FUW8jKv8ljRziHjXVFZj3ccX5zVtB) - -1. Once the payment is complete the Trade License Certificate is issued. -2. Click on the Download or Print button to download or print the Payment Receipt and Trade License Certificate. - -#### **Document Verifier \(DV\)** - -DV is responsible for verifying the supporting documents uploaded by the applicants or the counter employee on behalf of the applicant. - -![](https://docs.google.com/drawings/u/0/d/sHb-DQ3oZUHrcGIVdXxTV_w/image?w=425&h=141&rev=129&ac=1&parent=1-UsBUntevcj1rpVyD7UPVKYh53dRt8xSD5x658AZMCk) - -The DV can - -* Reject applications -* Verify and forward applications -* Edit applications - -**Reject Applications** - -Trade license applications are rejected if the supporting documents uploaded by the applicant fails to comply with the license requirements or the details provided in the form are incorrect. - - -To reject applications - -1. Navigate to the Home page. -2. Search for the application you want to verify by entering any of the search parameters. -3. Click on the Application No. to open the application. -4. Scroll down the form to review the filled in details. - -![](https://lh3.googleusercontent.com/k9ywG2byZr9A0UBWORXbc8e_RFF6LbomRbJtdCjG047zUMV16Cp01ycuojk2hLDh5VZ5yy4UPi6u35OWMZPojxN3XxDPn0BoMgID_npnAYu5TeMj25w59VUOwebm9vPwD0zfje2Q) - -1. Click on the Take Action button available at the bottom of the page. -2. Click on Reject. - -![](https://lh3.googleusercontent.com/pTI4gYhHJyJIThqmbv9Md8IP9AysBon3CPlExgjNc7FQiB6ZWaUU_mNcvlVezzsgvn56H7ejalbHNB9BzOGEragTvPv7aZn9fkPhrgD3_xYGrQP2Nc0a3MrLTcIGS3y9izcH3hrv) - -1. Enter your Comments to state the reason for rejection. -2. Click on the Upload Files button to upload any supporting documents to validate the rejection. -3. Click on the Reject button. - -The applicant will receive a rejection notification on his mobile number or email address. - -**Verify and Forward** - -The DV verifies and forwards the TL application to the Field Inspector if the DV finds all information and documents provided by the applicant correct. - - -To verify and forward the application - -1. Navigate to the Home page. -2. Search for the application you want to verify by entering any of the search parameters. -3. Click on the Application No. to open the application. -4. Scroll down the form to review the filled in details. - -![](https://lh3.googleusercontent.com/k9ywG2byZr9A0UBWORXbc8e_RFF6LbomRbJtdCjG047zUMV16Cp01ycuojk2hLDh5VZ5yy4UPi6u35OWMZPojxN3XxDPn0BoMgID_npnAYu5TeMj25w59VUOwebm9vPwD0zfje2Q) - -1. Click on the Take Action button available at the bottom of the page. -2. Click on the Verify and Forward button. -3. Select the relevant Assignee Name from the list of available employees for subsequent processing. - -![](https://lh5.googleusercontent.com/IsHugpgvdIt1iM-eKm5f_dYu73pMDragCPPJ8hKIdr6mdO7TxxDDiKZPvb3JAZTCpsA-2V9cD3v8WOKpiksP1zjYsSd6h-FE96nvVjAFehL0-0dKx9m43QQQJqVAK4ZQiiQeWtZO) - -1. Enter any additional information in the Comments field in context to the application for the assignee’s knowledge. -2. Click on Upload Files to upload any supporting documents for the application. -3. Click on the Verify and Forward button. - -The TL application is assigned to the selected Assignee for subsequent processing. -**** - -**Edit Application** - -1. Navigate to the Home page. -2. Search for the application you want to verify by entering any of the search parameters. -3. Click on the Application No. to open the application. -4. Scroll down the form to review the filled in details. - -![](https://lh3.googleusercontent.com/k9ywG2byZr9A0UBWORXbc8e_RFF6LbomRbJtdCjG047zUMV16Cp01ycuojk2hLDh5VZ5yy4UPi6u35OWMZPojxN3XxDPn0BoMgID_npnAYu5TeMj25w59VUOwebm9vPwD0zfje2Q) - -1. Click on the Take Action button available at the bottom of the page. -2. Click on the Edit button. -3. Change any details in the form as required. - -#### **Field Inspector \(FI\)** - -FI is responsible for verifying the field details provided by the applicants. - -![](https://docs.google.com/drawings/u/0/d/soGbaGKJdoR_-YspaHLpHAQ/image?w=425&h=151&rev=66&ac=1&parent=1-UsBUntevcj1rpVyD7UPVKYh53dRt8xSD5x658AZMCk) - -The FI can - -* Send applications back to citizens -* Send back -* Reject applications -* Verify and forward applications -* Edit applications - -**Send Back To Citizen** - -FI sends back the applications to the citizens if some vital information is missing in the application or there is a mistake in the information provided. - - - -**To send applications back to citizen** - -1. Navigate to the Home page. -2. Search for the application you want to verify by entering any of the search parameters. -3. Click on the Application No. to open the application. -4. Scroll down the form to review the filled in details. - -![](https://lh3.googleusercontent.com/xH0mXNzooZVSoqU2_njKX_yJwn8pBg6N3FvBE7B4oeDDA85_8vKsjs2YMYayw4dxMJE1-MzxA5SMxZXzvDV0rXPTBrkWFjqy8QgIICDjj-zhsr37rfD4WTuv1W7QASfQ5AkUSHCj) - -1. Click on the Take Action button available at the bottom of the page. -2. Click on the Send Back to Citizen button. -3. Enter any Comments stating why the application is sent back. - -![](https://lh4.googleusercontent.com/Rpu_lvPrtDuuPhK_g-nCP0S56YQoTJf9Qk3DZ6_F0wgV-_1Pm1WkM20N-Tvb14J3yPtpW9rVZ7NmdcTphksypRlMh0y_jlAmlFqarP-Rgjd4nbQT6MzYcTX60KJsOEAEC5FfLwZe) - -1. Click on the Upload Files button to upload any files or images in context to the application. -2. Click on the Send Back to Citizen button. - -![](https://lh6.googleusercontent.com/ZoBT7h6sAQOEe1GJ1hsKKuDK_Dc1JtegVjY942UxD5I2qsU8ettBKnoBHkhZplBzxVxlQhkWlJwfI9MADf071wid91v4lX6EO44de-JN74lcPyT0-Vy6WZDrIZr1X0LjRUqcD9hu) - -The system displays a success acknowledgement message stating that the application is sent back to the initiator. - -**Send Back** - -The FI can send back the TL application to the DV if there is any mistake or lapses in the document verification process. - - -To send back applications to the DV - -1. Navigate to the Home page. -2. Search for the application you want to verify by entering any of the search parameters. -3. Click on the Application No. to open the application. -4. Scroll down the form to review the filled in details. - -![](https://lh3.googleusercontent.com/xH0mXNzooZVSoqU2_njKX_yJwn8pBg6N3FvBE7B4oeDDA85_8vKsjs2YMYayw4dxMJE1-MzxA5SMxZXzvDV0rXPTBrkWFjqy8QgIICDjj-zhsr37rfD4WTuv1W7QASfQ5AkUSHCj) - -1. Click on the Take Action button available at the bottom of the page. -2. Click on the Send Back button. - -![](https://lh5.googleusercontent.com/3qMBZ_ljMtY2CdQF8xccjDgUKdF4ijZKg5yw37hDiQL1JLx53sK7NtJgCc49nlXS0zh1NCJadz7YQlioaG-TLqcV1qGDv-PBVwJ7fyDc9Lgtcolh0eFD3QwIfhM2JveFkBG8sCHe) - -1. Select the Assignee Name who will be responsible for verifying the application. -2. Enter any Comments stating why the application is sent back. -3. Click on the Upload Files button to upload any files or images in context. -4. Click on the Send Back button. - -The application is assigned back to the selected assignee for verification of documents. -**** - -**Reject Applications** - -Trade license applications are rejected if the supporting documents uploaded by the applicant fails to comply with the license requirements or the details provided in the form are incorrect. -**** - -**To reject applications** - -1. Navigate to the Home page. -2. Search for the application you want to verify by entering any of the search parameters. -3. Click on the Application No. to open the application. -4. Scroll down the form to review the filled in details. - -![](https://lh3.googleusercontent.com/xH0mXNzooZVSoqU2_njKX_yJwn8pBg6N3FvBE7B4oeDDA85_8vKsjs2YMYayw4dxMJE1-MzxA5SMxZXzvDV0rXPTBrkWFjqy8QgIICDjj-zhsr37rfD4WTuv1W7QASfQ5AkUSHCj) - -1. Click on the Take Action button available at the bottom of the page. -2. Click on Reject. - -![](https://lh3.googleusercontent.com/pTI4gYhHJyJIThqmbv9Md8IP9AysBon3CPlExgjNc7FQiB6ZWaUU_mNcvlVezzsgvn56H7ejalbHNB9BzOGEragTvPv7aZn9fkPhrgD3_xYGrQP2Nc0a3MrLTcIGS3y9izcH3hrv) - -1. Enter your Comments to state the reason for rejection. -2. Click on the Upload Files button to upload any supporting documents to validate the rejection. -3. Click on the Reject button. - -The applicant will receive a rejection notification on his mobile number or email address. - -**Verify and Forward** - -The FI verifies and forwards the TL application to the Approver if the information and documents provided by the applicant are correct. - - -To verify and forward the application - -1. Navigate to the Home page. -2. Search for the application you want to verify by entering any of the search parameters. -3. Click on the Application No. to open the application. -4. Scroll down the form to review the filled in details. - -![](https://lh3.googleusercontent.com/xH0mXNzooZVSoqU2_njKX_yJwn8pBg6N3FvBE7B4oeDDA85_8vKsjs2YMYayw4dxMJE1-MzxA5SMxZXzvDV0rXPTBrkWFjqy8QgIICDjj-zhsr37rfD4WTuv1W7QASfQ5AkUSHCj) - -1. Click on the Take Action button available at the bottom of the page. -2. Click on the Verify and Forward button. -3. Select the relevant Assignee Name from the list of available employees for subsequent processing. - -![](https://lh5.googleusercontent.com/IsHugpgvdIt1iM-eKm5f_dYu73pMDragCPPJ8hKIdr6mdO7TxxDDiKZPvb3JAZTCpsA-2V9cD3v8WOKpiksP1zjYsSd6h-FE96nvVjAFehL0-0dKx9m43QQQJqVAK4ZQiiQeWtZO) - -1. Enter any additional information in the Comments field in context to the application for the assignee’s knowledge. -2. Click on Upload Files to upload any supporting documents for the application. -3. Click on the Verify and Forward button. - -The TL application is assigned to the selected Assignee for subsequent processing. - -**Edit Application** - -To make any changes in the application - -1. Navigate to the Home page. -2. Search for the application you want to verify by entering any of the search parameters. -3. Click on the Application No. to open the application. -4. Scroll down the form to review the filled in details. - -![](https://lh3.googleusercontent.com/xH0mXNzooZVSoqU2_njKX_yJwn8pBg6N3FvBE7B4oeDDA85_8vKsjs2YMYayw4dxMJE1-MzxA5SMxZXzvDV0rXPTBrkWFjqy8QgIICDjj-zhsr37rfD4WTuv1W7QASfQ5AkUSHCj) - -1. Click on the Take Action button available at the bottom of the page. -2. Click on the Edit button. -3. Change any details in the form as required. - -#### **Approver** - -Approver is responsible for the final approval of the TL application. - -![](https://docs.google.com/drawings/u/0/d/sIHXqNJly363bzyZmlivJTA/image?w=425&h=138&rev=54&ac=1&parent=1-UsBUntevcj1rpVyD7UPVKYh53dRt8xSD5x658AZMCk) - -The Approver can - -* Send applications back to field inspectors -* Reject applications -* Approve applications - -**Send Back** - -The Approver can send back the TL application to the FI or DV if there is any mistake or lapses in the document verification process. - - -To send back applications to the DV or FI - -1. Navigate to the Home page. -2. Search for the application you want to verify by entering any of the search parameters. -3. Click on the Application No. to open the application. -4. Scroll down the form to review the filled in details. - -![](https://lh3.googleusercontent.com/3XUzXFgcpqv_Dm3Rs6RkZPKXXeQak8J4FdIA6oQ4-VPO-4hgegjgfX7n_C1e4QkjP_T0Gmbz5W9bR3U116ECnJ9x_oNvQry6WZxieNUVo9AITkKQNauQH67-xOwP9utzZ4xHHDd0) - -1. Click on the Take Action button available at the bottom of the page. -2. Click on the Send Back button. - -![](https://lh5.googleusercontent.com/3qMBZ_ljMtY2CdQF8xccjDgUKdF4ijZKg5yw37hDiQL1JLx53sK7NtJgCc49nlXS0zh1NCJadz7YQlioaG-TLqcV1qGDv-PBVwJ7fyDc9Lgtcolh0eFD3QwIfhM2JveFkBG8sCHe) - -1. Select the Assignee Name who will be responsible for verifying the application. -2. Enter any Comments stating why the application is sent back. -3. Click on the Upload Files button to upload any files or images in context. -4. Click on the Send Back button. - -The application is assigned back to the selected assignee for verification of application. - - -**Reject Applications** - -Trade license applications are rejected if the supporting documents uploaded by the applicant fails to comply with the license requirements or the details provided in the form are incorrect. - - -To reject applications - -1. Navigate to the Home page. -2. Search for the application you want to verify by entering any of the search parameters. -3. Click on the Application No. to open the application. -4. Scroll down the form to review the filled in details. - -![](https://lh3.googleusercontent.com/3XUzXFgcpqv_Dm3Rs6RkZPKXXeQak8J4FdIA6oQ4-VPO-4hgegjgfX7n_C1e4QkjP_T0Gmbz5W9bR3U116ECnJ9x_oNvQry6WZxieNUVo9AITkKQNauQH67-xOwP9utzZ4xHHDd0) - -1. Click on the Take Action button available at the bottom of the page. -2. Click on Reject. - -![](https://lh3.googleusercontent.com/pTI4gYhHJyJIThqmbv9Md8IP9AysBon3CPlExgjNc7FQiB6ZWaUU_mNcvlVezzsgvn56H7ejalbHNB9BzOGEragTvPv7aZn9fkPhrgD3_xYGrQP2Nc0a3MrLTcIGS3y9izcH3hrv) - -1. Enter your Comments to state the reason for rejection. -2. Click on the Upload Files button to upload any supporting documents to validate the rejection. -3. Click on the Reject button. - -The applicant will receive a rejection notification on his mobile number or email address. - -**Approve Applications** - -The Approver signs off the TL application once the information and documents provided by the applicant are found correct. The TL Certificate is issued once the application is approved. - - -To approve the application - -1. Navigate to the Home page. -2. Search for the application you want to verify by entering any of the search parameters. -3. Click on the Application No. to open the application. -4. Scroll down the form to review the filled in details. - -![](https://lh3.googleusercontent.com/3XUzXFgcpqv_Dm3Rs6RkZPKXXeQak8J4FdIA6oQ4-VPO-4hgegjgfX7n_C1e4QkjP_T0Gmbz5W9bR3U116ECnJ9x_oNvQry6WZxieNUVo9AITkKQNauQH67-xOwP9utzZ4xHHDd0) - -1. Click on the Take Action button available at the bottom of the page. -2. Click on the Approve button. - -![](https://lh3.googleusercontent.com/EX3XnL1OBk3bzR-0vIfr7mK6d_Xr9FkUAG5ZKMC-nnEMTnisyhWOuL65N01tC98yA3on9jzzIUIrwWEGNiyevJQDiqkcVjzZf87IK01eulmgXcQcYBkbkRAlOexQ7uk_KD0SqlWx) - -1. Select the relevant Assignee Name from the list of available employees for subsequent processing. -2. Enter any additional information in the Comments field in context to the application for the assignee’s knowledge. -3. Click on Upload Files to upload any supporting documents for the application. -4. Click on the Approve button. - -The TL application is approved and the TL Certificate is issued to the applicant. - -Click on the Download or Print button to download or print the TL Certificate. - -### **Creating TL Reports** - -Reports are printable or downloadable documents that offer insights and information linked to selected performance parameters. The TL reports features allow system users to generate dynamic tables that make the information easy to comprehend. - - -Report types in the TL module are categorized by distinctive roles. So, each user can generate reports that offer information and insights specific to their role requirements. - - -The table below lists the various reports available to different user roles. - - - - - - - - - - - - - - - - - - - - - - - - - - - -
User Role - Report Types -
CE - -
    -
  1. Employee Report
  2. -
-
DV - -
    -
  1. Trade License Registry Report
  2. -
  3. Trade Wise Collection Report
  4. -
  5. Trade License Application Status
  6. -
  7. State Level Trade License Registry
  8. -
  9. State Level Trade Wise Collection
  10. -
  11. State Level Status
  12. -
-
FI - -
    -
  1. Trade License Registry Report
  2. -
  3. Trade Wise Collection Report
  4. -
  5. Trade License Application Status
  6. -
  7. State Level Trade License Registry
  8. -
  9. State Level Trade Wise Collection
  10. -
  11. State Level Status
  12. -
-
APPROVER - -
    -
  1. Trade License Registry Report
  2. -
  3. Trade Wise Collection Report
  4. -
  5. Trade License Application Status
  6. -
  7. State Level Trade License Registry
  8. -
  9. State Level Trade Wise Collection
  10. -
  11. State Level Status
  12. -
-
- -#### **Generating Reports** - -To generate reports - -1. Navigate to Trade License Indicators menu option in the sidebar. -2. Click on the relevant report type. -3. Select the From Date and To Date range in the Modify Report by Date Range tab. - -![](https://lh6.googleusercontent.com/G_UyRKrmk8ZXmvHk1bDHNdw1d6HngoiPKF0Xsp6-wiO9wAnShG3bVemWr4mkwdJDWPiaEDbUWKtm65Hceh9zyXovA0VboubU7IShU8TL70AtlWao4TOStr302qyHkqAmLwpugTsZ) - -1. Click on the Search button. -2. The report for the defined period is generated and displayed on the screen. - -#### **Navigating Reports** - -To navigate through the report - -1. Click on the Previous or Next button at the bottom right corner of the report to navigate to the next page or previous page of the report. - -![](https://lh5.googleusercontent.com/pdCg4aEN6KY5W_65EoQVDFddgQBRGDzRe8K36gfe8KTOIGMq7sdANY4WxPEc9m6blV2wSXugyV3zYu-dS6PizNcOs8l6UtOpOAAHrFiZCWOtotRo_g3-58Gcd9mDmkHwJnsY9LVI) - -1. Enter the number of data rows you wish to view on each page of the report in the Show Entries box available in the top left side of the report. For instance, enter 20 if you want to view 20 records on each page. - -![](https://lh4.googleusercontent.com/5iXPja43q2uw3bbJuZI3b4_iLl8W_SmxZy4yUy4XkVW8NWeex68klatGtYOaOM3DwhLqWLKsMGcKddln1Op2Hk84rgUa8KmRarm9homu_fkGiPL218HMT5c2cvlTHsKEjlQAkYXe) - -1. **Enter a search keyword in the Search bar to search for specific data** records in the report. - -![](https://lh3.googleusercontent.com/ZWdHTvRe-V0GbG6ALIseQuKr1JR-_thguE1XiSkfzxFzYJp5cFRnURMZzwSMyviWVzYoC2Ow0MdZM58bnwqclqwCZyXJ4FSmT6qOByK4epXDvwEJMuf8roSCkWeWHQaxsQ0OXYeb) Click on the Collapse button at the bottom left corner of the screen to minimize the sidebar. This will provide a full-screen view of the report. - - - -#### **Modifying Reports** - -1. Click on the Column Visibility button to remove some columns from the report. - -![](https://lh4.googleusercontent.com/7FNuE1FzwaznJLCA9a6e3vTK4sZJbh0BUUGkA36B7Oa_9Z4R2jMejNhX9Wmo-sOGJpvor_xrdHI0loMMfK9JsQ_hQaNz6f11W1bUi96TuQIMIRkg0XyKy07rha4hOPgHgtaBV_es) - -1. Click on the column name to enable or disable the view of that column in the report. - -#### **Downloading Reports** - -1. Click on the Download as PDF or XLS button to download the report in pdf or excel format. - -The downloaded report is saved on your device. - -### - diff --git a/modules-features/user-guides/guide-tl/README.md b/modules-features/user-guides/guide-tl/README.md new file mode 100644 index 00000000..cfea2536 --- /dev/null +++ b/modules-features/user-guides/guide-tl/README.md @@ -0,0 +1,94 @@ +--- +description: Illustrative guide to using the trade license module +--- + +# Trade License + +The Trade License \(TL\) module offers the citizens and governance bodies a convenient and transparent means of processing trade licenses. Trade license is the permission issued by the local governing bodies to carry on specified business or trading activity within the authorized area. It is a mandatory document required to run a business or commercial activity of any type. + + +The TL module enables citizens to apply for trade licenses or renew existing licenses online. It facilitates the governing bodies to validate and approve the license applications. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
User Role + Scope of Action + Role Description +
Citizen + +

Apply for Trade License

+

Pay for license

+

Track status of license application

+

Download payment receipts

+
Individuals and business entities
Counter Employee (CE) + +

Apply for a Trade License

+

Complete the Payment for Trade License

+

Keep a track of the status of the Trade License

+

Download/Print payment receipts, applications, TL certificate

+
Counter employees who assist citizens and file new trade license applications + or renewal applications on their behalf
Document Verifier (DV) + +

Verify and forward

+

Send Back

+

Edit

+
Employees responsible for verifying the supporting documents submitted + by citizens for new trade license or renewal of existing licenses
Field Inspector (FI) + +

Verify and forward

+

Send Back

+

Reject

+

Edit

+
Employees who go on to the field (i.e. location of trade) and physically + verifies the information provided by the applicant is correct, checks safety + precaution followed by the trade owner
Approver + +

Approve

+

Send Back

+

Reject

+

Cancel TL

+
The employee who has the final authority to approve or reject the application
+ +### **Using TL** + +This section guides you through the details of using the TL module for each role. Click on the relevant role below to learn more about how to use the TL system. + +1. [Citizens](citizen-user-manual.md) +2. [Counter Employee \(CE\)](citizen-user-manual.md) +3. [Document Verifier \(DV\)](employee-user-manual.md#document-verifier-dv) +4. [Field Inspector \(FI\)](employee-user-manual.md#field-inspector-fi) +5. [Approver](employee-user-manual.md#approver) + diff --git a/modules-features/user-guides/guide-tl/citizen-user-manual.md b/modules-features/user-guides/guide-tl/citizen-user-manual.md new file mode 100644 index 00000000..0a1bf8b4 --- /dev/null +++ b/modules-features/user-guides/guide-tl/citizen-user-manual.md @@ -0,0 +1,165 @@ +--- +description: 'Learn how to apply for new trade license, renew and pay trade license fee' +--- + +# Citizen User Manual + +### **Citizens and CE** + +Citizens represent individuals, communities, or business entities who are the system end-users. The TL module allows business owners to apply for a trade license online or even apply for renewal of an existing license. + +The citizen can also approach the Counter Employee \(CE\) to submit new TL applications or raise renewal requests for existing licenses. + +![](https://docs.google.com/drawings/u/0/d/sd-LrBh27pu0GXrg1gv1_aQ/image?w=425&h=384&rev=143&ac=1&parent=1-UsBUntevcj1rpVyD7UPVKYh53dRt8xSD5x658AZMCk) + +**The Citizen or CE role can -** + +* [Apply for new TL](citizen-user-manual.md#apply-for-new-tl) +* [Renew trade license](citizen-user-manual.md#renew-trade-license) +* [Search application](citizen-user-manual.md#renew-trade-license) +* [Pay license fee](citizen-user-manual.md#pay-trade-license-fee) +* Download payment receipts, license certificates, or applications + +### **Apply For New TL** + +Citizens or CE can apply for a new trade license through the DIGIT web portal or the DIGIT mobile app. To apply for new TL click on the **Trade License** card available in the **Citizen Services** section of the DIGIT home page. + +![](https://docs.google.com/drawings/u/0/d/sqRD79LrdfKCRrJCRFl-PzQ/image?w=624&h=290&rev=3&ac=1&parent=1-UsBUntevcj1rpVyD7UPVKYh53dRt8xSD5x658AZMCk) + +Click on the **New Application** button on the screen. This will open the TL application form page. + +![](https://lh5.googleusercontent.com/A3Rg9bbLpb5Zf35k82PPbfzT2b4anONcRpIiAr2jGxFnaHCsB4Dv9AO4AUodRfuPATb5TCwbN6aXHwy9DyyI6DOC90dOPqU4MT8AGLHV4g1CMqV8MmZFAOK0sJdWcgmBmmtif-mT) + +The system displays the **Required Documents - Trade License list**. Click on the **Print** button to get a hard copy of the documents list for reference. + +![](https://lh5.googleusercontent.com/2ka23YAh9JZeY96XaYmfE7I45bN9XQWupvKnEAie-3BKDYq6OHroWP4413KlftLaJGwEU43lTPKIW5My7rE8k-p10UiX1r57gP9o5n7JSwgb1cp5YvetHlrUp6dZItagHbHILeNZ) + +Click on the **Apply** button to proceed with the trade license application. The form sections are available on the top of the page. + +![](https://lh4.googleusercontent.com/jCbqoAKwYAT24VwwxRvUyVv9sExIHhtCOc_nxSsuip2Gfo_k_6U3ZDZggXnIlxKvwaClsdmg4yIpz7Q5Qkupl-KErALuQbViajO5KVkWKfcdaWCJ5HqmFvP1I8iz_IrwqqPikVO1) + +The New Application form page contains various sub-sections - + +1. **Trade Details** +2. **Owner Details** +3. **Documents** +4. **Summary** + +The system displays the **Trade Details** page. The page contains 4 panels - **Trade Details**, **Trade Unit**, **Accessories**, and **Trade Location Details**. + +In the **Trade Details** panel, enter the following details. + +![](https://lh4.googleusercontent.com/BvUqG-3XQRa-IDpwGvgnBDZvBsDOfnzk5Up5694u7J6oO6Sk61W-fvKNz3BBCsOIoxiq8FagRF9odjhxjYlKVN7-OkkSnL7a7fk4u5r9jNFm5SgAVYmbAFl2aNRAP0PblYg1dnXn) + +Select the applicable **Financial Year**. Select the relevant **License Type** from the drop-down list. Enter the **Name of Trade**. Select the appropriate **Structure Type** and **Structure Sub Type.** Enter the **Trade Commencement Date**. Enter the **Trade GST No.** if applicable. Enter the **Operational Area \(Sq Ft\)**. and the **Number of Employees** for the listed trade. + +In the **Trade Unit** panel, provide the following details - + +![](https://lh5.googleusercontent.com/jieF4BEmQTqs0CuITSsKLLtQqKPbLmRAKyGXNxYy5DVjKjOPmL1-YVXJ8o-s1YgKUyeMl4j02gWR91EXNIWz-L-ENFrFsEPUt8pyGd4meOyMXVniFuM4DDt5CMUr_sM-01GmhYcA) + +Select the applicable **Trade Category, Trade Type, Trade Sub Type, UOM \(Unit of Measurement\), and UOM value.** Click on the ![](https://lh5.googleusercontent.com/9i0yqS0fLNvPb0l1gizOYKxicZ5sT5BtAOT4aESaCW7d4Xj8MWRuof_nI3hH4d5LjAffv-Fd8qzqa3c5GIn_XiVQXGbfR1a7o75-jvIPeh7ZhRzMMKGmGJnTTyVBBkq32j_zWcNr) icon to add more trade units. + +In the **Accessories** panel, enter the following details - + +![](https://lh4.googleusercontent.com/34HRkcaaNf3tasjBSWz0gDAvNOsMwrluqzQIXRgtJJhPNfSZzAQZJe-9wK5zfwWV9sXAeItEkTuOqYx6DptToVqId8wTrBiIBT5dblI105X4nv9MMQZwMhOn5Ua146IUSECZ-pgP) + +Select the applicable **Accessories** for the listed trade. Select the corresponding **UOM** for the selected accessories. Enter the **UOM value**. Enter the **Accessory Count**. Click on the ![](https://lh4.googleusercontent.com/74xRfp424rm8Ae4GQHxb2UgVT2DXnOwATZ5JMMtUP2Cf8q8sJwzOf7dyuXw7Ldq8OXD2r7_R0L9r7ju3m4xlsw4gVuiS_PGzsBWCs3ERQSTQ9UASQvG1pzhBtbtgAK9H8TIjIJZj) icon to add more accessories. + +Enter the following details in the **Trade Location Details** panel - + +![](https://lh5.googleusercontent.com/22cP9lB0x6WO-kb7drIYKo8UH0cRe89sugBUKimIyY6C-ux9T3Evc2leG7yetW9VgtR9KRRqhsOCUQsl-WuF_sI3K1pvK25ebU0C6Hu7HeB7MlNLr9RWLg7hZUY5_k2kjHJYoJKm) + +Select the **City**. The system displays the registered city by default. Enter the **Property ID/UID**, **Door/House No**., **Building/Colony Name**, **Street Name**, **Mohalla**, and **Pincode** for the listed premises. Click on the map icon to provide the GIS coordinates for the location. Enter the **Electricity Connection No.** for the listed premise. + +Click on the **Next Step** button to move to the **Owner Details** section. + +![](https://lh4.googleusercontent.com/aiYy62Wj7aWu6vCsDp1-tUIzXHeAXUtQ4Z1_-vr45tUfwGyub_z_l3avqFzQrfTDWNC3uCQsFtZX256S9PlSq4pqsR6nhGROWtxely0tADmx2x4vyHLRMHzSNrI3L6dBUapzco94) + +![](https://lh4.googleusercontent.com/vWe3mOhqQRrF8ypAP0rSUrzF0qFFb3wI1XrynVsba5yHgrGRWeD61U_y9E9sfrc1lTSZITIUFjKV1MvHqynx26k25VxU2xrcY7f_fkJM6iKw0O6f9aiK8ZFVpP9JQKSFLWa1mi2g) + +Select the **Type of Ownership** and the **Type of Sub-Ownership**. Provide the following information in the **Owner Information** section. + +Enter the owner **Mobile No., Name, Father/Husband’s Name.** Check Father or Husband to indicate the **Relationship** of the given name with the owner. Check the applicable **Gender** of the owner. Enter the **Date of Birth** of the owner. Enter the owner’s **Email ID, PAN No., Correspondence Address**. Select the applicable **Special Owner Category** from the drop-down list. + +Click on the **Next Step** button to move to the **Documents** section. + +![](https://lh3.googleusercontent.com/QDdw5Mji5A5fRYLf_Ut599jJ-BfdpFrkI3gBYhNpvwcGSn2Ml-N8s4FC_xpT_WeolRsDpj4sW8xutmm88cGlhvOm4wm8nM8nbStuhEdxSe3wZQnTTAoYR49nE6CdPwf7KD8LuB1K) + +Click on the **Upload File** button to browse and upload the required documents for processing the TL. Click on the **Next Step** button once all the documents are uploaded. + +![](https://lh4.googleusercontent.com/7CPEGm70rvdYtSpgqOuGN9jaeanpSpSiXZGrHUWVLQPIxz9lOj6Szf-_MQhwdqbEjY9sbCd01_kmOrJDczXInyQoXZOdBASaKfOnyYfGwpS3wECURqkcNTd1iP57SF-qW7sQ0lmQ) + +The **Application Summary** page provides all the information filled in by the applicant. The **Application Summary** panel on top of the page provides the **Trade License Tax** and **Total Amount** details. This amount has to be paid by the applicant. + +Click on the **View Breakup** button to fetch the fee details. + +![](https://lh4.googleusercontent.com/kJ8GioEmvY_9VUxiuO4uHivXu1sERZt-wuXQd_GB78SOwabFUoZU8ZqBowf82F6dfauTjLjUNuUtPPzggKkBdFPTYdkR_ZtFFkCWP2ZzKxMuiUUEiHvcKk0qXrNfm69sdwiHUdkT) + +Scroll down the page to view the filled-in details. Click on the Edit icon ![](https://lh5.googleusercontent.com/P9dpjpL2J0qb1z2Oa00E3Lq5W3mDIEt1g_wZxKbmNtzGBjedDbtnb464cQz0ALsHbiVX8mQpO5-Ixd80bm0oJ9tygd4yJIqh1GYXRVDwhb4UFf7C1DrlcJxTnDwmRoj_9VPQWDx5) to make any changes to the application. Click on the **Submit Application** button. The system displays the Application Submitted Successfully acknowledgement message. + +![](https://lh3.googleusercontent.com/uZPCH59BeObRDHvahjkkzSG4WsvHUrR8vagS3dyK8OnHPbkgLRnVEyAwLcU1tWn8rcgj6DXEv_bXJuvThSfQCK0eOvH-U0bkPJm-J8m-VzdvHSGuThGdn9PpVDu-FQ9ELm9sD0VF) + +The **Trade License Application No.** is displayed along with this message. Click on the **Download** button to download a copy of the application. Click on the **Print** button to print the application. + +### **Renew Trade License** + +Citizens can renew their existing trade applications on the DIGIT portal. CE can also apply for TL renewal on behalf of the citizens. To renew TL navigate to the home page and then click on the **Trade License** option. Click on **My Applications**. Click on the **Renew Now** button on the specific license. + +![](https://lh4.googleusercontent.com/AIdYdmPsMws5vQ0nsoUXcVeTlJI3vO1zx_8AvI0Ckuv64trW6P1usBonC-boIhe5DHuNtkQGlFGvEJlArdp9N7ZS295blqKy2QWV5YzC-ApOYguMEHkrGKSTCtPXctba85tjJ65x) + +The system will display the license details. Click on the **Take Action** button. Click on the **Edit** button to make any changes to the existing license details. Click on the **Submit for Renewal** button to apply for renewal. + +![](https://lh3.googleusercontent.com/GG25eCOAdnLBxLCt8d7NRr8BHP1Bm5QVqMnH8R50yTEZ3gyGSQ9nv2aBLCJhEBlAhqGPUD86dqzjuoGsSiKtbz-rdijYFG1nG_L2Y9JQJuQ3m1i6h7zuahwBLrooyTVzDt4SWVAU) + +The Trade License is submitted for renewal. + +### **Search Application** + +To search for a submitted application or track the status of submitted applications navigate to the **Trade License** home page. + +![](https://lh6.googleusercontent.com/C38Srk3CObmsrw8AFrii-ZKAdW4uJnEGC9JI-MFgE9rJQMs5Wl6PMnGcUgnmxwz_td_FkZhj_rfP1vLhaE5an-_GmnQguqslAUBpX_RGtUhILHpb9IcmG-1dN8HF9f6hLkojdGDw) + +Enter at least one of the listed search parameters in the Search panel. The listed search parameters include + +* **Application No.** +* **Trade License No.** +* **Owner Mobile No.** +* **Application Type** +* **From Date** +* **To Date** +* **Application Status** + +Click on the **Search** button. The system displays the records matching the listed parameter. + +![](https://lh5.googleusercontent.com/E4f-9yWZZUQuUAiLF9F3vR9WUXRU3KMsIwsIsMLOw9-tSXWXi-dZ805OxAqqBzO8ddThJYd4X47ys4qNcE1FZ87HIIZqPCVtZtKZtcc6WiiA1trFm8YtGkYTPKn_zTna45jH8rEq) + +Click on the **Application No.** link. The screen displays the application details. Scroll down the page to view the details. + +![](https://lh5.googleusercontent.com/wwssUJSEF6Y2Zvocm3RDS3kt_btJzwXorsOSM5gW6VNx3S1ltAxXkVSmiHYghwi0HwtLeJ9vIOZdVMPGxgDn2D37JGAUGAh7BV90TydWxZOVVxGc3fpw-K0aNMc1hBYAQt5cJ4bh) + +Click on the **Take Action** button and click on **Edit** option to edit the form details. The **Task Status** panel on the top of the Application displays the current status of the application. + +![](https://lh6.googleusercontent.com/IBncnMqelOyxSodY9RBH6Nr9fRReVSEu6s-ODOr_Nonc25ack5G8GZ_4ZBu_mnmqXVTwTngE98PoW6ozXc9uaXFSTLFCEPKMncGYeXY6a5id3V_pSEIvKOt9otoV1GGRpO3VVK_D) + +Click on the **View History** button on the top right corner of the **Task Status** panel to view the actions taken on the application to date. + +![](https://lh5.googleusercontent.com/rn3oh8pUdYWR5c4rlw3z93rxTgon-3wnJ7bjjdOedKNLeTinrywQVZNS57uBVnsVu8MxBEV7IIQ3WGn4K4-zjMRCPNxvOOlwpGRcHFaZ_x34FIjV2XQeFMhoBly3kgo740vdrzL9) + +### **Pay Trade License Fee** + +Applicants have to pay the license fee once the TL application is approved. The application status changes to **Pending for Payment**. To make payment for the trade license fee click on your **Application No.** to open the application. Click on the **Take Action** button. + +![](https://docs.google.com/drawings/u/0/d/sbOzlGK9JL1r6C9jDKtSgCw/image?w=624&h=337&rev=10&ac=1&parent=1-UsBUntevcj1rpVyD7UPVKYh53dRt8xSD5x658AZMCk) + +![](https://lh3.googleusercontent.com/gsartsRkbToFx3BM4IrS5YY6eYSJr_r4KH4Eij-f-kOa5-RYJCWWa8_EsOSmQ8ICx3LRfOF8ZcXebgjpTrti-YD5XiqAYoegsVJgfPKYytV1GB6oqSt5JhRyplQM3iOx6zciJcj0) + +Click on **Pay**. Enter the payment details. The system allows you to pay by cash, cheque, or credit/debit card. Click on the **Cash**, **Cheque**, **Credit/Debit Card** tab depending on the preferred payment method. + +![](https://lh5.googleusercontent.com/cLCAGQooKpMNjnUkZfqoPWaP10xsEZhusPL5RO3pfnrCNAP3Jo_O_P6eNb0maLL1-zSRAv_hxYXsp4lMI_ay3rH-wMtQ0UrEqhiMwhRyAchg-FpGdI1MlXcYnI_-yNU3YsZ1f1SY) + +Enter payment details as requested on the screen. Click on the **Generate Receipt** button to confirm the payment. The screen displays the success acknowledgement message along with the **Payment Receipt No.** + +![](https://lh4.googleusercontent.com/c70FyxfyFdtdTN_SI1sYmn8RHE918ep4SGojTM7TResyC_Qwn0qHosDTgigr1KY5_zVogW0yyS48VtZsmiYD9NsAqXyrY2T6bLRI8tjYFu7FUW8jKv8ljRziHjXVFZj3ccX5zVtB) + +Once the payment is complete the **Trade License Certificate** is issued. Click on the **Download** or **Print** button to download or print the Payment Receipt and Trade License Certificate. + diff --git a/modules-features/user-guides/guide-tl/employee-user-manual.md b/modules-features/user-guides/guide-tl/employee-user-manual.md new file mode 100644 index 00000000..e3d3e286 --- /dev/null +++ b/modules-features/user-guides/guide-tl/employee-user-manual.md @@ -0,0 +1,210 @@ +--- +description: >- + This section illustrates the steps for different employee user roles at the + ULB level +--- + +# Employee User Manual + +### **Document Verifier \(DV\)** + +DV is responsible for verifying the supporting documents uploaded by the applicants or the counter employee on behalf of the applicant. + +![](https://docs.google.com/drawings/u/0/d/sHb-DQ3oZUHrcGIVdXxTV_w/image?w=425&h=141&rev=129&ac=1&parent=1-UsBUntevcj1rpVyD7UPVKYh53dRt8xSD5x658AZMCk) + +The DV can + +* [Reject applications](employee-user-manual.md#reject-applications) +* [Verify and forward applications](employee-user-manual.md#verify-and-forward) +* [Edit applications](employee-user-manual.md#edit-application) + +### **Reject Applications** + +Trade license applications are rejected if the supporting documents uploaded by the applicant fails to comply with the license requirements or the details provided in the form are incorrect. + +To reject applications navigate to the Home page. Search for the application you want to verify by entering any of the search parameters. Click on the **Application No.** to open the application. Scroll down the form to review the filled in details. + +![](https://lh3.googleusercontent.com/k9ywG2byZr9A0UBWORXbc8e_RFF6LbomRbJtdCjG047zUMV16Cp01ycuojk2hLDh5VZ5yy4UPi6u35OWMZPojxN3XxDPn0BoMgID_npnAYu5TeMj25w59VUOwebm9vPwD0zfje2Q) + +Click on the **Take Action** button available at the bottom of the page. Click on **Reject.** + +![](https://lh3.googleusercontent.com/pTI4gYhHJyJIThqmbv9Md8IP9AysBon3CPlExgjNc7FQiB6ZWaUU_mNcvlVezzsgvn56H7ejalbHNB9BzOGEragTvPv7aZn9fkPhrgD3_xYGrQP2Nc0a3MrLTcIGS3y9izcH3hrv) + +Enter your **Comments** to state the reason for rejection. Click on the **Upload Files** button to upload any supporting documents to validate the rejection. Click on the **Reject** button. + +The applicant will receive a rejection notification on his mobile number or email address. + +### **Verify and Forward** + +The DV verifies and forwards the TL application to the Field Inspector if the DV finds all information and documents provided by the applicant correct. + + +To verify and forward the application navigate to the Home page. Search for the application you want to verify by entering any of the search parameters. Click on the **Application No.** to open the application. Scroll down the form to review the filled in details. + +![](https://lh3.googleusercontent.com/k9ywG2byZr9A0UBWORXbc8e_RFF6LbomRbJtdCjG047zUMV16Cp01ycuojk2hLDh5VZ5yy4UPi6u35OWMZPojxN3XxDPn0BoMgID_npnAYu5TeMj25w59VUOwebm9vPwD0zfje2Q) + +Click on the **Take Action** button available at the bottom of the page. Click on the **Verify and Forward** button. Select the relevant **Assignee Name** from the list of available employees for subsequent processing. + +![](https://lh5.googleusercontent.com/IsHugpgvdIt1iM-eKm5f_dYu73pMDragCPPJ8hKIdr6mdO7TxxDDiKZPvb3JAZTCpsA-2V9cD3v8WOKpiksP1zjYsSd6h-FE96nvVjAFehL0-0dKx9m43QQQJqVAK4ZQiiQeWtZO) + +Enter any additional information in the **Comments** field in context to the application for the assignee’s knowledge. Click on **Upload Files** to upload any supporting documents for the application. Click on the **Verify and Forward** button. + +The TL application is assigned to the selected Assignee for subsequent processing. +**** + +### **Edit Application** + +To edit applications navigate to the Home page. Search for the application you want to verify by entering any of the search parameters. Click on the **Application No.** to open the application. Scroll down the form to review the filled in details. + +![](https://lh3.googleusercontent.com/k9ywG2byZr9A0UBWORXbc8e_RFF6LbomRbJtdCjG047zUMV16Cp01ycuojk2hLDh5VZ5yy4UPi6u35OWMZPojxN3XxDPn0BoMgID_npnAYu5TeMj25w59VUOwebm9vPwD0zfje2Q) + +Click on the **Take Action** button available at the bottom of the page. Click on the **Edit** button. Change any details in the form as required. + +### **Field Inspector \(FI\)** + +FI is responsible for verifying the field details provided by the applicants. + +![](https://docs.google.com/drawings/u/0/d/soGbaGKJdoR_-YspaHLpHAQ/image?w=425&h=151&rev=66&ac=1&parent=1-UsBUntevcj1rpVyD7UPVKYh53dRt8xSD5x658AZMCk) + +The FI can + +* [Send applications back to citizens](employee-user-manual.md#send-back-to-citizen) +* [Send back](employee-user-manual.md#send-back) +* [Reject applications](employee-user-manual.md#reject-applications-1) +* [Verify and forward applications](employee-user-manual.md#verify-and-forward-1) +* [Edit applications](employee-user-manual.md#edit-application-1) + +### **Send Back To Citizen** + +FI sends back the applications to the citizens if some vital information is missing in the application or there is a mistake in the information provided. + +To send applications back to the citizen navigate to the Home page. Search for the application you want to verify by entering any of the search parameters. Click on the **Application No.** to open the application. Scroll down the form to review the filled in details. + +![](https://lh3.googleusercontent.com/xH0mXNzooZVSoqU2_njKX_yJwn8pBg6N3FvBE7B4oeDDA85_8vKsjs2YMYayw4dxMJE1-MzxA5SMxZXzvDV0rXPTBrkWFjqy8QgIICDjj-zhsr37rfD4WTuv1W7QASfQ5AkUSHCj) + +Click on the **Take Action** button available at the bottom of the page. Click on the **Send Back to Citizen** button. Enter any **Comments** stating why the application is sent back. + +![](https://lh4.googleusercontent.com/Rpu_lvPrtDuuPhK_g-nCP0S56YQoTJf9Qk3DZ6_F0wgV-_1Pm1WkM20N-Tvb14J3yPtpW9rVZ7NmdcTphksypRlMh0y_jlAmlFqarP-Rgjd4nbQT6MzYcTX60KJsOEAEC5FfLwZe) + +Click on the **Upload Files** button to upload any files or images in context to the application. Click on the **Send Back to Citizen** button. + +![](https://lh6.googleusercontent.com/ZoBT7h6sAQOEe1GJ1hsKKuDK_Dc1JtegVjY942UxD5I2qsU8ettBKnoBHkhZplBzxVxlQhkWlJwfI9MADf071wid91v4lX6EO44de-JN74lcPyT0-Vy6WZDrIZr1X0LjRUqcD9hu) + +The system displays a success acknowledgement message stating that the application is sent back to the initiator. + +### **Send Back** + +The FI can send back the TL application to the DV if there is any mistake or lapses in the document verification process. + +To send back applications to the DV navigate to the Home page. Search for the application you want to verify by entering any of the search parameters. Click on the **Application No.** to open the application. Scroll down the form to review the filled in details. + +![](https://lh3.googleusercontent.com/xH0mXNzooZVSoqU2_njKX_yJwn8pBg6N3FvBE7B4oeDDA85_8vKsjs2YMYayw4dxMJE1-MzxA5SMxZXzvDV0rXPTBrkWFjqy8QgIICDjj-zhsr37rfD4WTuv1W7QASfQ5AkUSHCj) + +Click on the **Take Action** button available at the bottom of the page. Click on the **Send Back** button. + +![](https://lh5.googleusercontent.com/3qMBZ_ljMtY2CdQF8xccjDgUKdF4ijZKg5yw37hDiQL1JLx53sK7NtJgCc49nlXS0zh1NCJadz7YQlioaG-TLqcV1qGDv-PBVwJ7fyDc9Lgtcolh0eFD3QwIfhM2JveFkBG8sCHe) + +Select the **Assignee Name** who will be responsible for verifying the application. Enter any **Comments** as additional information to the assignee stating why the application is sent back. Click on the **Upload Files** button to upload any files or images in context. Click on the **Send Back** button. + +The application is assigned back to the selected assignee for verification of documents. + +### **Reject Applications** + +Trade license applications are rejected if the supporting documents uploaded by the applicant fails to comply with the license requirements or the details provided in the form are incorrect. + +To reject applications navigate to the Home page. Search for the application you want to verify by entering any of the search parameters. Click on the **Application No**. to open the application. Scroll down the form to review the filled in details. + +![](https://lh3.googleusercontent.com/xH0mXNzooZVSoqU2_njKX_yJwn8pBg6N3FvBE7B4oeDDA85_8vKsjs2YMYayw4dxMJE1-MzxA5SMxZXzvDV0rXPTBrkWFjqy8QgIICDjj-zhsr37rfD4WTuv1W7QASfQ5AkUSHCj) + +Click on the **Take Action** button available at the bottom of the page. Click on **Reject**. + +![](https://lh3.googleusercontent.com/pTI4gYhHJyJIThqmbv9Md8IP9AysBon3CPlExgjNc7FQiB6ZWaUU_mNcvlVezzsgvn56H7ejalbHNB9BzOGEragTvPv7aZn9fkPhrgD3_xYGrQP2Nc0a3MrLTcIGS3y9izcH3hrv) + +Enter your **Comments** to state the reason for rejection. Click on the **Upload Files** button to upload any supporting documents to validate the rejection. Click on the **Reject** button. + +The applicant will receive a rejection notification on his mobile number or email address. + +### **Verify and Forward** + +The FI verifies and forwards the TL application to the Approver if the information and documents provided by the applicant are correct. + +To verify and forward the application navigate to the Home page. Search for the application you want to verify by entering any of the search parameters. Click on the **Application No.** to open the application. Scroll down the form to review the filled in details. + +![](https://lh3.googleusercontent.com/xH0mXNzooZVSoqU2_njKX_yJwn8pBg6N3FvBE7B4oeDDA85_8vKsjs2YMYayw4dxMJE1-MzxA5SMxZXzvDV0rXPTBrkWFjqy8QgIICDjj-zhsr37rfD4WTuv1W7QASfQ5AkUSHCj) + +Click on the **Take Action** button available at the bottom of the page. Click on the **Verify and Forward** button. Select the relevant **Assignee Name** from the list of available employees for subsequent processing. + +![](https://lh5.googleusercontent.com/IsHugpgvdIt1iM-eKm5f_dYu73pMDragCPPJ8hKIdr6mdO7TxxDDiKZPvb3JAZTCpsA-2V9cD3v8WOKpiksP1zjYsSd6h-FE96nvVjAFehL0-0dKx9m43QQQJqVAK4ZQiiQeWtZO) + +Enter any additional information in the **Comments** field in context to the application for the assignee’s knowledge. Click on **Upload Files** to upload any supporting documents for the application. Click on the **Verify and Forward** button. + +The TL application is assigned to the selected Assignee for subsequent processing. + +### **Edit Application** + +To make any changes in the application navigate to the Home page. Search for the application you want to verify by entering any of the search parameters. Click on the **Application No.** to open the application. Scroll down the form to review the filled in details. + +![](https://lh3.googleusercontent.com/xH0mXNzooZVSoqU2_njKX_yJwn8pBg6N3FvBE7B4oeDDA85_8vKsjs2YMYayw4dxMJE1-MzxA5SMxZXzvDV0rXPTBrkWFjqy8QgIICDjj-zhsr37rfD4WTuv1W7QASfQ5AkUSHCj) + +Click on the **Take Action** button available at the bottom of the page. Click on the **Edit** button. Change any details in the form as required. + +### **Approver** + +The Approver is responsible for the final approval of the TL application. + +![](https://docs.google.com/drawings/u/0/d/sIHXqNJly363bzyZmlivJTA/image?w=425&h=138&rev=54&ac=1&parent=1-UsBUntevcj1rpVyD7UPVKYh53dRt8xSD5x658AZMCk) + +The Approver can + +* [Send applications back to field inspectors](employee-user-manual.md#send-back-1) +* [Reject applications](employee-user-manual.md#reject-applications-2) +* [Approve applications](employee-user-manual.md#approve-applications) + +### **Send Back** + +The Approver can send back the TL application to the FI or DV if there is any mistake or lapses in the document verification process. + +To send back applications to the DV or FI navigate to the Home page. Search for the application you want to verify by entering any of the search parameters. Click on the **Application No**. to open the application. Scroll down the form to review the filled in details. + +![](https://lh3.googleusercontent.com/3XUzXFgcpqv_Dm3Rs6RkZPKXXeQak8J4FdIA6oQ4-VPO-4hgegjgfX7n_C1e4QkjP_T0Gmbz5W9bR3U116ECnJ9x_oNvQry6WZxieNUVo9AITkKQNauQH67-xOwP9utzZ4xHHDd0) + +Click on the **Take Action** button available at the bottom of the page. Click on the **Send Back** button. + +![](https://lh5.googleusercontent.com/3qMBZ_ljMtY2CdQF8xccjDgUKdF4ijZKg5yw37hDiQL1JLx53sK7NtJgCc49nlXS0zh1NCJadz7YQlioaG-TLqcV1qGDv-PBVwJ7fyDc9Lgtcolh0eFD3QwIfhM2JveFkBG8sCHe) + +Select the **Assignee Name** who will be responsible for verifying the application. Enter any **Comments** stating why the application is sent back. Click on the **Upload Files** button to upload any files or images in context. Click on the **Send Back** button. + +The application is assigned back to the selected assignee for verification of application. + +### **Reject Applications** + +Trade license applications are rejected if the supporting documents uploaded by the applicant fails to comply with the license requirements or the details provided in the form are incorrect. + +To reject applications navigate to the Home page. Search for the application you want to verify by entering any of the search parameters. Click on the **Application No.** to open the application. Scroll down the form to review the filled in details. + +![](https://lh3.googleusercontent.com/3XUzXFgcpqv_Dm3Rs6RkZPKXXeQak8J4FdIA6oQ4-VPO-4hgegjgfX7n_C1e4QkjP_T0Gmbz5W9bR3U116ECnJ9x_oNvQry6WZxieNUVo9AITkKQNauQH67-xOwP9utzZ4xHHDd0) + +Click on the **Take Action** button available at the bottom of the page. Click on **Reject.** + +![](https://lh3.googleusercontent.com/pTI4gYhHJyJIThqmbv9Md8IP9AysBon3CPlExgjNc7FQiB6ZWaUU_mNcvlVezzsgvn56H7ejalbHNB9BzOGEragTvPv7aZn9fkPhrgD3_xYGrQP2Nc0a3MrLTcIGS3y9izcH3hrv) + +Enter your **Comments** to state the reason for rejection. Click on the **Upload Files** button to upload any supporting documents to validate the rejection. Click on the **Reject** button. + +The applicant will receive a rejection notification on his mobile number or email address. + +### **Approve Applications** + +The Approver signs off the TL application once the information and documents provided by the applicant are found correct. The TL Certificate is issued once the application is approved. + +To approve the application navigate to the Home page. Search for the application you want to verify by entering any of the search parameters. Click on the **Application No.** to open the application. Scroll down the form to review the filled in details. + +![](https://lh3.googleusercontent.com/3XUzXFgcpqv_Dm3Rs6RkZPKXXeQak8J4FdIA6oQ4-VPO-4hgegjgfX7n_C1e4QkjP_T0Gmbz5W9bR3U116ECnJ9x_oNvQry6WZxieNUVo9AITkKQNauQH67-xOwP9utzZ4xHHDd0) + +Click on the **Take Action** button available at the bottom of the page. Click on the **Approve** button. + +![](https://lh3.googleusercontent.com/EX3XnL1OBk3bzR-0vIfr7mK6d_Xr9FkUAG5ZKMC-nnEMTnisyhWOuL65N01tC98yA3on9jzzIUIrwWEGNiyevJQDiqkcVjzZf87IK01eulmgXcQcYBkbkRAlOexQ7uk_KD0SqlWx) + +Select the relevant **Assignee Name** from the list of available employees for subsequent processing. Enter any additional information in the **Comments** field in context to the application for the assignee’s knowledge. Click on **Upload Files** to upload any supporting documents for the application. Click on the **Approve** button. + +The TL application is approved and the TL Certificate is issued to the applicant. Click on the **Download** or **Print** button to download or print the TL Certificate. + diff --git a/training-and-demo/README.md b/training-and-demo/README.md index 51ffe869..69409c7e 100644 --- a/training-and-demo/README.md +++ b/training-and-demo/README.md @@ -1,2 +1,12 @@ # Training & Demos +Access our extensive library of product training resources available in pdf file formats or short training videos. + +View our [Training Calendar](training-calendar.md) for upcoming training events and scheduled product demos. + +Browse through our [Training Videos](videos.md) designed to assist you in configuring and using our diverse products. + +{% hint style="info" %} +Watch out for this space as we are constantly adding on new resources to our training library. +{% endhint %} + diff --git a/training-and-demo/training-calendar.md b/training-and-demo/training-calendar.md index 145ba5bb..8af66409 100644 --- a/training-and-demo/training-calendar.md +++ b/training-and-demo/training-calendar.md @@ -1,2 +1,4 @@ # Training Calendar +Details coming soon... + diff --git a/training-and-demo/videos.md b/training-and-demo/videos.md index 0189622b..a54463d4 100644 --- a/training-and-demo/videos.md +++ b/training-and-demo/videos.md @@ -1,2 +1,59 @@ -# Videos +# Training Videos + +DIGIT video tutorials provide a step-by-step guide to using the DIGIT modules. Refer to these videos for clarity and ease of understanding the different functions of the modules. Our product video library covers a wide range of functions, right from configuring DIGIT environment components to using the modules. + +Navigate to the relevant category to view the list of videos available. + + + + + + + + + + + + + + + + + + +
Category + Topic +
OBPAS Configuration Videos + +
Trade License Configuration Videos + +
+ +{% hint style="info" %} +Watch out for this space as we are constantly adding on to our video library. +{% endhint %}