# Project plan — ieb-inde-4

Evidence date: 2026-10-13.

Source repository: `git@bitbucket.org:overdrive/ieb-inde-4.git`.

Inspected revision: `main` at `e2be9d5` (2025-07-09, Renier van Rooyen, "Added INDE-4"). The scan-host path `~/projects/sonar_scan/repos/ieb-inde-4` was not on this machine. The tree below was read from that git revision. Credential values are omitted.

This plan describes what the repository contains. It does not decide what the product should become.

## Product

`INDE-4/ReadME.txt` names this project **Docs = INDE-4 (using INDE-2 user table)** inside a family of related projects:

| Code | Name in the readme |
|---|---|
| INDE-1 | Exams |
| INDE-2 | CRM |
| INDE-4 | Docs (using the INDE-2 user table) |
| INDE-5 | CPS |
| INDE-6 | Postbox |
| INDE-8 | ISC CRM |
| INDE-9 | ISC Docs (using the INDE-8 user table) |

The same readme's setup steps also name INDE-3 and INDE-7. Those two codes are not in the project list above. Provenance: **Documented**.

The readme does not expand "Docs" or "IEB". The letters IEB appear in the website title keys and in `service.ieb.co.za`. Provenance: **Documented** for the project list; **Implemented** for the title keys and the service host. The full organisation name is **Unknown / Requires Confirmation**.

The running site is a customised copy of **Evolution Software Unified Framework**: an ASP.NET Web Forms application whose pages, canvases, and surfaces are largely data-driven from SQL Server. The custom surfaces under `core_custom/INDE-4/controls/surface_custom` are schools, school contacts, school affiliations, subjects, and clusters (information, levels, members, meetings, resources). A cluster form has tabs labelled Document Library and Discussion Forum. There is no class, surface, or module whose name is Docs.

There is no product requirements document in the source repository. Silicon Ark had no `ieb-inde-4` folder before this set.

## Branch reality

| Line | Tip | Date | What it is |
|---|---|---|---|
| `main` (default; `origin/HEAD`) | `e2be9d5` | 2025-07-09 | Only remote branch seen |

History, both commits on 2025-07-09:

- `7a3788a` — Abdurahmaan Ismail, "Initial commit".
- `e2be9d5` — Renier van Rooyen, "Added INDE-4".

Custom comments in the school and cluster surfaces are dated 2018-05-14 through 2018-05-17 (Graham Rook; one comment spells the surname "Rok"). That earlier product history is not represented as Git commits. Provenance: **Inferred** that this Bitbucket repository is an import of an existing working copy, not the original development history.

MSBuild file lists and `.vs/INDE-2/config/applicationhost.config` point physical paths at `C:\DEV work\NEW_IEB\INDE-2\...`, including `core_custom\INDE-2`. Provenance: **Inferred** that the tree was taken from an INDE-2 working copy. That is not the same statement as the readme's "using INDE-2 user table". See Human confirmation.

The task-creation scan listed `sonarqube_scan.bat` at the repository root. That file is not in the git tree at `e2be9d5`. The committed root is `.gitignore` and `INDE-4/`. Provenance: **Unknown** whether the batch file was untracked on the scan host.

## Objectives (inferred from the implementation and the readme, not from a written plan)

- Keep schools, school contacts, affiliations, and subjects.
- Keep clusters: code, name, area, level, province, subject, members, meetings, resources, a document-library upload, and a discussion-forum field.
- Generate a cluster code from level, subject, and province, and copy template resources onto a new cluster.
- Limit school edit links for users below PowerUser to schools where that user is the IEB liaison contact.
- Create website users from school-contact and cluster-member spreadsheets when the email is new for the current customer code.
- Keep the shared Evolution framework (admin, surfaces, library, WCF service, scheduler, SQL project) in the same tree.

The readme objective "Docs, using the INDE-2 user table" is **Documented**. A second database connection to an INDE-2 catalog was not found. Provenance of the user-table claim: **Unknown / Requires Confirmation**.

## Scope

### In scope of `main`

1. Website project `core_custom/INDE-4`, included by `INDE-4.sln` and by `EvolutionSoftwareUnifiedFramework.sln`.
2. Custom surfaces under `controls/surface_custom`: schools, school contacts, school affiliations, subject management, and the cluster surfaces.
3. Custom modules `CriterionFeedback` and `billingInstructions`.
4. Exam-moderation classes `examHandler` and `examNums`, plus the examination object classes, even though no examination surface control sits under `surface_custom`.
5. The rest of the Evolution framework that shipped in the same tree: `core`, `core-dev`, `library`, `business`, `service`, `mobile`, `tools`, `data`, `release`, `SchedulerTool`.
6. Local setup notes in `INDE-4/ReadME.txt`.
7. Bitbucket Pipelines SonarQube scan on `main` and `develop`, and `sonar-project.properties`.

### Out of scope / not established

- A written backlog, release process, or statement of which environment is production.
- Automated tests. No `[Test]`, `[Fact]`, or `TestMethod` attributes were found. The search hit long-path warnings under `packages/` and `.vs`; those paths were not fully enumerated.
- A build or deploy step in the pipeline. The pipeline only runs a SonarQube scan.
- An `INDE-4` SQL script folder. `data/Scripts` contains folders for other codes, including `INDE-1`, `INDE-2`, and `INDE-6`, and does not contain `INDE-4`.
- The database rows that define canvases, surfaces, lookups, and templates. Those live in SQL Server.
- Sibling repositories named in the readme. They are not this repository, even where this tree still contains their SQL script folders and an INDE-2 IIS Express config.

## System architecture

```text
Browser
  → ASP.NET Web Forms site  core_custom/INDE-4
      → framework business + library (SQL Server via app setting "conn")
      → WCF framework_service (localhost and service.ieb.co.za)
      → SMTP smtp.evolutionsoftware.co.za
      → SMS gateway sms.netgen.co.za
      → MediSwitch QA gateway (configured; feature switch off)
      → optional country web service (configured; feature switch off)

SQL Server catalog (active key): Framework_INDE-4_Demo
Commented catalogs: Framework_INDE-4

Bitbucket Pipelines → SonarQube scan only
```

Pages and many behaviours are selected from database surface definitions. The custom C# in this repository is the part that is fixed in source. Provenance: **Implemented** for the code paths; **Unknown** for which surfaces the database actually publishes.

## Major components

| Component | Role in this tree |
|---|---|
| `core_custom/INDE-4` | Website that `INDE-4.sln` treats as the INDE-4 site |
| `controls/surface_custom` | Schools, contacts, affiliations, subjects, clusters |
| `controls/module/fileUploader.ascx` | Rendered on the cluster Document Library tab |
| `controls/module_custom` | Criterion feedback and billing instructions |
| `App_Code/classes/examHandler.cs`, `examNums.cs` | Examination status, compliance, and moderation ids, plus status mail |
| `business`, `library` | Shared framework data, users, mail, surfaces |
| `service` | WCF service project |
| `tools/scheduler`, `SchedulerTool` | Scheduler projects in the tree. Which jobs this site runs was not traced |
| `data/data.sqlproj` | SQL project. Script folders are for other customer codes |
| `mobile` | Present in the large solution. Not referenced by the custom INDE-4 surfaces that were read |

## Milestones

No milestone document exists. The only dated events in git are the two commits on 2025-07-09. Custom surface comments place the school and cluster behaviour in May 2018.

| When | Evidence | Reading |
|---|---|---|
| 2018-05-14 to 2018-05-17 | Comments signed Graham Rook on school and cluster custom blocks | Work existed in a working copy |
| 2025-07-09 | `7a3788a`, `e2be9d5` | That working copy was committed to this Bitbucket repository |
| 2026-09-28 | Onboarding issue | Scan host listed `sonarqube_scan.bat`, which is not in git |
| 2026-10-13 | This document | Knowledge captured from `e2be9d5` |

## Implementation plan

There is no forward implementation plan in the repository. The pipeline defines a `develop` branch that was not present on the remote at inspection. That is a pipeline rule, not a product roadmap.

## Known dependencies

- .NET Framework 4.5 on `business` and `library` projects. The INDE-4 `Web.config` sets `httpRuntime targetFramework="4.6.2"`.
- SQL Server. Active app setting `conn` uses catalog `Framework_INDE-4_Demo`. Commented keys name `Framework_INDE-4`.
- Telerik Web UI, AjaxControlToolkit, EPPlus, SharpZipLib, Ionic.Zip, Newtonsoft.Json, Google APIs, NReco.VideoConverter, PdfMetamorphosis. The readme says several of these DLLs must be re-added locally.
- WCF client to `framework_service` and to the SendEasy SMS ASMX.
- SonarQube via Bitbucket Pipelines. Two different project keys are configured. See technical documentation.

## Current project status

The repository is a single imported snapshot on `main`. No later product commit was found. Custom school and cluster behaviour is in source. Whether a live Docs site still runs, and whether it shares users with INDE-2, cannot be decided from this tree.

## Human confirmation

1. Does "Docs" mean the cluster Document Library, a database-configured file explorer, or something this repository does not contain?
2. Does production authentication use the INDE-2 user table, the `Framework_INDE-4` catalog, or `Framework_INDE-4_Demo`?
3. Which `website` app setting is shown: `IEB (INDE-4 Local)`, `IEB CRM`, or both?
4. Which SonarQube project key is the intended one?
5. Was `sonarqube_scan.bat` ever part of this repository?
6. Are the examination classes and `billingInstructions` published for this site, or leftover from the shared framework copy?
