# Alternative Approach

## Overview

Instead of using the single DataLoader.ipynb, you can use three separate notebooks for more focused data loading. This is useful when:

* Different team members handle different phases
* You want to re-run only one phase
* You prefer smaller, focused notebooks

## **The Three Notebooks**

<table><thead><tr><th width="283.59765625">Notebook</th><th width="135.83984375">Phases</th><th>What It Does</th></tr></thead><tbody><tr><td>1_TenantAndCommonMaster.ipynb</td><td>Phase 1 &#x26; 3</td><td>Tenant + Departments + Complaint Types</td></tr><tr><td>2_BoundarySetup.ipynb</td><td>Phase 2</td><td>Administrative boundaries</td></tr><tr><td>3_EmployeeOnboarding.ipynb</td><td>Phase 4</td><td>Employee creation</td></tr></tbody></table>

![](/files/0yyCHKajaiZ8XcKoV260)   ![](/files/kOQ7ybVV9bF9HOPTJDQO)

## **Execution Order**

<mark style="color:$warning;">Important: You MUST run notebooks in this order:</mark>

<figure><img src="/files/iiPjsMkm919QAOGgXUu0" alt=""><figcaption></figcaption></figure>

**Understanding Tenants**

CMS uses a hierarchical tenant structure:

* **Root Tenant (State)** – The top-level administrative entity representing a State. This is created during system deployment.
* **City Tenant (ULB)** – Urban Local Bodies created under the root tenant. Each city has its own tenant ID in the format: `<state-code>.<city-code>` (e.g., statea.citya)

All city tenants inherit configuration from their parent root tenant.

## Login Details - For Initial Access

**Root Tenant (State-level):** The root tenant is the top-level administrative entity (typically a State) under which all city/ULB tenants are created.

* Username: SUPERADMIN
* Password: eGov\@123
* Tenant ID: statea

**City Tenant (ULB-level):** City tenants are created under the root tenant and represent individual Urban Local Bodies.

* Username: CITYADMIN
* Password: eGov\@123
* Tenant ID: statea.citya


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.digit.org/complaints-management/complaints-resolution-v2.10/deploy/setup/production-setup/deploy-complaints-management/alternative-approach.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
