Skip to content
Right to Education Digital Public Good by Indus Action
  • Home
  • Docs
Github
Right to Education Digital Public Good by Indus Action

User Manual

10
  • Introduction
  • User Roles and Permissions
  • Process Flow
  • What is RTE Section 12 (1) (c)?
  • Home Page
  • State Admin
  • District Admin
  • Block Admin
  • School Admin
  • Students – Public Page

Functional Documentation

8
  • Introduction
  • Features
  • Multiple user levels and role permissions
  • State Admin Login
  • District Admin Login
  • Block Admin Login
  • School User’s Public and Private (login) Interface
  • Parents access to RTE admission application

Technical Documentation

6
  • Installation Guide
  • App Administration
  • School Management
  • Student Management
  • Lottery Management
  • Student Tracking Management
  • Home
  • Docs
  • Technical Documentation
View Categories

School Management

14 min read

Introduction

The School Module allows schools to create an account on the portal with a unique UDISE code. Once the school account is created, they can register with the school details like board type, fee details, medium, etc. Once the application is submitted, the school enters a verification phase, which is verified and approved by district or block administrators. The school module also provides useful features like uploading schools in bulk and the school to location mapping.

Prerequisites

  • Access to a Drupal 10+ environment with appropriate permissions.
  • Check the requirement sheet for more details – RTE-MIS: Requirements_Documents
  • Installation of necessary modules
    • Contrib Modules: maxlength, mobile_number, workflow
    • Custom Modules: rte_mis_core,  rte_mis_school, rte_mis_gin

Installation and Configuration

  • Please ensure the modules mentioned in the Prerequisites are installed and enabled.
  • The path for custom modules is docroot/profiles/contrib/rte-mis/modules/{module_name}
  • To enable a module in the Drupal instance using Drush, use

drush en module_name

Replace the module name with the actual name of the module. For example, to enable the rte_mis_school module, run below command – 

drush en rte_mis_school

Usage of the School Module

Configuration Setup:

Once the School Module is enabled, a configuration form is provided where the app admin or state admin can enable the single approval process for school verification. This configuration includes two fields:

  1. Enable single approval process.:
    When the single approval process is enabled, the school verification is done by a single admin, either the District or Block admin. The default approval level used is the dual approval process, in which both Block and District admins have to approve the school verification.
  2. Select Role:
    The app admin or state admin can select the role (District or Block) that will have access to approve the school registration.

Creating a new school account:

Schools can create a new account by clicking on the “Create School Account” link under the “School” menu, which is available only if the “School Registration” window is open.

School Registration:

Once a school account is created, schools can register and submit the application for verification by clicking on the “Register” link under “School Registration” menu link. Schools are required to fill in all the details like board type, education details regarding fees, number of seats available, location etc.

School Verification:

School verification is handled by the District admin, the Block admin, or both, depending on the configured approval process. If the state admin selects the dual approval process, then both District and Block admins have to approve the school.

District or Block admins can view all the pending school verifications by logging into the portal and visiting the “Review School Registrations” page by clicking the “Review School Registrations” link under the “School” menu link.

School Registration Approval:
From the list of pending school verifications, District or Block admins can click on the “View” button to visit the school verification form and update the application’s status. Depending on the current status, the options available to the admins are “Send back to school,” “Approved by BEO,” “Approved by DEO,” and “Reject.”

School Mapping:

Once the school is approved, the District or Block admin can map the school to the valid habitation by clicking on the “Review Neighborhood Mapping” link under the “School” menu link.

Bulk Upload Schools :

The school module also provides a feature to upload schools in bulk. The App, State, and District admins can upload the school as per the scope. For example, the app admin can upload any school, State admins can upload schools from their state, and District admins can upload schools from their district only.

To visit the bulk upload schools form, admins can click the “Add Schools in Bulk” button from the “All Schools” page.

Development Process

School Module Site Building

Entities Created – 

  • School Details – An entity of bundle ‘mini node’ of ECK Entity Type to store school details. Contains fields like academic session, board type, education details, entry class, address, school name, verification status etc.
  • School  – A taxonomy term of vocabulary ‘school’ to store mapping of UDISE code and location for schools.

Workflows Created – 

  • School workflow – A new workflow is created that is used in School taxonomy terms  to track the verification of school UDISE once the school account is created. There are four states in this workflow: Created, Pending, Rejected and Approved.
  • School Registration Verification – A workflow used in School Details mini node to track the school verification after registration. There are four seven states in this workflow: Creation, Pending, Submitted, Send back to school, Approved by BEO, Approved by DEO and Rejected.

Views Created – 

  • School Registration – A view page to display a list of all school registrations accessible to Districts, Blocks and States as per the location.
  • School Profile – A view block to display school profile details on school dashboard page for school admins only.
  • School Basic Information – A view block to display school information on a school profile page.
  • School Mapping Logs – A view page to display the logs for habitation mapping of the schools.

Custom Module Development

The custom code related to school is written in rte_mis_school module however some common utility functions or alters are written in rte_mis_core module. Some key points regarding the custom module development are listed below:

  1. Extensive Use of AJAX and States: The School Module heavily relies on AJAX and states to dynamically update form fields and UI elements based on user input.
  2. Use of Batch API: To upload the schools in bulk, the Batch API from the core is leveraged to import many schools via batch processing. The class, rte_mis_school/src/Batch/SchoolBatch, is used to create the Batch process and import the schools.
  3. Use of Drupal Hooks: Drupal hooks modify core functionality as required.
    • hook_form_alter() is used to apply AJAX calls on the entry class field in the school registration form, to alter and hide some fields from the form, and to add a custom submit handler for the school registration form to process school verification.
    • hook_ENTITY_TYPE_view() is used to build and show the school verification history on school application.
    • hook_inline_entity_form_entity_form_alter() is used to restrict UDISE code options from school registration if UDISE code is already approved.
    • hook_views_pre_view() is used to alter  the “school basic information” view and pass the UDISE of the current school to the view as an argument (to contextual filter) to filter out the results of the current school admin.
    • hook_form_BASE_FORM_ID_alter() is used to alter form submit button  text for workflow form.
  4. Use of Workflow Hooks:
    • hook_workflow() is used to update the role of the user from school to school admin once registration is approved (by both admins District and Block)
    • hook_workflow_permitted_state_transitions_alter() is used to alter the permitted state transitions for District admin if single level approval is configured and to restrict transitions for Block admin from “send back to school” to “approved by BEO” and “rejected” states.
  5. Custom Validation Functions:
    • _rte_mis_school_udise_validation() is used to validate the UDISE code; this function checks if the same UDISE code does exist already.
    • rte_mis_school_validate_school_details() is used to perform checks on different fields based on the RTE criteria, ensuring that the submitted information meets all requirements.
    • rte_mis_school_validate_education_level_paragraph() is used to perform checks for education level and fees details section in school registration form.
  6. Build list of approved UDISE codes:  The function rte_mis_school_udise_list() builds the list of all approved UDISE codes that is displayed as the UDISE code options during school account creation.
  7. Verification Panel Access Control:
    • To ensure district and block officials can only view school registration within their locality, rte_mis_school_views_query_alter() is implemented. This restricts the visibility of school applications based on locality.
  8. School Registration Verification Status: The function rte_mis_school_mini_node_view() displays the updated application status on the school verification page, providing real-time updates to schools and administrators..
  9. Bulk Upload Form to import schools: A custom form BulkUploadSchoolsForm is built to provide the functionality to import multiple schools, located in the modules/rte_mis_school/src/Form directory.
  10. Configuration Form for School module: A configuration form RteMisSchoolConfigForm is created to allow state admins to configure schools, located in the modules/rte_mis_school/src/Form directory.
  11. School Mapping Form: A custom form SchoolMappingForm is created to allow block, district, state admins and schools to update school mapping, the form is located in modules/rte_mis_school/src/Form directory.:
  12. Access Control for Views, Edits  and Application Download: Custom access checks are defined for viewing, editing pages and application download based on academic session and location criteria. These are located in the modules/rte_mis_school/src/Access directory.

This structured approach to development ensures that the module meets the requirements for dynamic data handling, secure access, and comprehensive validation throughout the registration and verification processes.

Customization and Extensibility

  •  Developers can modify the code within custom modules for advanced customization to meet specific project requirements.

Entity Relationship Diagram

The below ER Diagram depicts all the entities, relationships and major attributes created and used in the School module.

Troubleshooting 

  • Ensure there is an active campaign session for school registration during registration; otherwise, schools will not be able to register. 
  • Ensure there is an active campaign session for school verification. During verification, the district and block will not have access to update the registration status.
  • Ensure there is an active campaign session for school mapping, otherwise state or district will not be able to map schools with habitation.
  • If school import fails, check the import error logs and make sure all the details are correct like checking if UDISE code is valid, location is valid, school is from the same district etc.

Best Practices

  • Ensure Current Academic Session Entry:
    Verify that the current academic session has an entry for the school registration, school verification and school mapping to ensure the process runs smoothly.
  • User Role Permissions:
    Confirm that the user roles have the necessary permissions to access school verification.
  • Information check:
    Ensure that all the information/details entered for the school are correct, the school mapping is properly done. Ensure all the information used in the schools bulk upload file is correct to avoid errors and rejections in school registration. 

References 

  • Detailed information about custom modules can be found in the documentation provided for  Custom Modules.

SCHOOL UDISE CODE

This document describes the implementation of the School UDISE Code.

Introduction

The School UDISE Code feature in RTE-MIS is a crucial component designed to facilitate efficient school registration and identification processes. This feature is implemented using a dedicated taxonomy named “School UDISE Code,” which serves as a structured repository for associating unique UDISE codes with corresponding school names.

Scope

The scope of this document is to allow users to store/manage the UDISE code and its necessary details. The user can create details in bulk by uploading the CSV,  XLS, and XLSX files or individually. The individual process involves the approval process.

Overview

The “School UDISE Code” feature in RTE-MIS streamlines school code management with bulk upload for efficiency and individual options for precision. An integrated overview panel offers a centralized view, featuring filters and workflow integration for streamlined approval and change monitoring. This multifunctional tool enhances data handling, providing administrators with a comprehensive solution for managing UDISE codes associated with schools.

Installation and Configuration

  • Create School UDISE Code vocabulary
    • Navigate to Structure -> Taxonomy -> Add vocabulary in the Drupal administrative interface.
    • Create a new vocabulary named “School UDISE Code”.
  • Add Fields to the “School UDISE Code” Vocabulary
    • Navigate to Structure -> Taxonomy -> School UDISE Code -> Manage fields -> Add field in the Drupal administrative interface.
    • Add the following fields:
      • ip_address (Text (plain)): Captures the user’s IP address creating the school UDISE code.
      • school_name (Text (plain)): Stores the school’s name associated with the UDISE code.
      • upload_type (List (text)): Records the type of upload, distinguishing between Bulk or Individual upload.
      • workflow (Workflow state): Manages the workflow state of the UDISE code, indicating whether it is pending, rejected, or accepted.
      • Aid Status(List (text)): Store the aid status of the school. Values available are aided, and unaided.
      • Minority Status (List (text)):  Store the minority status of the school. Values available are minority and non minority.
      • Location(Reference of location vocabulary): This field is the reference of location vocabulary, which will be used to store the district and block. The field widget used here is from the Client-side Hierarchical Select  module.
      • Type of Area (List (text)): Store the type of area of the school. Values available are urban and rural.
  • Configure field settings according to your specific requirements.
  • Restricts duplicate School UDISE Code.
    • To avoid duplication of the School UDISE Code, install the Taxonomy Unique module using Composer

composer require ‘drupal/taxonomy_unique:^2.5’

  • Enable the module using Drush or through the Extend (admin/modules) page

drush en taxonomy_unique -y

  • Now, visit the vocabulary School UDISE Code edit page (Administration -> Structure -> Taxonomy) and turn on the taxonomy unique feature to prevent duplicates and configure the error message.
  • Install Rabbit Hole Module
    • To remove the landing page of the School UDISE Code, install the Rabbit Hole module using Composer:

composer require ‘drupal/rabbit_hole:^2.0@alpha’

  • Enable the module using Drush or through the Extend (admin/modules) page:

drush en rabbit_hole -y

  • Now, visit the taxonomy School UDISE Code edit page (Administration -> Structure -> Taxonomy) and select “Access Denied” on the Rabbit Hole section to prevent access to the landing page.
  • Install Workflow Module
    • Configure various states of School UDISE Code, and install the Workflow module using Composer:

composer require ‘drupal/workflow:^1.7’

  • Enable the module using Drush or through the Extend (admin/modules) page:

drush en workflow -y

  • Visit the workflow configuration page(Administration -> Configuration -> Workflow).
  • Click on Add Workflow
  • Enter the workflow name, and how the workflow form should display details and click on save.
  • Now, visit the States tab, add the required states in workflow, in our case(pending, accepted, rejected), and click on save.
  • Further, visit the Transition tab. This tab will configure who has permission to change a particular state in the School UDISE Code vocabulary and click on save.
  • Now, visit Transition Label, Define what label will be displayed on the action button/form, and click save.
  • View Configuration: Create a View page to list School UDISE Codes:
    • Navigate to Structure -> Views -> Add view in the Drupal administrative interface.
    • Configure the view with the following settings:
      • Path: school-udise-code/overview
      • Format: Table
      • Fields:
        • School Code (name)
        • Link to edit school code
        • Link to delete school code
        • Upload type
        • Workflow (workflow form)
      • Filter Criteria:
        • The vocabulary type is selected as School UDISE Code.
        • Add an exposed filter for the School UDISE Code, allowing users to find the code.
  • Bulk upload school UDISE code.
    • Develop a custom form for uploading files to facilitate bulk import
      • Add a Managed File field to the form with the following settings
        • Upload Limit: 5 MB
        • Allowed File Extensions: CSV, XLS, XLSX
      • Use the uploaded file in the batch process import() method defined in the SchoolUdiseCodeBatch class.
    • Process the file in the batch process
      • The uploaded file is received as a parameter in the import() method which is processed in chunks of 50, and School UDISE codes are created.
      • It also checks for duplicate school UDISE codes before creating.
      • Once all the data from the file is processed. It shows the number of UDISE codes imported and failed.
  • Individual School UDISE code.
    • We have used the Term entity form for adding individual UDISE codes.
    • We have hidden the relations field from the form display as it is not required.

Usage

  • Add School UDISE Code in Bulk
    • Visit page(school-udise-code/bulk-upload-udise-code).
    • Download the Template from the form, and add the school code and school name in the provided format.
    • Upload the file and submit the form.
    • This will initiate the importing of the UDISE code.
    • After the completion of the process count of successfully imported UDISE code is displayed, and the UDISE code is displayed for the failed or duplicate code.
  • Add individual UDISE codes.
    • Visit page(admin/structure/taxonomy/manage/school_udise_code/add).
    • Add the UDISE code and school name and submit the form.
  • School UDISE Code Dashboard
    • Visit page(school-udise-code/overview).
    • Users with permission to edit/delete can alter workflow and UDISE code.

Access

  • Below is the table of access that particular roles can perform.

Customization and Extensibility

  • Extending School UDISE Code Vocabulary
    • More fields can be added as per requirement and the same needs to be updated in the bulk upload codebase.
  • Adding fields, and filters in the school UDISE overview panel as this is a created view and can be easily altered.
  • Access to the workflow state can be provided by editing the transition tab.

Troubleshooting

  • If a user with the specific role is not able to edit/view school udise code, check the permission of view, vocabulary, and workflow.

References

  • https://www.drupal.org/node/872876
  • https://www.drupal.org/docs/contributed-modules/workflow
  • https://api.drupal.org/api/drupal/elements/10
  • https://www.drupal.org/docs/drupal-apis/batch-api/batch-api-overview

Versioning and Updates

  • Currently, we are using the latest Drupal core 10.3
  • If there is any new version of the modules. Check the release notes Releases for Taxonomy unique, Releases for Rabbit Hole, Releases for Client-side Hierarchical Select, Releases for Workflow, and check if any breaking changes are involved. if not update the module using the below command.

# For minor/patch release.

  • composer update drupal/taxonomy_unique -w
  • composer update drupal/rabbit_hole -w
  • composer update drupal/workflow -w
  • composer update drupal/cshs -w

# For major version release.

  • composer require drupal/taxonomy_unique:^new_version
  • composer require drupal/rabbit_hole:^new_version
  • composer require drupal/workflow:^new_version
  • composer require drupal/cshs:^new_version

# Execute the update hooks using drush.

  • drush updb

# Export the configuration using drush.

  • drush cex

Feedback and Support

  • Issues for Taxonomy unique | Drupal.org
  • Issues for Rabbit Hole | Drupal.org
  • Issues for Workflow | Drupal.org
  • Issues for Client-side Hierarchical Select
Updated on January 8, 2025
App AdministrationStudent Management

ADDRESS

Indus Action Initiatives
G-7, 2nd Floor, Lajpat Nagar III
New Delhi – 110024
📧 tech@indusaction.org

QUICK LINKS

  • RTE MIS
  • About Us

CONNECT

  • Facebook
  • Instagram
  • LinkedIn
  • X
  • YouTube

© 2025 Right to Education Digital Public Good by Indus Action

  • Home
  • Docs