Do
Use stable, deterministic
codevalues and treat them as long-lived contract identifiers.Scope types by
organization/schoolonly when there is a real policy difference.
Define canonical admissions document types and codes that drive portal options, readiness checks, and deterministic file-classification slots.
code values before go-live; autoname is field:code.code is mapped in admissions slot classification logic (APPLICANT_DOCUMENT_SLOT_MAP), or upload will be rejected.Applicant Document Type is the canonical admissions evidence catalog. It defines what document slots exist and which of those slots are required in readiness checks.
Applicant Document Type controls admissions document semantics, not file ownership:
code, document_type_name, belongs_to, description)organization, school)is_required, is_active)belongs_to is semantic only (student | guardian | family) and does not change the rule that admissions files are owned by Applicant Document.
code is unique and acts as the canonical identity for the type.is_required = 1 and scope matches applicant organization/school.code (deterministic), not label text.is_active = 0) retires future use without rewriting historical applicant evidence.list_applicant_document_typesupload_applicant_document pre-validation for activity and scopeApplicant Document Type.code -> slot mapping in APPLICANT_DOCUMENT_SLOT_MAPChanging code is not a cosmetic rename. It affects slot derivation and classification paths in governed admissions upload.
Use stable, deterministic code values and treat them as long-lived contract identifiers.
Scope types by organization/school only when there is a real policy difference.
Use belongs_to as a permission or ownership switch; it is semantic metadata only.
Deactivate by deleting historical meaning; prefer is_active = 0 for retirement.
Create the evidence catalog with canonical code and document_type_name values.
Configure organization, optional school, and requirement flags (is_required, is_active).
Portal document type listing returns only active and applicant-scoped types.
Student Applicant readiness treats required types as satisfied only when a corresponding Applicant Document is approved.
Retire obsolete types with is_active = 0 and introduce new codes instead of mutating historical contract semantics.
ref_doctype.DocType schema file: ifitwala_ed/admission/doctype/applicant_document_type/applicant_document_type.json
Controller file: ifitwala_ed/admission/doctype/applicant_document_type/applicant_document_type.py
Required fields (reqd=1):
code (Data, unique)document_type_name (Data)Lifecycle hooks in controller: none (controller is currently pass).
Operational/public methods: none beyond standard document behavior.
DocType: Applicant Document Type (ifitwala_ed/admission/doctype/applicant_document_type/)
Autoname: field:code
Core field contract:
belongs_to options: student, guardian, familyis_required default 0is_active default 1organization, schoolPortal/API surfaces:
ifitwala_ed/api/admissions_portal.py::list_applicant_document_typesifitwala_ed/api/admissions_portal.py::upload_applicant_documentifitwala_ed/admission/admissions_portal.py::upload_applicant_documentifitwala_ed/ui-spa/src/pages/admissions/ApplicantDocuments.vueDownstream gating use:
ifitwala_ed/admission/doctype/student_applicant/student_applicant.py::has_required_documentsifitwala_ed/admission/admission_utils.py::APPLICANT_DOCUMENT_SLOT_MAP| Role | Read | Write | Create | Delete | Notes |
|---|---|---|---|---|---|
Admission Officer |
Yes | Yes | Yes | Yes | Full Desk access |
Admission Manager |
Yes | Yes | Yes | Yes | Full Desk access |
Academic Admin |
Yes | Yes | Yes | Yes | Full Desk access |
System Manager |
Yes | Yes | Yes | Yes | Full Desk access |