Form Builder
Create dynamic forms without coding.
Overview
The form builder designs the forms other parts of the system serve: admission application forms, and the request forms behind workflow-engine approvals such as Leave of Absence.
It lived under Admissions until August 2026. The admissions domain was retired (a different system took over applications), so the form builder moved to Administration → System Configuration and its permission node was recoded ADMISSIONS.FORM_BUILDER → ADMIN.FORM_BUILDER (migration 209). The old /admissions/form-builder URL redirects to /admin/form-builder.
Creating a Form
- Navigate to Administration > System Configuration > Form Builder
- Click Create Template
- Configure form settings
- Add sections and fields
Form Structure
Form Template
├── Section 1
│ ├── Field 1
│ ├── Field 2
├── Section 2
│ └── Field 3Field Types
| Type | Use Case |
|---|---|
| Text | Short text input |
| Textarea | Long text/essays |
| Select | Dropdown choices |
| Checkbox | Multiple selections |
| Radio | Single selection |
| Date | Date picker |
| File | Document upload |
| Number | Numeric input |
| Table (GRID) | A small table instead of a single answer — see Table fields |
Table fields
A Table field (GRID) collects rows instead of one value — a list of courses to transfer, a term-by-term budget, a checklist with a comment per line. It is the one field type whose configuration is a document rather than a setting, so it is described here in full.
Rows: who decides how many
| Mode | Meaning | Options |
|---|---|---|
| Dynamic | The person filling the form adds and removes rows | min, max (cap 200), and the label on the add button |
| Fixed | You declare the rows; the person fills in the cells | up to 50 declared rows, each with a code and a label |
A table is one or the other. Declaring fixed rows on a dynamic table is rejected when you save.
Columns
Up to 20 columns. Each has a code, a label and a type, and may be required on its own. Only five cell types are offered:
TEXT, NUMBER, DATE, SELECT, CHECKBOX
This is a deliberate subset. Anything needing more than one line, a file upload, or a lookup round-trip does not belong in a table cell — use a separate field. A SELECT column carries its own options, independent of every other column.
A NUMBER column can be marked Total, which shows a summed footer row; the table as a whole has a Show totals switch that turns that footer on.
Rules that will stop you saving
- Column and row codes must start with a letter and contain only letters, digits and underscores. Leading underscores are refused because
_rowis reserved — it is how a fixed table records which declared row an answer belongs to. - Codes must be unique within the table.
- A
SELECTcolumn with no options, a minimum above its maximum, or a maximum below 1 are all rejected at save time rather than at submission time.
An empty table is not an answer
A table the user never added a row to counts as unanswered, exactly like an empty multi-select. If a table must be filled in, mark the field required — marking individual columns required only constrains the rows that do exist.
Changing a table after responses exist
Answers are stored keyed by column code. Renaming a column's label is safe; changing its code orphans every answer already collected under the old one. Add columns rather than repurposing them.
Field Settings
Configure per field:
- Required/optional
- Validation rules
- Help text
- Conditional display
Program Assignment
Assign forms to programs:
- Go to Program Forms tab
- Link form to program/term
- Form appears for those applicants
Viewing Responses
- Go to Form Responses
- View submitted data
- Export for analysis