Fund Sanctions Management System (FSMS)
Multi-stage fund sanction workflow for government budget allocations - replacing an unvalidated Excel process with atomic transactions and full audit trails.
A Django system managing the end-to-end workflow of government fund sanctions - State Budget Allocations, certification tranches, and Mother Sanctions - with strict multi-stage validation, transactional integrity, and complete audit trails, built for a Ministry of Education section that previously tracked this process by hand in Excel.
The Challenge
The section relied on a shared Excel sheet to track fund releases and expenditure, with no row-level validation - data intended for one row could be misplaced with no safeguard. PFMS, India's public financial management system, doesn't track fund movement at this day-to-day granularity. Beyond basic tracking, the actual sanctioning process required enforcing a strict validation hierarchy (SBA Allocation → Certification → Mother Sanction) that a spreadsheet had no structural way to guarantee, plus separate aggregation logic for Union Territories, where sanctions apply to Object Head Types rather than individual budget heads.
Key Decisions & Tradeoffs
- Enforced the SBA → Certification → Mother Sanction validation hierarchy directly in the data model: funds cannot be sanctioned beyond what was certified, and cannot be certified beyond what was allocated - closing the exact validation gap that made the Excel process error-prone.
- Built a 'one draft per budget head' guardrail preventing duplicate or conflicting in-progress sanctions, enforced at both UI and API level.
- Used atomic database transactions for batch sanction finalization: an all-or-nothing guarantee where, if any sanction in a batch fails validation, none of them finalize - no partially-applied state possible.
- Designed separate aggregation logic for Special Union Territories (Andaman & Nicobar, Chandigarh, Dadra & Nagar Haveli, Lakshadweep), where sanctions apply to Object Head Types (General/SC/ST) rather than individual budget heads, distinct from standard-state logic.
- Built a parallel versioning strategy - separate V1/V2 views, templates, and service functions - allowing new logic to be shipped and instantly toggled or rolled back via a single URL configuration change, with no migrations or redeploys required to revert.
- Integrated django-simple-history for a full audit trail on every sanction and allocation change, and shared IFD (Integrated Financial Division) Entry Numbers for batch tracking across states.
Outcome
Replaced a validation-free, error-prone Excel workflow with a system that structurally enforces the ministry's actual sanctioning rules, gives the section instant rollback between logic versions with zero downtime, and provides complete auditability of every change.