Services About Contact Get in Touch
Back to Home
Aviation Maintenance Training & Operations System

AMTOS
System Description

Enrol. Train. Certify. One system, zero gaps — AMTOS unifies personnel, scheduling, question bank, online exams, attendance and regulatory reporting in one cloud-hosted platform purpose-built for Part-147 schools.

A product by Aggregator Solutions

System Overview

One Platform. The Complete Training Lifecycle.

AMTOS unifies every stage of an EASA Part-66 Aviation Maintenance Engineering programme — from first enrolment through to the issuance of a Certificate of Recognition (EASA Form 148). Administrators, instructors and students each see a role-tailored interface built on a single shared database, eliminating duplication and ensuring that records are always authoritative and up-to-date.

🛡️
Admin
Full system access — personnel management, track & course design, scheduling, BI dashboards, report designer, system settings.
📋
Staff
Operational access — student & staff records, enrolment, scheduling, attendance, exam oversight and certificate generation.
🎓
Instructor
Class-scoped access — manage own classes, record attendance, review exam attempts, conduct practical assessments.
👤
Student
Personal portal — class calendar, online exams, exam results, practical results, certificate download.
AMTOS DB Admin Full Control Staff Operations Instructor Class Scope Student Own Records
ASP.NET MVC 5 DevExpress v25.1 Entity Framework 6 SQL Server ASP.NET Identity Multi-Tenant SaaS ICS • iCalendar Import Cloud Hosted · IIS
1

Step 01 — Foundation

Personnel & Access Management

Before training can begin the organisation must be populated with its people. AMTOS holds a single Personnel record for every individual — staff, instructor, or student — and each record can optionally be linked to a system login. Role assignment determines exactly what that person can see and do within the platform.

📸
Profile & Photo
Full name, nationality, date of birth, contact details and profile photo stored per person.
📂
Document Vault
Passport, national ID, medical and any custom document types uploaded and version-tracked per person.
🔑
User Account Creation
Generate a login (username + password) directly from the personnel record, or link to an existing account.
🛡️
Role Assignment
Admin / Staff / Instructor / Student roles control every menu, grid and action visible to that user.
🔒
Account Lock / Unlock
Administrators can instantly suspend or re-enable any user's access without deleting their record.
📥
Excel Import
Bulk-import student records from a spreadsheet, with optional automatic track assignment.
AMTOS Core DB Admin Staff Instructor Student

Role access is concentric — each outer role has a subset of the inner roles' permissions.

2

Step 02 — Structure

Training Tracks

A Track is the top-level certification pathway — for example Cat A, Cat B1.1 or Cat B2. Each track is a curated collection of courses, and when a student is assigned to a track they automatically inherit its full course curriculum. Tracks carry a total credit value and can be inspected to see exactly which courses they contain.

🗺️
Track Definition
Create named tracks with description and total credit hours; record creation audit (user + timestamp).
📚
Course Assignment
Attach any number of courses to a track via a batch checkbox interface. One course can belong to multiple tracks.
🔍
Drill-down View
Popup panel shows every course belonging to a track, with module numbers and credit info.
📤
Export
Export the full tracks list to PDF or Excel (WYSIWYG A4 landscape) with one click.
Cat B1.1 Track Module 1 Module 2 Module 7 Classes → Classes → Classes →

A track bundles courses; each course generates one or more scheduled classes.

3

Step 03 — Curriculum

Course Catalogue

Courses are the atomic unit of the curriculum. Each course maps to a Part-66 module number, carries its own document library, and may have prerequisites. Grading components (theory, practical, essay) can be configured independently per course, giving administrators fine-grained control over how final grades are calculated.

📖
Course Library
Create and manage courses with title, module number, credit hours and description. Full CRUD with inline grid editing.
🔗
Track Membership
Assign a course to one or many tracks via a checkbox panel; relationship changes are reflected immediately across the system.
👨‍🏫
Instructor Assignment
Designate which instructors are qualified to teach a course. The scheduler uses this list to populate instructor dropdowns.
📁
Document Vault
Upload syllabus, manuals, reference material, or embedded video URLs/iframes against a course. Configure visibility controls (Public, Instructors, Students) and serve files securely via an in-browser PDF.js canvas viewer equipped with student-specific dynamic watermarks and copy/print restrictions, or centered responsive 16:9 inline video streams.
⚖️
Grading Parts
Define weighted grading components (e.g. Theory Exam 70%, Practical 30%) specific to each course.
⛓️
Prerequisites
Flag prerequisite courses to guide enrolment decisions and ensure the correct learning sequence is followed.
4

Step 04 — Learners

Student Registration

Students are a specialised type of Personnel record. Beyond the standard profile fields, each student record holds their nationality, regulatory identification data, a photo, and a personal document vault. Large cohorts can be loaded in minutes via Excel bulk import, with automatic track assignment available at import time.

🪪
Rich Profile
Name, date of birth, nationality, contact info, status (active / inactive), photo and join date.
📄
ID Documents
Upload passport, national ID or any configured document type; each document tracked with number and expiry.
📥
Excel Bulk Import
Download import template, populate and re-upload; optional track override assigns all imported students to a specified track immediately.
🔑
Portal Access
Create student login credentials from within the record; one-click account lock / unlock for access control.
🗺️
Track Assignment
Assign a student to one or more tracks directly from their profile; mass-enrol them into all active track classes with a single action.
📊
Progress Snapshot
At-a-glance view of enrolments, exam pass rates and attendance rate surfaced on the admin dashboard.
👤 NATIONALITY STATUS DOCUMENTS TRACKS ENROLLED Portal Access ✓

Student record anatomy — profile, documents, tracks and login in one place.

5

Step 05 — Registration

Enrolment

Enrolment bridges students and scheduled classes. Assigning a student to a track provides a high-level affiliation; enrolment into individual classes confirms their participation in a specific timetabled delivery. Both individual and bulk enrolment are supported, and an enrolment-locking mechanism lets administrators freeze class rosters ahead of an exam period.

🎯
Track Enrolment
Assign a student to a track to establish their training pathway; mass-enrol them into all active classes on that track in one action.
📋
Class Enrolment
Per-class roster management with individual add/remove, bulk select, and drag-and-drop friendly grid interface.
Bulk Enrolment
Select multiple students simultaneously and enrol them all in a class in one operation, saving time with large cohorts.
🔒
Enrolment Lock
Lock a class roster so no further enrolment changes can be made — essential for maintaining exam integrity once an attempt window opens.
📊
All-Enrolments View
Cross-class enrolment overview with filtering by course, instructor and date range — for a bird's-eye staffing picture.
🔄
Status Tracking
Enrolment status (active, withdrawn, etc.) is tracked per student per class, maintaining a full historical record.
Tracks Pathway Courses Curriculum Classes Scheduled Students Enrolled
6

Step 06 — Timetabling

Class Scheduling & Calendar

AMTOS provides a visual, drag-and-drop scheduler for planning the entire training calendar. Classes are the concrete delivery of a course — they carry start/end dates, a facility, an instructor and a roster of enrolled students. Country-specific public holiday calendars prevent accidental scheduling on rest days, and any class can override the default holiday list where operational requirements demand it. External calendar events can also be imported directly from Outlook or Google Calendar via the ICS / iCalendar format.

📅
Visual Scheduler
DevExpress drag-and-drop calendar. Filter by instructor or class group. Supports day, week and month views.
🏢
Facility Booking & Capacity Check
Assign classes to rooms and facilities; manage the facility inventory (name, type, capacity). AMTOS warns planners when the enrolled student count exceeds the facility limit at scheduling time, preventing overbooking before it occurs.
🌍
Holiday Calendars
Country-specific public holiday lists automatically block scheduling. Admin can add or edit holidays per year.
⚙️
Class Overrides
Individual classes can override the default holiday rules — useful for make-up sessions or international cohorts.
📲
ICS Import
Import external calendar events (ICS format) to populate the AMTOS event calendar from Outlook or Google Calendar.
🗓️
Exam Scheduler
Dedicated exam scheduling view to plan written exam sittings, separate from the regular class timetable.
CLASS SCHEDULE Module 1 Module 2 Module 7B P-Workshop Holiday Today Jan Feb Mar Apr May Jun

Classes visualised on a full-width timeline with holiday and today markers.

Step 06b — Advanced Planning

Cohort Planner & AI Scheduler

For schools running multiple cohorts simultaneously, AMTOS provides a Cohort Planner that automatically generates a full-semester timetable using a Simulated Annealing meta-heuristic. The engine resolves instructor and classroom conflicts across all cohorts at once, respects the EASA Part-147 curriculum sequence, skips public holidays, and avoids clashing with any pre-existing classes — all in a single optimisation pass. The result is previewed as a colour-coded multi-cohort Gantt chart before being committed to the live schedule.

🧠
Simulated Annealing Engine
C# in-process SA engine: 150 temperature steps, cooling rate 0.95, 100 iterations per step. Move and Swap operators explore the solution space; the Boltzmann acceptance criterion allows occasional uphill moves to escape local optima. Seeded random ensures reproducible results.
📐
Hard & Soft Constraints
Hard (×1,000 penalty): no instructor or room double-booking, no cohort overlap. Soft: EASA curriculum sequence (×50), compact course blocks (×20), minimal daily slot gaps (×15) — balanced to produce teachable, realistic timetables.
📊
Multi-Cohort Gantt View
Colour-coded Gantt chart with one horizontal track per cohort and school weeks as columns. Each EASA module (M1–M17), practical subject (Trips, VFU, FTS, EWIS), and supplementary block has its own harmonised colour category with a live legend.
🌡️
SA Progress Overlay
Glassmorphism modal with a live HTML5 Canvas particle simulation that cools from hot red/orange → stable blue, mirroring the SA temperature. Displays live temperature readout (100→0°C), conflict-cost score, and phase label (Exploring → Refining → Converging).
📅
Holiday-Aware Working Days
Derives the semester working-day list from the existing Holiday Calendar, skipping weekends and all active public holidays. Pre-booked instructor and room slots from existing classes are respected as hard constraints during optimisation.
🚀
One-Click Publish
After reviewing the Gantt preview, click “Publish Classes” to write all generated lessons into Class and Schedules tables — ready for instructor assignment and student enrolment, with DevExpress calendar sync included.
Dynamic Slot Configuration
The School Day Timetable supports 2–8 configurable slots (default: 3 AM + 3 PM, 90 min each). Planners add or remove slots live; times are persisted to SystemSettings. The SA engine and capacity bar both adapt automatically — each cohort gets its own independent slot pool, so two simultaneous cohorts show real utilisation, not double-counted figures.

SA Cooling Curve — Conflict Cost vs Temperature

Temperature (hot → cool) Conflict Cost EXPLORING REFINING CONVERGING

Conflict cost collapses as the SA engine cools. Hard violations carry a ×1,000 penalty that forces near-zero conflicts in all published schedules.

Built-in EASA Part-147 Curriculum Blocks

S1 — Semester 1 MCB1 — Electrical MCB2 — Maintenance MCB3 — Human Factors MCB4 — Structures I MCB5 — Structures II MCB6 — Turbine
7

Step 07 — Assessment

Exams & Question Bank

AMTOS includes a full question-bank authoring system with an approval workflow, plus two distinct exam delivery modes. The question bank is structured around a three-level EASA Part-66 syllabus taxonomy (Module → Submodule → Sub-submodule), ensuring every question maps precisely to a regulatory objective. Multiple-choice theory exams are taken online by students in real time, with questions assigned either uniformly (same set for everyone) or randomised per student. For written assessments requiring longer responses, Essay Exams present a fully separate submission-and-grading workflow: students upload a PDF within a configurable open/close window, and administrators review and grade the submission before releasing marks through the same controlled publication workflow as MCQ results.

Question Bank
Author multiple-choice questions with up to four illustrated answers. Module-tagged for accurate assignment to the correct course exams.
Question Approval
Two-stage workflow: questions are drafted then approved by an admin before they become eligible for use in live exams.
🎲
Random or Fixed Sets
Configure an exam to give every student the same questions, or assign a random selection per student to prevent answer sharing.
💻
Online Exam Delivery
Students log in and answer questions through the AMTOS student portal. Submissions are captured and graded instantly.
📝
Essay Exams
Create essay-type assessments with configurable open/close submission windows. Students upload a PDF answer file through the student portal. Administrators download, review and score each submission, then release marks via the standard results publication workflow. Supports multiple essay exams per class.
🖼️
Illustrated Questions
Both questions and individual answer options support image uploads — essential for diagram-based technical questions.
🗂️
3-Level Taxonomy
Questions are tagged to Module → Submodule → Sub-submodule, mirroring the EASA Part-66 syllabus. Filters let examiners draw questions from any level of the hierarchy.
📜
Exam Blueprints
Define drawing quotas per scheduled sitting. The dynamic drawing algorithm selects a randomized subset of active questions matching specific EASA submodules and ATA chapters, with validation warnings for pool shortages.
👁️
Live Proctor Dashboard
Supervisors monitor sittings in real time: tracking student progress (elapsed/remaining time, questions answered), idle warnings, and focus loss counts. Offers remote administrative pause, resume, and terminate controls.
📋
Invigilator Session Gate
Enforces computer-based exam compliance. Candidates check in with verifying IDs (Present, Late, Absent). The invigilator controls individual or bulk exam starts, logs incident notes, sets time extensions, and locks results via a formal session sign-off.
⚠️
Focus-Loss Logging
Automatically logs focus loss events on student portal if a student switches tabs or minimizes the exam page. Increments an on-screen warning counter and flags attempts exceeding threshold limits for review.
1 2 3 4 5 Q Bank Draft Q Approved ✓ Exam Created Student Takes Exam Auto-Graded ≥ 75% = Pass 6 Verified Instructor Review Results Released
8

Step 08 — Presence

Attendance Recording

Attendance is recorded at the class-session level for every enrolled student. AMTOS presents this data as a pivot table — students on one axis, dates on the other — so instructors and administrators can spot absence patterns instantly. An instructor can toggle a student's presence directly in the grid, making real-time updates from the classroom straightforward.

✔️
Session-Level Recording
Mark each student present or absent per class session. One click toggles status; changes save instantly.
🗃️
Pivot View
Students vs. dates heat-map grid — colour-coded green/red — lets administrators scan the whole class at a glance.
👩‍🏫
Instructor View
Instructors access a scoped view of their own classes only; toggle attendance inline without admin involvement.
📅
Period Filtering & Full-History View
Filter the pivot by Week, Month, or All (default). “All” loads the complete class history in one scrollable table with no paging required.
📊
Dashboard KPI
Attendance rate (% present across all sessions) surfaces as a KPI gauge on the admin homepage dashboard.
📋
CoR Hours Mapping
Attendance data feeds directly into the Certificate of Recognition hours-attended section (Step 12).
📊
Summary Card Strip
A compact card strip above the pivot shows each student’s photo, name, a colour-coded attendance bar, and cumulative X/Y (Z%) — always reflecting full class history, even in Week/Month view.
⚠️
Absence Breach Alert
Students whose absence exceeds the configured threshold ( AbsenceThresholdPct in SystemSettings, default 10%) are flagged with a red card border and row highlight — the same threshold that drives the Exam Eligibility Gate.

Attendance Pivot — Students × Sessions

Present Absent No session
9

Step 09 — Verification

Exam Review & Results Publishing

Before results reach students, an instructor or administrator reviews each attempt in full — question by question. Individual questions can be excluded/awarded (e.g. due to ambiguity) in two modes: excluding/awarding for a specific student or system-wide. A release-summary screen confirms the pass/fail count before results are published. Students immediately see their results, including which questions they answered correctly.

🔬
Attempt Review
Full attempt walkthrough: each question displayed with the student's selected answer versus the correct answer.
🚫
Question Exclusion/Awarding
Exclude/Award for one student or all students on the attempt adjusting the score accordingly.
📈
Pass / Fail Summary
Pre-release summary screen shows pass count, fail count and overall class performance before publishing to students.
📤
Results Release
One-click release makes results visible in the student portal. Release can be reverted if corrections are needed.
📝
Essay Grading
Instructors open submitted PDF essays, score them and release marks — same release workflow as MCQ exams.
🎓
Student Portal View
Students see released results including individual question feedback; these feed into the Certificate of Recognition automatically.
📐
Item Analysis
Per-question statistics across all student attempts: correct-answer rate, most-selected distractor, and discrimination index — flags questions that should be reviewed or retired.
🔑
Admin & Staff Results Viewer
A dedicated exam results viewer for Admin and Staff roles provides a cross-class view of all student attempts. Admins and Staff can browse any student's full attempt, cancel individual questions, and monitor pass/fail outcomes — without being restricted to a single instructor's class scope.
⚠️
Flagged Questions & Release Gate
Questions where fewer than 50 % of students answered correctly are automatically flagged for admin review after each exam. The Release Results button is blocked while any flagged question remains in Pending status. An administrator must set each flag to Reviewed, Dismissed, or Cancelled before results can be published — providing a mandatory quality-control gate between auto-grading and student visibility. Any cancellation actions automatically update the student results history (snapshots) in real-time.

Step 09b — Compliance

Exam Eligibility Gate

Before a student can sit any exam, AMTOS automatically checks their attendance record against configurable absence thresholds. Students whose absence percentage exceeds the threshold are blocked from participating and see an amber warning card instead of the exam link. Administrators can investigate each case and either lift the block (clearing it entirely) or force a permanent block — with a mandatory reason recorded for audit purposes.

🚦
Automatic Block
Absence % is computed per-module for Theory & Practical exams and cumulatively across all modules for Essay exams. Any student above the threshold is auto-blocked with no manual intervention required.
⚙️
Configurable Thresholds
Two independent thresholds stored in SystemSettings: AbsenceThresholdPct (per-module, default 10 %) for Theory/Practical, and AbsenceThresholdEssayPct (cumulative, default 10 %) for Essay exams. Both are editable live from the Admin UI without a deployment.
🔓
Admin Override
Lift Block — clears the block entirely, restoring full eligibility. Force Block — creates a permanent override with a mandatory reason that is stored in the ExamEligibilityOverrides table for audit. Override reasons appear in the grid for future reference.
👁️
Eligibility Dashboard
Admin sees a filterable grid (all students or blocked-only) showing each student's lesson count, absence count, attendance bar, colour-coded status badge (Auto-Blocked / Admin-Blocked / Lifted / Eligible) and action buttons.
⚠️
Student Warning Card
Blocked students see an amber warning card on their My Exams page for any upcoming exam in the relevant module — instead of the exam entry button — instructing them to contact management. Unblocked exams remain accessible normally.
🛡️
Server-Side Guard
Even if a student bypasses the UI, the exam controller re-checks eligibility server-side before allowing an attempt to be created. Blocked students receive an HTTP 403 response — there is no client-only enforcement.
📋
History Report Integration
Every eligibility decision — automatic or admin-overridden — is permanently surfaced in the Student History Report (Section 5). For each enrolled class the report shows the live absence %, the configured threshold, the resolved status (Eligible / Auto-Blocked / Admin-Blocked / Admin-Lifted) and, where a manual override exists, the reason text, the administrator's username, and the action timestamp. Closes the EASA audit loop: the student's complete training record now includes every eligibility override ever made on their behalf.
90-Day Retake lockout
EASA Part-147 Enforced — If a student fails a theory exam sitting (scoring under 75%), AMTOS automatically locks out any retakes for this course for 90 days. The student exams portal displays a warning card detailing the lockout duration and block details, and security checks run server-side.
10

Step 10 — Hands-On

Practical Assessment

Workshop practical skills (P1–P9) are assessed against a defined set of criteria for each module. An instructor creates a Practical Exam linked to a class, then opens individual student attempts and scores each criterion live during the assessment. Scores are held in draft until the instructor deliberately releases them, ensuring students only see validated results.

🔧
Module Definitions
Configure P1–P9 practical modules — title, description, and which category (Cat A / Cat B) each module applies to.
📋
Assessment Criteria
Define detailed pass/fail or scored criteria per practical module; criteria are reusable across multiple exam instances.
🗂️
Practical Exams
Link a practical exam to a class; multiple practical exams can share the same class (e.g. mid-term and end-of-course).
🎯
Conduct Assessment
Instructor-facing screen to score each criterion per student in real-time; supports notes and observations per criterion.
📤
Results Release
Results are held privately until explicitly released; same controlled publication workflow as theory exams.
👀
Student View
Students see released practical results in their portal; scores flow into the CoR Checklist workshop section.

Assessment Matrix — Modules × Criteria

C1 C2 C3 C4 C5 P1 P2 P3 P4 P5 Pass Fail Pending
11

Step 11 — Insight

Dashboards & Business Intelligence

Every user role in AMTOS has a personalised dashboard. The admin homepage surfaces live KPI gauges drawn from the database in real time. Above that, a full DevExpress BI Dashboard Designer lets administrators build and publish rich, interactive dashboards — charts, pivots, maps and more — without writing code. Instructors see their own classes and attendance; students see their personal exam and results calendar.

📊
Live KPI Gauges
Admin homepage: Real-time key metrics including Total Students, Total Instructors, Total Classes, Total Enrolments, Attendance Rate % and Exam Pass Rate %.
🛠️
BI Dashboard Designer
Full DevExpress drag-and-drop designer: charts, pivots, cards, filters. Connect to any AMTOS data source. Publish to all roles.
📅
Instructor Calendar
Instructors see their upcoming classes, exam reviews and practical assessments in a personal calendar view.
👤
Student Portal
Students see their personal class timetable, upcoming and past exams, and released practical results — all scoped to their enrolments only.
🎨
Theming & Dark Mode
User-level theme preferences: font family, colour intensity, brightness, background intensity, and full dark mode.
📉
Report Designer
Admin-accessible DevExpress Report Designer for building custom printable reports backed by stored procedures with dynamic columns.

Admin KPI Dashboard

87%
Attendance
72%
Pass Rate
248
Students
@keyframes gaugeIn{from{stroke-dasharray:0 226;}to{}}
12

Step 12 — Certification

Reports, CoR Checklist & EASA Form 148

At the end of training, two regulatory documents formalise completion. The CoR Checklist is a comprehensive regulatory progress report (passport check, hours attended, theory results M1–M17, workshop practicals P1–P10, aircraft practical, and signatures). The Certificate of Recognition (EASA Form 148) is the formal certificate listing module pass dates and track — the final output of the training programme. Behind both sits the Student History Report: the complete audit trail that tells the story of how and when that certificate was earned — every session, every exam question, every practical criterion, and every eligibility decision, all in one retrievable record. All three query the live database at generation time — no manual compilation.

☑️
CoR Checklist
Full regulatory checklist: ID verification, hours attended, theory results (M1–M17), workshop practicals (P1–P10), aircraft practical, signature section.
📜
Certificate of Recognition (Form 148)
EASA Form 148: A4 portrait PDF listing all passed module numbers, pass dates, track and signatory block. The formal output of the training programme.
Live Data
All documents query the live database — every pass, attendance record and assessment score is reflected at print time.
🖨️
Preview & Download
In-browser PDF preview via the DevExpress document viewer; one-click download. No server-side print queue required.
🔐
Access Control
Admins and Staff can generate documents for any student. Students can only access their own certificate and checklist. The History Report is admin/staff-only.
📤
Export to PDF / Excel
Grid data (Tracks, Courses, Enrolments) can be exported to A4 PDF or Excel WYSIWYG with branded headers.
📋
Student History Report — The Story Behind the Certificate
The Form 148 says a student passed. The History Report shows exactly how and when that happened. The complete, single-page audit record for any student — generated on demand from live data. Available to Admin and Staff only.

Section 1 — Attendance: present/absent per session per enrolled class, attendance rate % with colour-coded threshold indicators.
Section 2 — Theory Exams: every attempt — course, date, score %, Pass/Fail, and a full question-by-question breakdown showing what the student answered vs the correct answer.
Section 3 — Practical Assessments: module, date, assessor, overall result, and criterion-by-criterion pass/fail with Essential criteria highlighted.
Section 4 — Essay Submissions: title, submission date, grade, instructor feedback.
Section 5 — Exam Eligibility Gate: one row per enrolled class — live absence %, threshold, computed status (Eligible / Auto-Blocked / Admin-Blocked / Admin-Lifted), admin override reason, actor, and timestamp. Every eligibility decision permanently on record.

Fully print-ready: browser-native print / Save as PDF. All five sections render without interactive controls — the printout is a clean, regulator-grade evidence document that stands behind every Form 148 ever issued.

CoR Checklist — Layout Wireframe

Instructor
Manager
13

Step 13 — Quality Management

Quality Management System (QMS) Forms

To maintain regulatory compliance (EASA Part-147), AMTOS includes an integrated Quality Management System. This module allows quality managers and administrators to schedule and record audits, raise Non-Conformance Reports (NCR) with automated indexing, and track Corrective & Preventive Actions (CAPA) assigned to personnel.

🛡️
Compliance Audits
Schedule and document reviews across targets like Theory Exams, Practical Assessments, Facilities, or Instructors. Record audit details, auditor, scope, findings, and recommendations.
⚠️
Non-Conformance Reports (NCR)
Log compliance discrepancies with automated serial numbering (NCR-YYYY-XXXX). High severity items are visually highlighted in soft red on the dashboard grid.
✔️
Corrective Actions (CAPA)
Assign tasks to resolve NCRs, set target dates, stamp completion dates automatically upon status changes, and track verification signatures.
🔗
Relational Safety
Foreign keys enforce cascade deletion of corrective actions when an NCR is deleted, while setting audit references to null if a parent audit is removed.

QMS Records — Relational Schema

QmsAudits
🔑 AuditID (PK)
📝 AuditTitle, Scope, AuditDate
QmsNonConformances
🔑 NcrID (PK)
🔗 AuditID (FK) -- ON DELETE SET NULL
📝 NcrNumber (e.g. NCR-2026-0001)
🔴 Severity ("High" triggers Red styling)
QmsCorrectiveActions
🔑 CapaID (PK)
🔗 NcrID (FK) -- ON DELETE CASCADE
📝 AssignedTo, TargetDate, CompletionDate

System Architecture

Technology & Infrastructure

AMTOS is a multi-tenant SaaS application deployed on a Windows IIS server. Each school (tenant) operates on its own isolated SQL Server database — a database-per-tenant model — with tenant resolution handled automatically via subdomain routing: a custom TenantResolver reads the host header and a DbContextFactory instantiates the correct connection string. The presentation layer is rendered server-side by ASP.NET MVC 5 using the Razor view engine, enriched by the DevExpress v25.1 component suite for grids, schedulers, dashboards and PDF reports. Authentication is handled by ASP.NET Identity. Data persistence uses Entity Framework 6 Code-First migrations.

Additionally, the system features a built-in Multi-Tenant Provisioning Wizard that automates the deployment of new schools, complete with support for custom database naming constraints (enabling seamless hosting on shared environments like Plesk with custom database prefix rules). To facilitate evaluation and staging, the wizard supports the instant deployment of "Demo Environment" sandbox clones. These sandboxes are isolated databases that run on a dynamic connection routing architecture, pre-configured with a 5-step quick-start seeder panel and a manual data clean/reset module directly accessible from their administrative dashboards.

Browser Chrome · Edge · Safari
IIS / TenantResolver Subdomain routing · DbContextFactory
ASP.NET MVC 5 Razor · DevExpress · Identity
Entity Framework 6 Code-First ORM
SQL Server Per-tenant database isolation
ASP.NET MVC 5 DevExpress v25.1 Entity Framework 6 SQL Server ASP.NET Identity Multi-Tenant · Database-per-Tenant TenantResolver · DbContextFactory ExcelDataReader ICS / iCalendar PDF Generation Dark Mode & Themes CSV / XLS / TXT Import