Overview
The FMAC portal has grown from a secure class booking system into a wider student and instructor portal. It now supports student/family bookings, instructor registers, student records, graduation management, payments, emails, texts, contracts, diary follow-ups, KPI tracking, prospects, centre settings, programme upgrades and centre/user permissions.
For instructors
Use the instructor dashboard to load registers, view students, manage prospects, create students, handle graduations, use the diary, and access admin tools.
For students/families
Students can book classes, view family bookings, see graduation and membership information, and receive payment/contract links.
For centre owners
Centre owners can control which features are enabled, manage users, set prices, edit templates and keep their own data separate from other centres.
Login, security and permissions
The portal uses instructor/staff logins stored in tblUsers. Login passwords are hashed and are not recoverable. Email/SMS sending passwords are different: SMTP passwords are encrypted in the secret vault because the system must decrypt them to send messages.
Roles and centre access
Users are limited by centre permissions in PortalUserCentreAccess. A user may be able to view, edit, transfer in, or transfer out for one or more centres. Daniel's access is currently intended for Bolton, Farnworth and Hindley only.
- CanView controls whether a user can see centre data.
- CanEdit controls student/admin edits.
- CanTransferIn and CanTransferOut control student transfers.
- CanViewAllCentres is legacy; the newer centre-access table should be treated as the main rule.
First login and email 2FA
User management supports password setup and first-login password creation. Email two-factor authentication can be enabled for instructors where required. Email codes use the same SMTP/vault mail protocol as other portal emails.
Instructor dashboard
The dashboard is the main working screen for instructors. It shows the logged-in user, centre selector, register date, account role and feature buttons.
Main actions
- Load register loads sessions/bookings for the selected centre and date.
- Refresh admin lists reloads admin summaries and dashboard cards.
- Today jumps the register date back to today.
- Generate next 28 days creates future class sessions from the timetable pattern.
Admin menu
Admin tools are grouped so the dashboard does not become too crowded. Use the admin/menu button near the logout area for tools such as Centre setup, User centre access, Timetable manager, Text templates, Contract templates, Programme upgrade prices, Mail server settings and this Help Centre.
Centre setup and feature switches
Centre Setup controls which parts of the portal a school uses. This is useful because some schools only use prospects, some use class bookings, and others use the full student portal.
Feature switches
Each centre has feature flags in CentrePortalFeatures. A feature can be enabled for access and separately shown or hidden on the dashboard.
- IsEnabled: controls whether the feature/API is available.
- ShowOnDashboard: controls whether the button/card is visible.
Presets
Preset buttons can quickly configure centres for Full portal, Prospects only, No student booking, Instructor/admin only or Light instructor dashboard.
Classes, bookings and instructor register
The class booking system supports single-student bookings and family bookings. Bookings are grouped by ClassBookingGroup and each student has their own ClassBooking row.
Instructor register
Use the register to see who is booked into each class, mark attendance, cancel bookings, and manually book students where the centre has that feature enabled.
Family bookings
Families can book multiple students together. The group record stores who made the booking and the individual booking rows store attendance and status per student.
Student/family portal
The student portal is the family-facing booking and information area. It can show class booking, current bookings, family members, graduation information, tuition/membership dates and pro-shop/payment sections depending on enabled features.
Feature-controlled sections
- Student class booking
- Family booking
- Graduation forms and history
- Tuition payments
- Membership/insurance information
- Pro-shop/equipment sections
- Student profile
Student list and student detail
The student list is the main instructor/admin search screen for current students. The student detail page shows contact details, membership/payment dates, graduation records, contact logs and admin actions.
Student detail actions
- View/edit student information.
- Record payments where enabled.
- View graduation records and send reminders.
- Mark graduation not attending.
- Open programme change/add-on screen.
- Review contact logs and email/text history.
New student signups
The New Student screen creates new student records, supports family signups and can handle Stripe, SmartPay/FuturePay or manual payment setups.
Key steps
- Choose centre, programme and family size.
- Pick tuition package and starting rank.
- Enter student and parent/contact details.
- Choose payment provider.
- Add membership/insurance/signup fees if required.
- Preview the contract terms.
- Create agreement and send signing link, or mark as agreed in person.
Centre-only users
Centre-only users, such as a Hindley login, can create new students for their authorised centre. The form now reads disabled centre fields correctly so it does not fail with missing centre/programme errors.
Contracts and terms
The contract system records what the payer agreed to at signup or programme upgrade. The agreed version is stored as a snapshot in StudentContractAgreements.
Contract templates
Global defaults are available, and each centre can create its own centre-specific template in Contract Templates.
Contract terms
Current options include Rolling Contract, 6 Month Contract, 12 Month Contract, 24 Month Contract, 36 Month Contract and Other. If Other is selected, the instructor can type a custom term.
Notice period
Notice period options include 30 days notice, no notice, 60 days, 90 days and "Full term of the contract must be completed before cancellation."
Signing methods
- Email signing link: sends a public token link to
contract-sign.html.
- Agreed in person: requires the instructor to tick that the payer has read and agreed to the terms shown on screen.
Programme upgrades and add-ons
Existing students can change programme or add extra programmes without replacing their current main programme. This supports examples like Positive Start to Leadership, and adding Instructor Training, CIT, AIT or JIT.
Programme change screen
Open Programme change from Student Detail. The screen lets you choose a school preset or enter manual amounts.
Main programme change
A main programme change updates Students.Programme and creates a record in StudentProgrammeChangeLog.
Add-on programme
An add-on does not replace the main programme. It creates an active row in StudentProgrammeMemberships.
School upgrade prices
Use Programme Upgrade Prices to set centre-specific upgrade fees, monthly increases, new monthly totals and default options.
Graduations
Graduation tools connect the student portal, student detail page and graduation register. They manage form reminders, payment status, attendance, grades, where the student is graduating and whether the student is not attending.
Student detail graduation records
The Student Detail page shows current/next graduation and all past/future graduation records. Actions include email form reminder, text form reminder, copy text, record payment and mark not attending.
Manual grade and where editing
Use Edit details on a graduation row to change the grade/rank and where they are graduating. The "Where" options are:
- At the main graduation
- In Class
- Organised Make-up graduation
If a record is paid and the form is filled but grade or where is missing, the page shows Check grade/where.
Graduation register
The graduation register is used to view students by graduation date and centre, mark attended, handle graduation emails and complete a graduation event.
Access legacy logic
The original Access system automatically creates next graduation records, fills next rank/date and manages attendance completion. The portal now mirrors and extends that workflow.
Payments, Stripe and SmartPay
The portal supports Stripe Online, SmartPay/FuturePay and manual/centre-managed payments.
Stripe
Stripe payments are processed through webhook logs and payment tables. Tuition subscription logic now avoids duplicate tuition advances by only processing the correct invoice-style events.
SmartPay/FuturePay
SmartPay users can be created with Payment Type/FuturePay and sent a contract/signing email automatically. SmartPay students without Stripe IDs can later be migrated to Stripe if required.
SmartPay billing reports
SmartPay Billing imports the monthly SmartPay.uk workbook, stores the school remittance, matches rows to students and shows imported or legacy SmartPay rows on the student Billing tab.
Recording payments
Payment buttons on student/graduation screens should record payment information without double-charging. Stripe checkout is only created when explicitly selected.
Monthly returns
Monthly Returns lets instructors prepare a centre workbook, save a draft, mark the month as sent and download the Excel return built from the FMAC monthly return template.
Emails and SMTP vault
Email delivery now uses the shared portal-mail-common.php protocol with SMTP and encrypted secret vault passwords.
Mail server settings
Global SMTP settings are managed in Mail Server Settings. The working setup uses SMTP, host smtp.livemail.co.uk, port 465, encryption ssl, and "Use SMTP username as From."
Instructor sender settings
Each instructor can use their own sender email and personal SMTP mailbox. This prevents one instructor's mailbox from sending federation-wide emails.
Secret vault
SMTP passwords are stored in CentreSecretVault, not in normal settings tables. The page only shows whether a password exists; it does not return or display the password.
Email templates
Email templates use global defaults with optional centre overrides. HTML templates can be edited as code and previewed as rendered HTML.
Email logging
Diary and contract emails are logged in portal email tables and, where a student exists, linked into student contact logs.
Text templates and logs
The text system supports default text templates and centre-specific overrides. Texts can be selected in follow-up rules and used from student/graduation actions.
Text template editor
Use Text Templates to edit global defaults or centre-specific text. Existing default templates include prospect enquiry, booking confirmation, no-show, new student welcome, membership renewal, graduation reminder, absence check-in and progress check texts.
Logging
Text activity is logged to PortalTextLog and can also be reflected in student contact logs where appropriate.
Diary, follow-ups and KPIs
The diary system creates action tasks for prospects, new students and active student follow-ups. It also tracks KPI events and centre targets.
Diary tasks
Tasks can be overdue, due today, upcoming, completed or all. The default view is overdue only.
Quick actions
Prospect tasks show actions such as Done, Note, Rebook, Attended, No show, Joined and Not joining. Normal active-student follow-up tasks show simpler actions such as Done and Note.
Follow-up rules
Follow-up rules can be edited per centre. Each centre can have its own action rules, contact method, text template, email template and auto-send behaviour.
KPI targets
Centre KPI targets can be set for membership and financial areas. KPI events are created from actions such as enquiry, appointment, intro, enrolment and upgrades.
Prospects and trial lessons
The prospects system tracks enquiries, trial bookings, trial results and follow-ups. Prospect actions can create diary tasks, KPI events, texts and emails.
Common prospect flow
- Create prospect/enquiry.
- Book introductory lesson.
- Mark result: attended, no-show, joined, callback, no interest, etc.
- Diary tasks and KPI events are created from the result.
- If joined, create a new student and contract/payment setup.
Timetable manager
The timetable manager controls class schedules and generated sessions. Feature enforcement prevents users from using timetable APIs where the centre has timetable management disabled.
Common actions
- Create/edit schedule patterns.
- Generate future sessions.
- Close a week.
- Toggle sessions on/off.
- Add one-off sessions.
Student transfers
Student transfers allow an authorised user to move a student from one centre to another and log the transfer. Transfer access depends on CanTransferOut for the old centre and CanTransferIn for the new centre.
Transfer log
Transfers are recorded in PortalStudentTransferLog with student, from centre, to centre, reason and user.
User management and new centres
User management supports creating staff/instructor users, assigning centre access and requiring password setup on first login.
Opening a new centre
A new centre should be added to the centre list, given feature settings, timetable setup, pricing, templates, contract settings, mail/text settings and user access.
User setup checklist
- Create the user in User Management.
- Assign centre permissions.
- Require first-login password setup.
- Enable email 2FA if required.
- Ask the instructor to set sender/email SMTP settings if they will send emails.
Bug reporting
Use Bug Reports when a portal page errors, saves the wrong thing, shows unexpected data or needs a small improvement logged.
- The report stores the centre, logged-in user, page URL, browser and screen size automatically.
- A notification email is sent to the configured bug-report address.
- Centre owners can review reports, add admin notes and mark them triaged, in progress, fixed or closed.
Open bug reports
Troubleshooting
Page says "Invalid server response"
This usually means a PHP error, missing upload, or API returning HTML instead of JSON. Check that the matching PHP file was uploaded and run PHP lint if possible.
Dropdown shows "Loading..." forever
Usually JavaScript stopped before loading data. Hard refresh with Ctrl+F5 and check that the latest JS file was uploaded.
SQL says "Invalid column name" after adding columns
SQL Server compiles the batch before recognising new columns. Run scripts that contain GO in SSMS/Azure Data Studio as a script.
SMTP error 550 send-as
The SMTP mailbox is not allowed to send as the selected From address. Use "Use SMTP username as From" or configure proper send-as permission.
Email test fails with SMTP not configured
Open Mail Server Settings, enter the SMTP host, mailbox, and vault-stored password, then send another delivery test.
Centre-only user cannot create student
Check centre access permissions and ensure the newest new-student JavaScript/API is uploaded. Disabled centre fields are now handled correctly.
Admin/database reference
This section lists the main database objects used by the current portal.
Core student/booking
Students
ClassBookingGroup
ClassBooking
tblUsers
PortalUserCentreAccess
CentrePortalFeatures
Graduations
Graduation Records
Graduation Dates
Ranks
tblEmailTemplates
tblEmailLog
Student Contact logs
Diary/KPI
DiaryKPITypes
DiaryActionTypes
DiaryFollowUpRules
StudentDiaryTasks
DiaryKPIEvents
CentreKPITargets
Messaging
CentreEmailTemplateOverrides
PortalEmailLog
PortalTextTemplates
CentreTextTemplateOverrides
PortalTextLog
CentreSecretVault
Contracts/programmes
PortalContractTemplates
CentreContractSettings
StudentContractAgreements
PortalContractNoticePeriods
PortalContractTerms
CentreProgrammeUpgradePrices
StudentProgrammeMemberships
StudentProgrammeChangeLog
Payments
StripeWebhookLog
StripePayments
Payment Information
tblCentrePrices