Mapping the CSD Demo Script pain points to Missio GL engine pages, structured as a video narrative. Generated 2026-04-21.
These are the 35 explicit "demonstrate the ability to…" requirements from the General Ledger section of the Demo Script, grouped by theme. CSD wants one system that does all of them without bolt-ons.
Every GL demo-script requirement mapped to the page / route that demonstrates it.
| # | Pain point | Missio page | Status |
|---|---|---|---|
| 1 | COA structure, change tracking, history | Chart of Accounts + CoA Change Requests | 🟢 Covered |
| 2 | Block account for posting | COA → Toggle Freeze | 🟢 Covered |
| 3 | Unlimited user-defined categories | Master Data Categories | 🟢 Covered |
| 4 | Auto-post JEs from sub-ledgers | Frappe Posters (auto, per observer) — JE list shows origin | 🟢 Covered |
| 5 | Auto-reversals | Recurring JEs → auto-reverse offset days | 🟢 Covered |
| 6 | User-written validation rules | Account Dimension Rules (gl-dimensions.requirements) | 🟢 Covered |
| 7 | Approval workflow for new COA segments | CoA Change Requests (submit → approve/reject) | 🟢 Covered |
| 8 | Governmental basis (cash/accrual/modified) | JE basis field + filter on JE list (GAAP / Modified Accrual) | 🟢 Covered |
| 9 | GASB compliance | Financial Reports: Trial Balance, Balance Sheet, Income Statement | 🟡 Demonstrate narrative |
| 10 | Flexible closing rules | Period Close | 🟢 Covered |
| 11 | BAI bank e-file + lockbox | Bank Imports (BAI) + BAI Code Map + AR Suspense + Cash Position | 🟢 Covered |
| 12 | Ad-hoc queries scoped by security | Saved Queries (Finance → Other → Saved Queries) | 🟢 Covered |
| 13 | Subtotals, grouping, function-level reports | Trial Balance + Account Detail (group by dimension) | 🟢 Covered |
| 14 | Full financial statement set | Trial Balance, Balance Sheet, Income Statement, Cash Flow, Account Detail | 🟢 Covered |
| 15 | JE inquiry + drill-down | JE list → JE show → line drill to account | 🟢 Covered |
| 16 | Close calendar with tasks, dependencies, escalation | Period Close → Checklist (11 tasks, marked per step) | 🟢 Covered |
| 17 | Driven dates on dashboard + email + change log | Period Close index (due-date dashboard) + activity log | 🟡 Demonstrate narrative |
| 18 | GL summary → detail drill-down for OOB | General Ledger index → Account Detail (per-account drill) | 🟢 Covered |
| 19 | Close AP before GL + manual JE to open period | Period Close (independent module close) + Prior-Period Adjustments | 🟢 Covered |
| 20 | Balancing JE auto by business unit + audit | JE create — Operating Unit required, dimension requirements enforced | 🟢 Covered |
| 21 | Validate JE as entered (no one-sided) | JE store()/update() validators — balance + debit-XOR-credit | 🟢 Covered |
| 22 | Reverse posted JE / delete unposted | JE list → Reverse Entry (posted); Edit + Duplicate (drafts — new today) | 🟢 Covered |
| 23 | Notifications for pending JEs | JE Approvals Inbox | 🟢 Covered |
| 24 | Attachments, notes, copy JE from prior period | JE Attachments (per-JE drawer) + Duplicate + Copy-attachments-from-prior | 🟢 Covered |
| 25 | Upload JEs from Excel | JE Upload Excel (template download + preview + commit) | 🟢 Covered |
| 26 | Attachments visible before approval | Approvals Inbox shows attachment previews | 🟢 Covered |
| 27 | JE reference # cross-reference for grants | JE reference field + SEFA Report cross-reference | 🟢 Covered |
| 28 | All JE types: manual, recurring, allocations, reversals, templates | JE + Recurring JE Templates + auto-reverse offset | 🟢 Covered |
| 29 | Which JEs haven't been interfaced | GL index — filter by status (draft / posted) + source_type | 🟢 Covered |
| 30 | Available balance inquiry | COA → Account Balance (YTD, encumbered, posted) | 🟢 Covered |
| 31 | Sub-ledger → GL OOB report | Account Detail report + reconciliation drill | 🟡 Demonstrate narrative |
| 32 | Validate COA string | Account Dimension Rules (enforced on JE, AP, AR, Budget) | 🟢 Covered |
| 33 | Audit trail on JE changes | Activity log on JE show page | 🟡 Demonstrate narrative |
| 34 | Prior period/year adjustments | Prior Period Adjustments page + Period Close Reopen | 🟢 Covered |
| 35 | Year-end close | Year-End Close (load balances → post) | 🟢 Covered |
Each scene maps to a CSD actor (Jane Smith, Sam Jones, Melissa Roberts) doing real work on the same data the demo script spells out (Georgia Power OOB, Grant Revenue swap, HVAC draft JE, March 2025 period close).
Cold open on Jane Smith (GL Manager) opening her morning worklist. Dashboard shows pending approvals, period-close countdown ("2 days until March 2025 close"), and 3 out-of-balance alerts.
"CSD's General Ledger is the single source of truth for $62M in revenue and $50M in expenditures across General Fund, Special Revenue, School Nutrition, and Capital Projects. One period close per month — eleven tasks, three owners, zero tolerance for out-of-balance entries. Here's how Missio runs it."
/account/dashboard (finance tab) · /account/period-close (index) · /account/je-approvalsJane opens Chart of Accounts. Columns: Account #, Name, Type, Frozen, Operating Unit, Required Dimensions. She filters to "Fund 100 / Function 1000 / Object 610" — the Supplies account family. Clicks one account to show Available Balance (posted $38k, encumbered $12k, YTD remaining $8k).
Then: Sam requests a new object code "618 — Digital Textbooks". Goes through CoA Change Request: fills form with reason, attaches memo, submits. Jane receives in her approvals inbox, clicks Approve. COA updates in real time.
Finally Jane clicks Toggle Freeze on a deprecated account — it's now blocked from posting. If a user tries to add a JE line to it, the UI rejects with "Account is frozen — posting blocked".
"Chart of Accounts isn't just a list — it's a controlled vocabulary. New segments require a workflow approval with justification. Deprecated ones get frozen, not deleted, preserving history. And Required Dimension rules (Fund + Program + Function + Object + School + Project) live here — so every line that posts to this account carries its full reporting context."
/account/chart-of-accounts · /account/chart-of-accounts/account-balance · /account/chart-of-accounts/dimension-requirements · /account/coa-change-requests (create + approve flow)Jane opens Master Data Categories. Six categories: Fund, Program, Function, Object, School, Project. She clicks "School" — shows the 5 CSD locations (Decatur High, Oakhurst Elementary, Glennwood Elementary, Beacon Hill Middle, Renfroe Middle) with their activation toggles. Adds a sixth: "Talley Street Upper Elementary" — effective July 2026. Row appears immediately in every downstream dropdown.
Quick cut to JE create form — Talley Street now appears in the School dimension dropdown on line 1. Jane selects it, and a small 🟢 indicator confirms the account's dimension requirements are now satisfied.
/account/master-data-categoriesSam Jones opens the JE list, clicks + New Journal Entry. Drawer opens with 2 lines. Sam attempts to enter the Georgia Power scenario as-posted-incorrectly: $68,000 DR / $63,000 CR. Clicks Save Draft. Missio's validator fires inline: "Out of balance: debits $68,000.00 ≠ credits $63,000.00". Sam corrects to $63,000 — save succeeds as draft.
Sam opens the JE show page, clicks Attach — uploads the Georgia Power invoice PDF + signed approval memo. Attachments visible before approval. Then from the JE list kebab → Duplicate — a new draft opens dated today, memo pre-filled "Copy of JE-2026-00045 — Georgia Power May 2025". Lines + dimensions carry over. User just changes the date and posts May's recurring bill as a fresh JE.
Cut to Jane. She has a 200-line allocation JE from the grant team. Opens Upload Excel, downloads the template, pastes from the grant team's spreadsheet, uploads. Preview screen shows all 200 lines, validation errors highlighted (3 accounts frozen, 2 lines unbalanced). Jane fixes in the Excel, re-uploads, clicks Commit. JEs appear grouped by je_group — one balanced JE per group.
Draft hits the JE Approvals Inbox (threshold $50k+). Melissa Roberts (Exec) sees it with full attachment preview. She approves with a comment. JE auto-posts to Frappe. Later a transaction is discovered to be wrong — Melissa clicks Reverse Entry on the kebab. Confirmation prompt, then a CANCELLED badge on the original. Frappe voucher cancelled (not deleted). Audit trail preserved.
/account/journal-entries · /account/journal-entries/create (modal) · /account/journal-entries/{id} (show + attachments) · /account/journal-entries/{id}/edit · /account/journal-entries/{id}/duplicate · /account/journal-entries/upload-excel · /account/je-approvalsJane opens Recurring JEs. Shows the monthly bus-fuel accrual template: amount $45k, recurrence monthly, auto-reverse 2 days after posting. She creates a new template for the State Health Insurance monthly accrual ($687k / 12). Fills lines, clicks Submit for Approval. Goes to Melissa — she approves. Template is now active + pre-approved — next spawned JE auto-posts without a per-JE approval because the template was approved (Model B).
Cut to next month: the spawned JE appears in the list with a tag "⚡ from template · auto-posted". Two days later, the reversal appears automatically on the GL.
"CSD runs 40+ recurring accruals a month. Missio's recurring engine approves the template once — then every monthly spawn auto-posts without re-approval, unless someone modifies a line. Auto-reverse on Day-of-Month-2 is baked into the template, not managed by hand."
/account/recurring-jes · /account/recurring-jes/create · /account/recurring-jes/{id} (show + approval)Melissa opens Trial Balance. Filters: period 03/01/2025–03/31/2025, basis Modified Accrual. Report renders with Fund → Function → Object grouping and subtotals. Exports to Excel with one click. Toggles to GAAP basis — totals change because depreciation lines now appear.
Melissa sees Supplies (Object 610) at $847k YTD and clicks in. Landed on Account Detail with every JE touching that account, by date. Clicks a $12.5k line from 4/14/26 — drills into the JE show page, sees it came from AR invoice Karoline Durbin. "From COA → Trial Balance → Account Detail → JE → source invoice" in four clicks.
Cut to Income Statement + Balance Sheet side by side. Income Statement: custom date range 10/01/2024–09/30/2025 (shifted fiscal year for school-year reporting — a CSD script-specific ask). Balance Sheet shows Net Position by restriction class (Capital, Food, State Grants, Unrestricted) matching CSD's governmental reporting structure.
Jane runs Cash Position — today's balance + 30-day rolling forecast across operating, payroll, concentration. Saves it as a Saved Query so the Cabinet sees it every Monday. Demonstrates security scoping: Patrice Allison (Oakhurst Bookkeeper) only sees her school's accounts.
/account/finance/reports/trial-balance · /account/finance/reports/account-detail · /account/finance/reports/balance-sheet · /account/reports/income-expense-report · /account/cash-flow · /account/cash-position · /account/finance/other/saved-queriesJane opens Period Close. March 2025 calendar appears with all 11 tasks from CSD's script (Revise Schedule → Verify Recurring JEs → Update Fixed Asset Schedule → Preliminary Bank Rec → Period-End Close → Generate Reports → Close AP & AR → Update BS Schedules → Complete FS → Distribute Closing Package → Distribute Externally). Owner + due-date shown per task. Dependencies rendered visually.
On Task 2 (Verify Recurring JEs), a red dot: George Ramirez underpayment detected. Jane clicks in — sees the affected JE, adjusts, routes the correction through a dynamic approval workflow. Task flips to ✅ green.
Task 3 runs the depreciation post for the two buses ($719k), Task 5 closes the March period (all JEs with posting_date ≤ 3/31 are locked), Task 6 auto-generates the reporting package.
Per the Grant Revenue script — Local Share Costs and Grant Reimbursement columns were swapped in a December 2024 JE. Jane opens Prior Period Adjustments, reopens December (authorized), posts the adjusting JE with a required Adjustment Reason ("Reclassify Grant 001 + 002 Local Share / Reimbursement per CFO memo 2026-02"). The adjustment posts to the reopened period. December re-closes automatically once the task completes.
Jump to 6/30/2026. Jane opens Year-End Close. Loads FY balances. Single Post button: Missio zeros all revenue + expenditure accounts to Fund Balance, carries forward Balance Sheet accounts, creates opening balances for FY27. Audit log shows who ran it, when, which fund. Every movement links back to the underlying JE.
/account/period-close · /account/period-close/{id}/checklist · /account/journal-entries/prior-period-adjustments · /account/year-end-closeEvery GL-related page in Missio, grouped by section. Use this as the "don't forget to click here" checklist during demo prep.
reference field to grant sources. Demo-script #27.The three items marked 🟡 in the coverage matrix — prepare a talking point rather than hoping CSD doesn't ask.
updated_at + created_by on JE/JE lines but not a field-level change log. Narrative: show the created/posted/cancelled timestamps on the JE show page and point to the JE Approvals Inbox history section which records who did what. If CSD probes for line-level change history, it's a post-sale enhancement.Generated 2026-04-21 · Missio GL Engine · See also /public/docs/gl-integration-report.html + /public/docs/gl-test-checklist.html