{"level":"info","message":"SEQUELIZE_QUERY","query":"Executing (default): SELECT 1+1 AS result","service":"cbc-sms","timestamp":"2026-07-08 16:01:43"}
{"level":"info","message":"SEQUELIZE_QUERY","query":"Executing (default): SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_TYPE = 'BASE TABLE' AND TABLE_NAME = 'FeeStructure' AND TABLE_SCHEMA = 'cbc_sms'","service":"cbc-sms","timestamp":"2026-07-08 16:01:43"}
{"level":"info","message":"✓ Sequelize database connection established successfully","service":"cbc-sms","timestamp":"2026-07-08 16:01:43"}
{"level":"info","message":"SEQUELIZE_QUERY","query":"Executing (default): SHOW FULL COLUMNS FROM `FeeStructure`;","service":"cbc-sms","timestamp":"2026-07-08 16:01:43"}
{"level":"info","message":"SEQUELIZE_QUERY","query":"Executing (default): SELECT CONSTRAINT_NAME as constraint_name,CONSTRAINT_NAME as constraintName,CONSTRAINT_SCHEMA as constraintSchema,CONSTRAINT_SCHEMA as constraintCatalog,TABLE_NAME as tableName,TABLE_SCHEMA as tableSchema,TABLE_SCHEMA as tableCatalog,COLUMN_NAME as columnName,REFERENCED_TABLE_SCHEMA as referencedTableSchema,REFERENCED_TABLE_SCHEMA as referencedTableCatalog,REFERENCED_TABLE_NAME as referencedTableName,REFERENCED_COLUMN_NAME as referencedColumnName FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE where TABLE_NAME = 'FeeStructure' AND CONSTRAINT_NAME!='PRIMARY' AND CONSTRAINT_SCHEMA='cbc_sms' AND REFERENCED_TABLE_NAME IS NOT NULL;","service":"cbc-sms","timestamp":"2026-07-08 16:01:43"}
{"level":"info","message":"SEQUELIZE_QUERY","query":"Executing (default): ALTER TABLE `FeeStructure` ADD `status` ENUM('ACTIVE', 'DRAFT', 'ARCHIVED') NOT NULL DEFAULT 'ACTIVE';","service":"cbc-sms","timestamp":"2026-07-08 16:01:43"}
{"level":"info","message":"SEQUELIZE_QUERY","query":"Executing (default): ALTER TABLE `FeeStructure` CHANGE `name` `name` VARCHAR(200) NOT NULL;","service":"cbc-sms","timestamp":"2026-07-08 16:01:44"}
{"level":"info","message":"SEQUELIZE_QUERY","query":"Executing (default): ALTER TABLE `FeeStructure` ADD FOREIGN KEY (`gradeLevelId`) REFERENCES `GradeLevel` (`id`) ON DELETE CASCADE ON UPDATE CASCADE;","service":"cbc-sms","timestamp":"2026-07-08 16:01:45"}
{"level":"info","message":"SEQUELIZE_QUERY","query":"Executing (default): ALTER TABLE `FeeStructure` CHANGE `boardingType` `boardingType` ENUM('DAY', 'BOARDING', 'DAY_AND_BOARDING', 'ALL') NOT NULL;","service":"cbc-sms","timestamp":"2026-07-08 16:01:46"}
{"level":"info","message":"SEQUELIZE_QUERY","query":"Executing (default): SELECT CONSTRAINT_NAME as constraint_name,CONSTRAINT_NAME as constraintName,CONSTRAINT_SCHEMA as constraintSchema,CONSTRAINT_SCHEMA as constraintCatalog,TABLE_NAME as tableName,TABLE_SCHEMA as tableSchema,TABLE_SCHEMA as tableCatalog,COLUMN_NAME as columnName,REFERENCED_TABLE_SCHEMA as referencedTableSchema,REFERENCED_TABLE_SCHEMA as referencedTableCatalog,REFERENCED_TABLE_NAME as referencedTableName,REFERENCED_COLUMN_NAME as referencedColumnName FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE WHERE (REFERENCED_TABLE_NAME = 'FeeStructure' AND REFERENCED_TABLE_SCHEMA = 'cbc_sms' AND REFERENCED_COLUMN_NAME = 'isActive') OR (TABLE_NAME = 'FeeStructure' AND TABLE_SCHEMA = 'cbc_sms' AND COLUMN_NAME = 'isActive' AND REFERENCED_TABLE_NAME IS NOT NULL)","service":"cbc-sms","timestamp":"2026-07-08 16:01:46"}
{"level":"info","message":"SEQUELIZE_QUERY","query":"Executing (default): ALTER TABLE `FeeStructure` DROP `isActive`;","service":"cbc-sms","timestamp":"2026-07-08 16:01:46"}
{"level":"info","message":"SEQUELIZE_QUERY","query":"Executing (default): ALTER TABLE `FeeStructure` CHANGE `createdAt` `createdAt` DATETIME NOT NULL;","service":"cbc-sms","timestamp":"2026-07-08 16:01:47"}
{"level":"info","message":"SEQUELIZE_QUERY","query":"Executing (default): ALTER TABLE `FeeStructure` CHANGE `updatedAt` `updatedAt` DATETIME NOT NULL;","service":"cbc-sms","timestamp":"2026-07-08 16:01:47"}
{"level":"info","message":"SEQUELIZE_QUERY","query":"Executing (default): ALTER TABLE `FeeStructure` ADD FOREIGN KEY (`termId`) REFERENCES `Term` (`id`) ON DELETE CASCADE ON UPDATE CASCADE;","service":"cbc-sms","timestamp":"2026-07-08 16:01:47"}
{"level":"info","message":"SEQUELIZE_QUERY","query":"Executing (default): ALTER TABLE `FeeStructure` CHANGE `totalAmount` `totalAmount` DECIMAL(12,2) NOT NULL;","service":"cbc-sms","timestamp":"2026-07-08 16:01:48"}
{"level":"info","message":"SEQUELIZE_QUERY","query":"Executing (default): ALTER TABLE `FeeStructure` CHANGE `effectiveFrom` `effectiveFrom` DATETIME;","service":"cbc-sms","timestamp":"2026-07-08 16:01:48"}
{"level":"info","message":"SEQUELIZE_QUERY","query":"Executing (default): ALTER TABLE `FeeStructure` CHANGE `effectiveTo` `effectiveTo` DATETIME;","service":"cbc-sms","timestamp":"2026-07-08 16:01:49"}
{"level":"info","message":"SEQUELIZE_QUERY","query":"Executing (default): SHOW INDEX FROM `FeeStructure`","service":"cbc-sms","timestamp":"2026-07-08 16:01:49"}
{"level":"info","message":"SEQUELIZE_QUERY","query":"Executing (default): SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_TYPE = 'BASE TABLE' AND TABLE_NAME = 'FeeStructureItem' AND TABLE_SCHEMA = 'cbc_sms'","service":"cbc-sms","timestamp":"2026-07-08 16:01:49"}
{"level":"info","message":"SEQUELIZE_QUERY","query":"Executing (default): SHOW FULL COLUMNS FROM `FeeStructureItem`;","service":"cbc-sms","timestamp":"2026-07-08 16:01:49"}
{"level":"info","message":"SEQUELIZE_QUERY","query":"Executing (default): SELECT CONSTRAINT_NAME as constraint_name,CONSTRAINT_NAME as constraintName,CONSTRAINT_SCHEMA as constraintSchema,CONSTRAINT_SCHEMA as constraintCatalog,TABLE_NAME as tableName,TABLE_SCHEMA as tableSchema,TABLE_SCHEMA as tableCatalog,COLUMN_NAME as columnName,REFERENCED_TABLE_SCHEMA as referencedTableSchema,REFERENCED_TABLE_SCHEMA as referencedTableCatalog,REFERENCED_TABLE_NAME as referencedTableName,REFERENCED_COLUMN_NAME as referencedColumnName FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE where TABLE_NAME = 'FeeStructureItem' AND CONSTRAINT_NAME!='PRIMARY' AND CONSTRAINT_SCHEMA='cbc_sms' AND REFERENCED_TABLE_NAME IS NOT NULL;","service":"cbc-sms","timestamp":"2026-07-08 16:01:49"}
{"level":"info","message":"SEQUELIZE_QUERY","query":"Executing (default): ALTER TABLE `FeeStructureItem` ADD `isRefundable` TINYINT(1) NOT NULL DEFAULT false;","service":"cbc-sms","timestamp":"2026-07-08 16:01:49"}
{"level":"info","message":"SEQUELIZE_QUERY","query":"Executing (default): ALTER TABLE `FeeStructureItem` ADD `isApprox` TINYINT(1) NOT NULL DEFAULT false;","service":"cbc-sms","timestamp":"2026-07-08 16:01:49"}
{"level":"info","message":"SEQUELIZE_QUERY","query":"Executing (default): ALTER TABLE `FeeStructureItem` ADD FOREIGN KEY (`feeStructureId`) REFERENCES `FeeStructure` (`id`) ON DELETE CASCADE ON UPDATE CASCADE;","service":"cbc-sms","timestamp":"2026-07-08 16:01:49"}
{"level":"info","message":"SEQUELIZE_QUERY","query":"Executing (default): ALTER TABLE `FeeStructureItem` CHANGE `name` `name` VARCHAR(255) NOT NULL;","service":"cbc-sms","timestamp":"2026-07-08 16:01:50"}
{"level":"info","message":"SEQUELIZE_QUERY","query":"Executing (default): ALTER TABLE `FeeStructureItem` CHANGE `category` `category` ENUM('TUITION', 'MEALS', 'TRANSPORT', 'UNIFORMS', 'ACTIVITY', 'EXAM', 'LIBRARY', 'MEDICAL', 'DYNAMIC', 'OTHER') NOT NULL;","service":"cbc-sms","timestamp":"2026-07-08 16:01:50"}
{"level":"info","message":"SEQUELIZE_QUERY","query":"Executing (default): ALTER TABLE `FeeStructureItem` CHANGE `amount` `amount` DECIMAL(12,2) NOT NULL;","service":"cbc-sms","timestamp":"2026-07-08 16:01:50"}
{"level":"info","message":"SEQUELIZE_QUERY","query":"Executing (default): ALTER TABLE `FeeStructureItem` CHANGE `isRequired` `isRequired` TINYINT(1) NOT NULL DEFAULT true;","service":"cbc-sms","timestamp":"2026-07-08 16:01:50"}
{"level":"info","message":"SEQUELIZE_QUERY","query":"Executing (default): ALTER TABLE `FeeStructureItem` CHANGE `description` `description` TEXT;","service":"cbc-sms","timestamp":"2026-07-08 16:01:50"}
{"level":"info","message":"SEQUELIZE_QUERY","query":"Executing (default): SHOW INDEX FROM `FeeStructureItem`","service":"cbc-sms","timestamp":"2026-07-08 16:01:50"}
{"level":"info","message":"SEQUELIZE_QUERY","query":"Executing (default): SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_TYPE = 'BASE TABLE' AND TABLE_NAME = 'additional_fees' AND TABLE_SCHEMA = 'cbc_sms'","service":"cbc-sms","timestamp":"2026-07-08 16:01:50"}
{"level":"info","message":"SEQUELIZE_QUERY","query":"Executing (default): SHOW FULL COLUMNS FROM `additional_fees`;","service":"cbc-sms","timestamp":"2026-07-08 16:01:50"}
{"level":"info","message":"SEQUELIZE_QUERY","query":"Executing (default): SELECT CONSTRAINT_NAME as constraint_name,CONSTRAINT_NAME as constraintName,CONSTRAINT_SCHEMA as constraintSchema,CONSTRAINT_SCHEMA as constraintCatalog,TABLE_NAME as tableName,TABLE_SCHEMA as tableSchema,TABLE_SCHEMA as tableCatalog,COLUMN_NAME as columnName,REFERENCED_TABLE_SCHEMA as referencedTableSchema,REFERENCED_TABLE_SCHEMA as referencedTableCatalog,REFERENCED_TABLE_NAME as referencedTableName,REFERENCED_COLUMN_NAME as referencedColumnName FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE where TABLE_NAME = 'additional_fees' AND CONSTRAINT_NAME!='PRIMARY' AND CONSTRAINT_SCHEMA='cbc_sms' AND REFERENCED_TABLE_NAME IS NOT NULL;","service":"cbc-sms","timestamp":"2026-07-08 16:01:50"}
{"level":"info","message":"SEQUELIZE_QUERY","query":"Executing (default): ALTER TABLE `additional_fees` ADD `applicableGrades` JSON NOT NULL;","service":"cbc-sms","timestamp":"2026-07-08 16:01:50"}
{"level":"info","message":"SEQUELIZE_QUERY","query":"Executing (default): ALTER TABLE `additional_fees` ADD `vatPercent` DECIMAL(5,2) NOT NULL DEFAULT 0;","service":"cbc-sms","timestamp":"2026-07-08 16:01:50"}
{"level":"info","message":"SEQUELIZE_QUERY","query":"Executing (default): ALTER TABLE `additional_fees` ADD `refundable` TINYINT(1) NOT NULL DEFAULT false;","service":"cbc-sms","timestamp":"2026-07-08 16:01:50"}
{"level":"info","message":"SEQUELIZE_QUERY","query":"Executing (default): ALTER TABLE `additional_fees` ADD `refundCondition` VARCHAR(255);","service":"cbc-sms","timestamp":"2026-07-08 16:01:50"}
{"level":"info","message":"SEQUELIZE_QUERY","query":"Executing (default): ALTER TABLE `additional_fees` ADD `status` ENUM('ACTIVE', 'INACTIVE') NOT NULL DEFAULT 'ACTIVE';","service":"cbc-sms","timestamp":"2026-07-08 16:01:50"}
{"level":"info","message":"SEQUELIZE_QUERY","query":"Executing (default): ALTER TABLE `additional_fees` CHANGE `name` `name` VARCHAR(255) NOT NULL;","service":"cbc-sms","timestamp":"2026-07-08 16:01:51"}
{"level":"info","message":"SEQUELIZE_QUERY","query":"Executing (default): ALTER TABLE `additional_fees` CHANGE `description` `description` TEXT;","service":"cbc-sms","timestamp":"2026-07-08 16:01:51"}
{"level":"info","message":"SEQUELIZE_QUERY","query":"Executing (default): ALTER TABLE `additional_fees` CHANGE `amount` `amount` FLOAT NOT NULL;","service":"cbc-sms","timestamp":"2026-07-08 16:01:51"}
{"level":"info","message":"SEQUELIZE_QUERY","query":"Executing (default): ALTER TABLE `additional_fees` CHANGE `category` `category` ENUM('ONE_TIME', 'RECURRING') NOT NULL;","service":"cbc-sms","timestamp":"2026-07-08 16:01:51"}
{"level":"info","message":"SEQUELIZE_QUERY","query":"Executing (default): SELECT CONSTRAINT_NAME as constraint_name,CONSTRAINT_NAME as constraintName,CONSTRAINT_SCHEMA as constraintSchema,CONSTRAINT_SCHEMA as constraintCatalog,TABLE_NAME as tableName,TABLE_SCHEMA as tableSchema,TABLE_SCHEMA as tableCatalog,COLUMN_NAME as columnName,REFERENCED_TABLE_SCHEMA as referencedTableSchema,REFERENCED_TABLE_SCHEMA as referencedTableCatalog,REFERENCED_TABLE_NAME as referencedTableName,REFERENCED_COLUMN_NAME as referencedColumnName FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE WHERE (REFERENCED_TABLE_NAME = 'additional_fees' AND REFERENCED_TABLE_SCHEMA = 'cbc_sms' AND REFERENCED_COLUMN_NAME = 'termId') OR (TABLE_NAME = 'additional_fees' AND TABLE_SCHEMA = 'cbc_sms' AND COLUMN_NAME = 'termId' AND REFERENCED_TABLE_NAME IS NOT NULL)","service":"cbc-sms","timestamp":"2026-07-08 16:01:51"}
{"level":"info","message":"SEQUELIZE_QUERY","query":"Executing (default): ALTER TABLE `additional_fees` DROP `termId`;","service":"cbc-sms","timestamp":"2026-07-08 16:01:51"}
{"level":"info","message":"SEQUELIZE_QUERY","query":"Executing (default): SELECT CONSTRAINT_NAME as constraint_name,CONSTRAINT_NAME as constraintName,CONSTRAINT_SCHEMA as constraintSchema,CONSTRAINT_SCHEMA as constraintCatalog,TABLE_NAME as tableName,TABLE_SCHEMA as tableSchema,TABLE_SCHEMA as tableCatalog,COLUMN_NAME as columnName,REFERENCED_TABLE_SCHEMA as referencedTableSchema,REFERENCED_TABLE_SCHEMA as referencedTableCatalog,REFERENCED_TABLE_NAME as referencedTableName,REFERENCED_COLUMN_NAME as referencedColumnName FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE WHERE (REFERENCED_TABLE_NAME = 'additional_fees' AND REFERENCED_TABLE_SCHEMA = 'cbc_sms' AND REFERENCED_COLUMN_NAME = 'academicYearId') OR (TABLE_NAME = 'additional_fees' AND TABLE_SCHEMA = 'cbc_sms' AND COLUMN_NAME = 'academicYearId' AND REFERENCED_TABLE_NAME IS NOT NULL)","service":"cbc-sms","timestamp":"2026-07-08 16:01:51"}
{"level":"info","message":"SEQUELIZE_QUERY","query":"Executing (default): ALTER TABLE `additional_fees` DROP `academicYearId`;","service":"cbc-sms","timestamp":"2026-07-08 16:01:51"}
{"level":"info","message":"SEQUELIZE_QUERY","query":"Executing (default): SELECT CONSTRAINT_NAME as constraint_name,CONSTRAINT_NAME as constraintName,CONSTRAINT_SCHEMA as constraintSchema,CONSTRAINT_SCHEMA as constraintCatalog,TABLE_NAME as tableName,TABLE_SCHEMA as tableSchema,TABLE_SCHEMA as tableCatalog,COLUMN_NAME as columnName,REFERENCED_TABLE_SCHEMA as referencedTableSchema,REFERENCED_TABLE_SCHEMA as referencedTableCatalog,REFERENCED_TABLE_NAME as referencedTableName,REFERENCED_COLUMN_NAME as referencedColumnName FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE WHERE (REFERENCED_TABLE_NAME = 'additional_fees' AND REFERENCED_TABLE_SCHEMA = 'cbc_sms' AND REFERENCED_COLUMN_NAME = 'dueDate') OR (TABLE_NAME = 'additional_fees' AND TABLE_SCHEMA = 'cbc_sms' AND COLUMN_NAME = 'dueDate' AND REFERENCED_TABLE_NAME IS NOT NULL)","service":"cbc-sms","timestamp":"2026-07-08 16:01:51"}
{"level":"info","message":"SEQUELIZE_QUERY","query":"Executing (default): ALTER TABLE `additional_fees` DROP `dueDate`;","service":"cbc-sms","timestamp":"2026-07-08 16:01:52"}
{"level":"info","message":"SEQUELIZE_QUERY","query":"Executing (default): SELECT CONSTRAINT_NAME as constraint_name,CONSTRAINT_NAME as constraintName,CONSTRAINT_SCHEMA as constraintSchema,CONSTRAINT_SCHEMA as constraintCatalog,TABLE_NAME as tableName,TABLE_SCHEMA as tableSchema,TABLE_SCHEMA as tableCatalog,COLUMN_NAME as columnName,REFERENCED_TABLE_SCHEMA as referencedTableSchema,REFERENCED_TABLE_SCHEMA as referencedTableCatalog,REFERENCED_TABLE_NAME as referencedTableName,REFERENCED_COLUMN_NAME as referencedColumnName FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE WHERE (REFERENCED_TABLE_NAME = 'additional_fees' AND REFERENCED_TABLE_SCHEMA = 'cbc_sms' AND REFERENCED_COLUMN_NAME = 'appliesTo') OR (TABLE_NAME = 'additional_fees' AND TABLE_SCHEMA = 'cbc_sms' AND COLUMN_NAME = 'appliesTo' AND REFERENCED_TABLE_NAME IS NOT NULL)","service":"cbc-sms","timestamp":"2026-07-08 16:01:52"}
{"level":"info","message":"SEQUELIZE_QUERY","query":"Executing (default): ALTER TABLE `additional_fees` DROP `appliesTo`;","service":"cbc-sms","timestamp":"2026-07-08 16:01:52"}
{"level":"info","message":"SEQUELIZE_QUERY","query":"Executing (default): SELECT CONSTRAINT_NAME as constraint_name,CONSTRAINT_NAME as constraintName,CONSTRAINT_SCHEMA as constraintSchema,CONSTRAINT_SCHEMA as constraintCatalog,TABLE_NAME as tableName,TABLE_SCHEMA as tableSchema,TABLE_SCHEMA as tableCatalog,COLUMN_NAME as columnName,REFERENCED_TABLE_SCHEMA as referencedTableSchema,REFERENCED_TABLE_SCHEMA as referencedTableCatalog,REFERENCED_TABLE_NAME as referencedTableName,REFERENCED_COLUMN_NAME as referencedColumnName FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE WHERE (REFERENCED_TABLE_NAME = 'additional_fees' AND REFERENCED_TABLE_SCHEMA = 'cbc_sms' AND REFERENCED_COLUMN_NAME = 'isActive') OR (TABLE_NAME = 'additional_fees' AND TABLE_SCHEMA = 'cbc_sms' AND COLUMN_NAME = 'isActive' AND REFERENCED_TABLE_NAME IS NOT NULL)","service":"cbc-sms","timestamp":"2026-07-08 16:01:52"}
{"level":"info","message":"SEQUELIZE_QUERY","query":"Executing (default): ALTER TABLE `additional_fees` DROP `isActive`;","service":"cbc-sms","timestamp":"2026-07-08 16:01:52"}
{"level":"info","message":"SEQUELIZE_QUERY","query":"Executing (default): ALTER TABLE `additional_fees` CHANGE `schoolId` `schoolId` VARCHAR(191) NOT NULL;","service":"cbc-sms","timestamp":"2026-07-08 16:01:52"}
{"level":"info","message":"SEQUELIZE_QUERY","query":"Executing (default): ALTER TABLE `additional_fees` CHANGE `createdAt` `createdAt` DATETIME NOT NULL;","service":"cbc-sms","timestamp":"2026-07-08 16:01:52"}
{"level":"info","message":"SEQUELIZE_QUERY","query":"Executing (default): ALTER TABLE `additional_fees` CHANGE `updatedAt` `updatedAt` DATETIME NOT NULL;","service":"cbc-sms","timestamp":"2026-07-08 16:01:52"}
{"level":"info","message":"SEQUELIZE_QUERY","query":"Executing (default): SHOW INDEX FROM `additional_fees`","service":"cbc-sms","timestamp":"2026-07-08 16:01:52"}
{"level":"info","message":"SEQUELIZE_QUERY","query":"Executing (default): SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_TYPE = 'BASE TABLE' AND TABLE_NAME = 'dynamic_fee_rules' AND TABLE_SCHEMA = 'cbc_sms'","service":"cbc-sms","timestamp":"2026-07-08 16:01:52"}
{"level":"info","message":"SEQUELIZE_QUERY","query":"Executing (default): SHOW FULL COLUMNS FROM `dynamic_fee_rules`;","service":"cbc-sms","timestamp":"2026-07-08 16:01:52"}
{"level":"info","message":"SEQUELIZE_QUERY","query":"Executing (default): SELECT CONSTRAINT_NAME as constraint_name,CONSTRAINT_NAME as constraintName,CONSTRAINT_SCHEMA as constraintSchema,CONSTRAINT_SCHEMA as constraintCatalog,TABLE_NAME as tableName,TABLE_SCHEMA as tableSchema,TABLE_SCHEMA as tableCatalog,COLUMN_NAME as columnName,REFERENCED_TABLE_SCHEMA as referencedTableSchema,REFERENCED_TABLE_SCHEMA as referencedTableCatalog,REFERENCED_TABLE_NAME as referencedTableName,REFERENCED_COLUMN_NAME as referencedColumnName FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE where TABLE_NAME = 'dynamic_fee_rules' AND CONSTRAINT_NAME!='PRIMARY' AND CONSTRAINT_SCHEMA='cbc_sms' AND REFERENCED_TABLE_NAME IS NOT NULL;","service":"cbc-sms","timestamp":"2026-07-08 16:01:52"}
{"level":"info","message":"SEQUELIZE_QUERY","query":"Executing (default): ALTER TABLE `dynamic_fee_rules` ADD `adjustmentType` ENUM('FLAT', 'PERCENTAGE', 'FIXED') NOT NULL DEFAULT 'FLAT';","service":"cbc-sms","timestamp":"2026-07-08 16:01:52"}
{"level":"info","message":"SEQUELIZE_QUERY","query":"Executing (default): ALTER TABLE `dynamic_fee_rules` ADD `adjustmentValue` DECIMAL(10,2) NOT NULL;","service":"cbc-sms","timestamp":"2026-07-08 16:01:52"}
{"level":"info","message":"SEQUELIZE_QUERY","query":"Executing (default): ALTER TABLE `dynamic_fee_rules` ADD `status` ENUM('ACTIVE', 'INACTIVE') NOT NULL DEFAULT 'ACTIVE';","service":"cbc-sms","timestamp":"2026-07-08 16:01:53"}
{"level":"info","message":"SEQUELIZE_QUERY","query":"Executing (default): ALTER TABLE `dynamic_fee_rules` CHANGE `name` `name` VARCHAR(255) NOT NULL;","service":"cbc-sms","timestamp":"2026-07-08 16:01:53"}
{"level":"info","message":"SEQUELIZE_QUERY","query":"Executing (default): ALTER TABLE `dynamic_fee_rules` CHANGE `description` `description` VARCHAR(500);","service":"cbc-sms","timestamp":"2026-07-08 16:01:53"}
{"level":"info","message":"SEQUELIZE_QUERY","query":"Executing (default): ALTER TABLE `dynamic_fee_rules` CHANGE `ruleType` `ruleType` ENUM('SIBLING_DISCOUNT', 'BOARDING_TYPE_OVERRIDE', 'GRADE_TIER_OVERRIDE', 'VAT_RULE', 'TERM_PRORATION') NOT NULL;","service":"cbc-sms","timestamp":"2026-07-08 16:01:53"}
{"level":"info","message":"SEQUELIZE_QUERY","query":"Executing (default): SELECT CONSTRAINT_NAME as constraint_name,CONSTRAINT_NAME as constraintName,CONSTRAINT_SCHEMA as constraintSchema,CONSTRAINT_SCHEMA as constraintCatalog,TABLE_NAME as tableName,TABLE_SCHEMA as tableSchema,TABLE_SCHEMA as tableCatalog,COLUMN_NAME as columnName,REFERENCED_TABLE_SCHEMA as referencedTableSchema,REFERENCED_TABLE_SCHEMA as referencedTableCatalog,REFERENCED_TABLE_NAME as referencedTableName,REFERENCED_COLUMN_NAME as referencedColumnName FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE WHERE (REFERENCED_TABLE_NAME = 'dynamic_fee_rules' AND REFERENCED_TABLE_SCHEMA = 'cbc_sms' AND REFERENCED_COLUMN_NAME = 'amount') OR (TABLE_NAME = 'dynamic_fee_rules' AND TABLE_SCHEMA = 'cbc_sms' AND COLUMN_NAME = 'amount' AND REFERENCED_TABLE_NAME IS NOT NULL)","service":"cbc-sms","timestamp":"2026-07-08 16:01:53"}
{"level":"info","message":"SEQUELIZE_QUERY","query":"Executing (default): ALTER TABLE `dynamic_fee_rules` DROP `amount`;","service":"cbc-sms","timestamp":"2026-07-08 16:01:53"}
{"level":"info","message":"SEQUELIZE_QUERY","query":"Executing (default): SELECT CONSTRAINT_NAME as constraint_name,CONSTRAINT_NAME as constraintName,CONSTRAINT_SCHEMA as constraintSchema,CONSTRAINT_SCHEMA as constraintCatalog,TABLE_NAME as tableName,TABLE_SCHEMA as tableSchema,TABLE_SCHEMA as tableCatalog,COLUMN_NAME as columnName,REFERENCED_TABLE_SCHEMA as referencedTableSchema,REFERENCED_TABLE_SCHEMA as referencedTableCatalog,REFERENCED_TABLE_NAME as referencedTableName,REFERENCED_COLUMN_NAME as referencedColumnName FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE WHERE (REFERENCED_TABLE_NAME = 'dynamic_fee_rules' AND REFERENCED_TABLE_SCHEMA = 'cbc_sms' AND REFERENCED_COLUMN_NAME = 'isPercentage') OR (TABLE_NAME = 'dynamic_fee_rules' AND TABLE_SCHEMA = 'cbc_sms' AND COLUMN_NAME = 'isPercentage' AND REFERENCED_TABLE_NAME IS NOT NULL)","service":"cbc-sms","timestamp":"2026-07-08 16:01:53"}
{"level":"info","message":"SEQUELIZE_QUERY","query":"Executing (default): ALTER TABLE `dynamic_fee_rules` DROP `isPercentage`;","service":"cbc-sms","timestamp":"2026-07-08 16:01:53"}
{"level":"info","message":"SEQUELIZE_QUERY","query":"Executing (default): ALTER TABLE `dynamic_fee_rules` CHANGE `conditions` `conditions` JSON;","service":"cbc-sms","timestamp":"2026-07-08 16:01:53"}
{"level":"info","message":"SEQUELIZE_QUERY","query":"Executing (default): ALTER TABLE `dynamic_fee_rules` CHANGE `appliesTo` `appliesTo` JSON;","service":"cbc-sms","timestamp":"2026-07-08 16:01:54"}
{"level":"info","message":"SEQUELIZE_QUERY","query":"Executing (default): SELECT CONSTRAINT_NAME as constraint_name,CONSTRAINT_NAME as constraintName,CONSTRAINT_SCHEMA as constraintSchema,CONSTRAINT_SCHEMA as constraintCatalog,TABLE_NAME as tableName,TABLE_SCHEMA as tableSchema,TABLE_SCHEMA as tableCatalog,COLUMN_NAME as columnName,REFERENCED_TABLE_SCHEMA as referencedTableSchema,REFERENCED_TABLE_SCHEMA as referencedTableCatalog,REFERENCED_TABLE_NAME as referencedTableName,REFERENCED_COLUMN_NAME as referencedColumnName FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE WHERE (REFERENCED_TABLE_NAME = 'dynamic_fee_rules' AND REFERENCED_TABLE_SCHEMA = 'cbc_sms' AND REFERENCED_COLUMN_NAME = 'termId') OR (TABLE_NAME = 'dynamic_fee_rules' AND TABLE_SCHEMA = 'cbc_sms' AND COLUMN_NAME = 'termId' AND REFERENCED_TABLE_NAME IS NOT NULL)","service":"cbc-sms","timestamp":"2026-07-08 16:01:54"}
{"level":"info","message":"SEQUELIZE_QUERY","query":"Executing (default): ALTER TABLE `dynamic_fee_rules` DROP `termId`;","service":"cbc-sms","timestamp":"2026-07-08 16:01:54"}
{"level":"info","message":"SEQUELIZE_QUERY","query":"Executing (default): SELECT CONSTRAINT_NAME as constraint_name,CONSTRAINT_NAME as constraintName,CONSTRAINT_SCHEMA as constraintSchema,CONSTRAINT_SCHEMA as constraintCatalog,TABLE_NAME as tableName,TABLE_SCHEMA as tableSchema,TABLE_SCHEMA as tableCatalog,COLUMN_NAME as columnName,REFERENCED_TABLE_SCHEMA as referencedTableSchema,REFERENCED_TABLE_SCHEMA as referencedTableCatalog,REFERENCED_TABLE_NAME as referencedTableName,REFERENCED_COLUMN_NAME as referencedColumnName FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE WHERE (REFERENCED_TABLE_NAME = 'dynamic_fee_rules' AND REFERENCED_TABLE_SCHEMA = 'cbc_sms' AND REFERENCED_COLUMN_NAME = 'isActive') OR (TABLE_NAME = 'dynamic_fee_rules' AND TABLE_SCHEMA = 'cbc_sms' AND COLUMN_NAME = 'isActive' AND REFERENCED_TABLE_NAME IS NOT NULL)","service":"cbc-sms","timestamp":"2026-07-08 16:01:54"}
{"level":"info","message":"SEQUELIZE_QUERY","query":"Executing (default): ALTER TABLE `dynamic_fee_rules` DROP `isActive`;","service":"cbc-sms","timestamp":"2026-07-08 16:01:54"}
{"level":"info","message":"SEQUELIZE_QUERY","query":"Executing (default): ALTER TABLE `dynamic_fee_rules` CHANGE `priority` `priority` INTEGER DEFAULT 0;","service":"cbc-sms","timestamp":"2026-07-08 16:01:54"}
{"level":"info","message":"SEQUELIZE_QUERY","query":"Executing (default): ALTER TABLE `dynamic_fee_rules` CHANGE `schoolId` `schoolId` VARCHAR(191) NOT NULL;","service":"cbc-sms","timestamp":"2026-07-08 16:01:55"}
{"level":"info","message":"SEQUELIZE_QUERY","query":"Executing (default): ALTER TABLE `dynamic_fee_rules` CHANGE `createdAt` `createdAt` DATETIME NOT NULL;","service":"cbc-sms","timestamp":"2026-07-08 16:01:55"}
{"level":"info","message":"SEQUELIZE_QUERY","query":"Executing (default): ALTER TABLE `dynamic_fee_rules` CHANGE `updatedAt` `updatedAt` DATETIME NOT NULL;","service":"cbc-sms","timestamp":"2026-07-08 16:01:55"}
{"level":"info","message":"SEQUELIZE_QUERY","query":"Executing (default): SHOW INDEX FROM `dynamic_fee_rules`","service":"cbc-sms","timestamp":"2026-07-08 16:01:55"}
{"level":"info","message":"SEQUELIZE_QUERY","query":"Executing (default): ALTER TABLE `dynamic_fee_rules` ADD INDEX `fee_rule_school_term` (`schoolId`, `termId`)","service":"cbc-sms","timestamp":"2026-07-08 16:01:55"}
{"level":"info","message":"SEQUELIZE_QUERY","query":"Executing (default): SELECT 1+1 AS result","service":"cbc-sms","timestamp":"2026-07-08 16:02:34"}
{"level":"info","message":"SEQUELIZE_QUERY","query":"Executing (default): SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_TYPE = 'BASE TABLE' AND TABLE_NAME = 'FeeStructure' AND TABLE_SCHEMA = 'cbc_sms'","service":"cbc-sms","timestamp":"2026-07-08 16:02:34"}
{"level":"info","message":"✓ Sequelize database connection established successfully","service":"cbc-sms","timestamp":"2026-07-08 16:02:34"}
{"level":"info","message":"SEQUELIZE_QUERY","query":"Executing (default): SHOW FULL COLUMNS FROM `FeeStructure`;","service":"cbc-sms","timestamp":"2026-07-08 16:02:34"}
{"level":"info","message":"SEQUELIZE_QUERY","query":"Executing (default): SELECT CONSTRAINT_NAME as constraint_name,CONSTRAINT_NAME as constraintName,CONSTRAINT_SCHEMA as constraintSchema,CONSTRAINT_SCHEMA as constraintCatalog,TABLE_NAME as tableName,TABLE_SCHEMA as tableSchema,TABLE_SCHEMA as tableCatalog,COLUMN_NAME as columnName,REFERENCED_TABLE_SCHEMA as referencedTableSchema,REFERENCED_TABLE_SCHEMA as referencedTableCatalog,REFERENCED_TABLE_NAME as referencedTableName,REFERENCED_COLUMN_NAME as referencedColumnName FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE where TABLE_NAME = 'FeeStructure' AND CONSTRAINT_NAME!='PRIMARY' AND CONSTRAINT_SCHEMA='cbc_sms' AND REFERENCED_TABLE_NAME IS NOT NULL;","service":"cbc-sms","timestamp":"2026-07-08 16:02:34"}
{"level":"info","message":"SEQUELIZE_QUERY","query":"Executing (default): ALTER TABLE `FeeStructure` CHANGE `name` `name` VARCHAR(200) NOT NULL;","service":"cbc-sms","timestamp":"2026-07-08 16:02:34"}
{"level":"info","message":"SEQUELIZE_QUERY","query":"Executing (default): ALTER TABLE `FeeStructure` ADD FOREIGN KEY (`gradeLevelId`) REFERENCES `GradeLevel` (`id`) ON DELETE CASCADE ON UPDATE CASCADE;","service":"cbc-sms","timestamp":"2026-07-08 16:02:35"}
{"level":"info","message":"SEQUELIZE_QUERY","query":"Executing (default): ALTER TABLE `FeeStructure` CHANGE `boardingType` `boardingType` ENUM('DAY', 'BOARDING', 'DAY_AND_BOARDING', 'ALL') NOT NULL;","service":"cbc-sms","timestamp":"2026-07-08 16:02:36"}
{"level":"info","message":"SEQUELIZE_QUERY","query":"Executing (default): ALTER TABLE `FeeStructure` CHANGE `createdAt` `createdAt` DATETIME NOT NULL;","service":"cbc-sms","timestamp":"2026-07-08 16:02:36"}
{"level":"info","message":"SEQUELIZE_QUERY","query":"Executing (default): ALTER TABLE `FeeStructure` CHANGE `updatedAt` `updatedAt` DATETIME NOT NULL;","service":"cbc-sms","timestamp":"2026-07-08 16:02:37"}
{"level":"info","message":"SEQUELIZE_QUERY","query":"Executing (default): ALTER TABLE `FeeStructure` ADD FOREIGN KEY (`termId`) REFERENCES `Term` (`id`) ON DELETE CASCADE ON UPDATE CASCADE;","service":"cbc-sms","timestamp":"2026-07-08 16:02:38"}
{"level":"info","message":"SEQUELIZE_QUERY","query":"Executing (default): ALTER TABLE `FeeStructure` CHANGE `totalAmount` `totalAmount` DECIMAL(12,2) NOT NULL;","service":"cbc-sms","timestamp":"2026-07-08 16:02:39"}
{"level":"info","message":"SEQUELIZE_QUERY","query":"Executing (default): ALTER TABLE `FeeStructure` CHANGE `effectiveFrom` `effectiveFrom` DATETIME;","service":"cbc-sms","timestamp":"2026-07-08 16:02:39"}
{"level":"info","message":"SEQUELIZE_QUERY","query":"Executing (default): ALTER TABLE `FeeStructure` CHANGE `effectiveTo` `effectiveTo` DATETIME;","service":"cbc-sms","timestamp":"2026-07-08 16:02:40"}
{"level":"info","message":"SEQUELIZE_QUERY","query":"Executing (default): ALTER TABLE `FeeStructure` CHANGE `status` `status` ENUM('ACTIVE', 'DRAFT', 'ARCHIVED') NOT NULL DEFAULT 'ACTIVE';","service":"cbc-sms","timestamp":"2026-07-08 16:02:40"}
{"level":"info","message":"SEQUELIZE_QUERY","query":"Executing (default): SHOW INDEX FROM `FeeStructure`","service":"cbc-sms","timestamp":"2026-07-08 16:02:41"}
{"level":"info","message":"SEQUELIZE_QUERY","query":"Executing (default): SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_TYPE = 'BASE TABLE' AND TABLE_NAME = 'FeeStructureItem' AND TABLE_SCHEMA = 'cbc_sms'","service":"cbc-sms","timestamp":"2026-07-08 16:02:41"}
{"level":"info","message":"SEQUELIZE_QUERY","query":"Executing (default): SHOW FULL COLUMNS FROM `FeeStructureItem`;","service":"cbc-sms","timestamp":"2026-07-08 16:02:41"}
{"level":"info","message":"SEQUELIZE_QUERY","query":"Executing (default): SELECT CONSTRAINT_NAME as constraint_name,CONSTRAINT_NAME as constraintName,CONSTRAINT_SCHEMA as constraintSchema,CONSTRAINT_SCHEMA as constraintCatalog,TABLE_NAME as tableName,TABLE_SCHEMA as tableSchema,TABLE_SCHEMA as tableCatalog,COLUMN_NAME as columnName,REFERENCED_TABLE_SCHEMA as referencedTableSchema,REFERENCED_TABLE_SCHEMA as referencedTableCatalog,REFERENCED_TABLE_NAME as referencedTableName,REFERENCED_COLUMN_NAME as referencedColumnName FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE where TABLE_NAME = 'FeeStructureItem' AND CONSTRAINT_NAME!='PRIMARY' AND CONSTRAINT_SCHEMA='cbc_sms' AND REFERENCED_TABLE_NAME IS NOT NULL;","service":"cbc-sms","timestamp":"2026-07-08 16:02:41"}
{"level":"info","message":"SEQUELIZE_QUERY","query":"Executing (default): ALTER TABLE `FeeStructureItem` ADD FOREIGN KEY (`feeStructureId`) REFERENCES `FeeStructure` (`id`) ON DELETE CASCADE ON UPDATE CASCADE;","service":"cbc-sms","timestamp":"2026-07-08 16:02:41"}
{"level":"info","message":"SEQUELIZE_QUERY","query":"Executing (default): ALTER TABLE `FeeStructureItem` CHANGE `name` `name` VARCHAR(255) NOT NULL;","service":"cbc-sms","timestamp":"2026-07-08 16:02:41"}
{"level":"info","message":"SEQUELIZE_QUERY","query":"Executing (default): ALTER TABLE `FeeStructureItem` CHANGE `category` `category` ENUM('TUITION', 'MEALS', 'TRANSPORT', 'UNIFORMS', 'ACTIVITY', 'EXAM', 'LIBRARY', 'MEDICAL', 'DYNAMIC', 'OTHER') NOT NULL;","service":"cbc-sms","timestamp":"2026-07-08 16:02:41"}
{"level":"info","message":"SEQUELIZE_QUERY","query":"Executing (default): ALTER TABLE `FeeStructureItem` CHANGE `amount` `amount` DECIMAL(12,2) NOT NULL;","service":"cbc-sms","timestamp":"2026-07-08 16:02:41"}
{"level":"info","message":"SEQUELIZE_QUERY","query":"Executing (default): ALTER TABLE `FeeStructureItem` CHANGE `isRequired` `isRequired` TINYINT(1) NOT NULL DEFAULT true;","service":"cbc-sms","timestamp":"2026-07-08 16:02:41"}
{"level":"info","message":"SEQUELIZE_QUERY","query":"Executing (default): ALTER TABLE `FeeStructureItem` CHANGE `description` `description` TEXT;","service":"cbc-sms","timestamp":"2026-07-08 16:02:41"}
{"level":"info","message":"SEQUELIZE_QUERY","query":"Executing (default): ALTER TABLE `FeeStructureItem` CHANGE `isRefundable` `isRefundable` TINYINT(1) NOT NULL DEFAULT false;","service":"cbc-sms","timestamp":"2026-07-08 16:02:41"}
{"level":"info","message":"SEQUELIZE_QUERY","query":"Executing (default): ALTER TABLE `FeeStructureItem` CHANGE `isApprox` `isApprox` TINYINT(1) NOT NULL DEFAULT false;","service":"cbc-sms","timestamp":"2026-07-08 16:02:41"}
{"level":"info","message":"SEQUELIZE_QUERY","query":"Executing (default): SHOW INDEX FROM `FeeStructureItem`","service":"cbc-sms","timestamp":"2026-07-08 16:02:41"}
{"level":"info","message":"SEQUELIZE_QUERY","query":"Executing (default): SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_TYPE = 'BASE TABLE' AND TABLE_NAME = 'additional_fees' AND TABLE_SCHEMA = 'cbc_sms'","service":"cbc-sms","timestamp":"2026-07-08 16:02:41"}
{"level":"info","message":"SEQUELIZE_QUERY","query":"Executing (default): SHOW FULL COLUMNS FROM `additional_fees`;","service":"cbc-sms","timestamp":"2026-07-08 16:02:41"}
{"level":"info","message":"SEQUELIZE_QUERY","query":"Executing (default): SELECT CONSTRAINT_NAME as constraint_name,CONSTRAINT_NAME as constraintName,CONSTRAINT_SCHEMA as constraintSchema,CONSTRAINT_SCHEMA as constraintCatalog,TABLE_NAME as tableName,TABLE_SCHEMA as tableSchema,TABLE_SCHEMA as tableCatalog,COLUMN_NAME as columnName,REFERENCED_TABLE_SCHEMA as referencedTableSchema,REFERENCED_TABLE_SCHEMA as referencedTableCatalog,REFERENCED_TABLE_NAME as referencedTableName,REFERENCED_COLUMN_NAME as referencedColumnName FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE where TABLE_NAME = 'additional_fees' AND CONSTRAINT_NAME!='PRIMARY' AND CONSTRAINT_SCHEMA='cbc_sms' AND REFERENCED_TABLE_NAME IS NOT NULL;","service":"cbc-sms","timestamp":"2026-07-08 16:02:41"}
{"level":"info","message":"SEQUELIZE_QUERY","query":"Executing (default): ALTER TABLE `additional_fees` CHANGE `name` `name` VARCHAR(255) NOT NULL;","service":"cbc-sms","timestamp":"2026-07-08 16:02:41"}
{"level":"info","message":"SEQUELIZE_QUERY","query":"Executing (default): ALTER TABLE `additional_fees` CHANGE `description` `description` TEXT;","service":"cbc-sms","timestamp":"2026-07-08 16:02:41"}
{"level":"info","message":"SEQUELIZE_QUERY","query":"Executing (default): ALTER TABLE `additional_fees` CHANGE `amount` `amount` FLOAT NOT NULL;","service":"cbc-sms","timestamp":"2026-07-08 16:02:41"}
{"level":"info","message":"SEQUELIZE_QUERY","query":"Executing (default): ALTER TABLE `additional_fees` CHANGE `category` `category` ENUM('ONE_TIME', 'RECURRING') NOT NULL;","service":"cbc-sms","timestamp":"2026-07-08 16:02:41"}
{"level":"info","message":"SEQUELIZE_QUERY","query":"Executing (default): ALTER TABLE `additional_fees` CHANGE `schoolId` `schoolId` VARCHAR(191) NOT NULL;","service":"cbc-sms","timestamp":"2026-07-08 16:02:41"}
{"level":"info","message":"SEQUELIZE_QUERY","query":"Executing (default): ALTER TABLE `additional_fees` CHANGE `createdAt` `createdAt` DATETIME NOT NULL;","service":"cbc-sms","timestamp":"2026-07-08 16:02:41"}
{"level":"info","message":"SEQUELIZE_QUERY","query":"Executing (default): ALTER TABLE `additional_fees` CHANGE `updatedAt` `updatedAt` DATETIME NOT NULL;","service":"cbc-sms","timestamp":"2026-07-08 16:02:41"}
{"level":"info","message":"SEQUELIZE_QUERY","query":"Executing (default): ALTER TABLE `additional_fees` CHANGE `applicableGrades` `applicableGrades` JSON NOT NULL;","service":"cbc-sms","timestamp":"2026-07-08 16:02:41"}
{"level":"info","message":"SEQUELIZE_QUERY","query":"Executing (default): ALTER TABLE `additional_fees` CHANGE `vatPercent` `vatPercent` DECIMAL(5,2) NOT NULL DEFAULT 0;","service":"cbc-sms","timestamp":"2026-07-08 16:02:41"}
{"level":"info","message":"SEQUELIZE_QUERY","query":"Executing (default): ALTER TABLE `additional_fees` CHANGE `refundable` `refundable` TINYINT(1) NOT NULL DEFAULT false;","service":"cbc-sms","timestamp":"2026-07-08 16:02:41"}
{"level":"info","message":"SEQUELIZE_QUERY","query":"Executing (default): ALTER TABLE `additional_fees` CHANGE `refundCondition` `refundCondition` VARCHAR(255);","service":"cbc-sms","timestamp":"2026-07-08 16:02:41"}
{"level":"info","message":"SEQUELIZE_QUERY","query":"Executing (default): ALTER TABLE `additional_fees` CHANGE `status` `status` ENUM('ACTIVE', 'INACTIVE') NOT NULL DEFAULT 'ACTIVE';","service":"cbc-sms","timestamp":"2026-07-08 16:02:41"}
{"level":"info","message":"SEQUELIZE_QUERY","query":"Executing (default): SHOW INDEX FROM `additional_fees`","service":"cbc-sms","timestamp":"2026-07-08 16:02:41"}
{"level":"info","message":"SEQUELIZE_QUERY","query":"Executing (default): SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_TYPE = 'BASE TABLE' AND TABLE_NAME = 'dynamic_fee_rules' AND TABLE_SCHEMA = 'cbc_sms'","service":"cbc-sms","timestamp":"2026-07-08 16:02:41"}
{"level":"info","message":"SEQUELIZE_QUERY","query":"Executing (default): SHOW FULL COLUMNS FROM `dynamic_fee_rules`;","service":"cbc-sms","timestamp":"2026-07-08 16:02:41"}
{"level":"info","message":"SEQUELIZE_QUERY","query":"Executing (default): SELECT CONSTRAINT_NAME as constraint_name,CONSTRAINT_NAME as constraintName,CONSTRAINT_SCHEMA as constraintSchema,CONSTRAINT_SCHEMA as constraintCatalog,TABLE_NAME as tableName,TABLE_SCHEMA as tableSchema,TABLE_SCHEMA as tableCatalog,COLUMN_NAME as columnName,REFERENCED_TABLE_SCHEMA as referencedTableSchema,REFERENCED_TABLE_SCHEMA as referencedTableCatalog,REFERENCED_TABLE_NAME as referencedTableName,REFERENCED_COLUMN_NAME as referencedColumnName FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE where TABLE_NAME = 'dynamic_fee_rules' AND CONSTRAINT_NAME!='PRIMARY' AND CONSTRAINT_SCHEMA='cbc_sms' AND REFERENCED_TABLE_NAME IS NOT NULL;","service":"cbc-sms","timestamp":"2026-07-08 16:02:41"}
{"level":"info","message":"SEQUELIZE_QUERY","query":"Executing (default): ALTER TABLE `dynamic_fee_rules` CHANGE `name` `name` VARCHAR(255) NOT NULL;","service":"cbc-sms","timestamp":"2026-07-08 16:02:41"}
{"level":"info","message":"SEQUELIZE_QUERY","query":"Executing (default): ALTER TABLE `dynamic_fee_rules` CHANGE `description` `description` VARCHAR(500);","service":"cbc-sms","timestamp":"2026-07-08 16:02:41"}
{"level":"info","message":"SEQUELIZE_QUERY","query":"Executing (default): ALTER TABLE `dynamic_fee_rules` CHANGE `ruleType` `ruleType` ENUM('SIBLING_DISCOUNT', 'BOARDING_TYPE_OVERRIDE', 'GRADE_TIER_OVERRIDE', 'VAT_RULE', 'TERM_PRORATION') NOT NULL;","service":"cbc-sms","timestamp":"2026-07-08 16:02:41"}
{"level":"info","message":"SEQUELIZE_QUERY","query":"Executing (default): ALTER TABLE `dynamic_fee_rules` CHANGE `conditions` `conditions` JSON;","service":"cbc-sms","timestamp":"2026-07-08 16:02:41"}
{"level":"info","message":"SEQUELIZE_QUERY","query":"Executing (default): ALTER TABLE `dynamic_fee_rules` CHANGE `appliesTo` `appliesTo` JSON;","service":"cbc-sms","timestamp":"2026-07-08 16:02:41"}
{"level":"info","message":"SEQUELIZE_QUERY","query":"Executing (default): ALTER TABLE `dynamic_fee_rules` CHANGE `priority` `priority` INTEGER DEFAULT 0;","service":"cbc-sms","timestamp":"2026-07-08 16:02:41"}
{"level":"info","message":"SEQUELIZE_QUERY","query":"Executing (default): ALTER TABLE `dynamic_fee_rules` CHANGE `schoolId` `schoolId` VARCHAR(191) NOT NULL;","service":"cbc-sms","timestamp":"2026-07-08 16:02:41"}
{"level":"info","message":"SEQUELIZE_QUERY","query":"Executing (default): ALTER TABLE `dynamic_fee_rules` CHANGE `createdAt` `createdAt` DATETIME NOT NULL;","service":"cbc-sms","timestamp":"2026-07-08 16:02:41"}
{"level":"info","message":"SEQUELIZE_QUERY","query":"Executing (default): ALTER TABLE `dynamic_fee_rules` CHANGE `updatedAt` `updatedAt` DATETIME NOT NULL;","service":"cbc-sms","timestamp":"2026-07-08 16:02:41"}
{"level":"info","message":"SEQUELIZE_QUERY","query":"Executing (default): ALTER TABLE `dynamic_fee_rules` CHANGE `adjustmentType` `adjustmentType` ENUM('FLAT', 'PERCENTAGE', 'FIXED') NOT NULL DEFAULT 'FLAT';","service":"cbc-sms","timestamp":"2026-07-08 16:02:41"}
{"level":"info","message":"SEQUELIZE_QUERY","query":"Executing (default): ALTER TABLE `dynamic_fee_rules` CHANGE `adjustmentValue` `adjustmentValue` DECIMAL(10,2) NOT NULL;","service":"cbc-sms","timestamp":"2026-07-08 16:02:41"}
{"level":"info","message":"SEQUELIZE_QUERY","query":"Executing (default): ALTER TABLE `dynamic_fee_rules` CHANGE `status` `status` ENUM('ACTIVE', 'INACTIVE') NOT NULL DEFAULT 'ACTIVE';","service":"cbc-sms","timestamp":"2026-07-08 16:02:41"}
{"level":"info","message":"SEQUELIZE_QUERY","query":"Executing (default): SHOW INDEX FROM `dynamic_fee_rules`","service":"cbc-sms","timestamp":"2026-07-08 16:02:41"}
{"level":"info","message":"SEQUELIZE_QUERY","query":"Executing (default): ALTER TABLE `dynamic_fee_rules` ADD INDEX `fee_rule_school` (`schoolId`)","service":"cbc-sms","timestamp":"2026-07-08 16:02:41"}
{"level":"info","message":"SEQUELIZE_QUERY","query":"Executing (default): ALTER TABLE `dynamic_fee_rules` ADD INDEX `fee_rule_status_priority` (`status`, `priority`)","service":"cbc-sms","timestamp":"2026-07-08 16:02:42"}
{"level":"info","message":"SEQUELIZE_QUERY","query":"Executing (default): SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_TYPE = 'BASE TABLE' AND TABLE_NAME = 'fee_invoices' AND TABLE_SCHEMA = 'cbc_sms'","service":"cbc-sms","timestamp":"2026-07-08 16:02:42"}
{"level":"info","message":"SEQUELIZE_QUERY","query":"Executing (default): SHOW FULL COLUMNS FROM `fee_invoices`;","service":"cbc-sms","timestamp":"2026-07-08 16:02:42"}
{"level":"info","message":"SEQUELIZE_QUERY","query":"Executing (default): SELECT CONSTRAINT_NAME as constraint_name,CONSTRAINT_NAME as constraintName,CONSTRAINT_SCHEMA as constraintSchema,CONSTRAINT_SCHEMA as constraintCatalog,TABLE_NAME as tableName,TABLE_SCHEMA as tableSchema,TABLE_SCHEMA as tableCatalog,COLUMN_NAME as columnName,REFERENCED_TABLE_SCHEMA as referencedTableSchema,REFERENCED_TABLE_SCHEMA as referencedTableCatalog,REFERENCED_TABLE_NAME as referencedTableName,REFERENCED_COLUMN_NAME as referencedColumnName FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE where TABLE_NAME = 'fee_invoices' AND CONSTRAINT_NAME!='PRIMARY' AND CONSTRAINT_SCHEMA='cbc_sms' AND REFERENCED_TABLE_NAME IS NOT NULL;","service":"cbc-sms","timestamp":"2026-07-08 16:02:42"}
{"level":"info","message":"SEQUELIZE_QUERY","query":"Executing (default): ALTER TABLE `fee_invoices` CHANGE `invoiceNo` `invoiceNo` VARCHAR(100) NOT NULL UNIQUE;","service":"cbc-sms","timestamp":"2026-07-08 16:02:42"}
{"level":"info","message":"SEQUELIZE_QUERY","query":"Executing (default): ALTER TABLE `fee_invoices` ADD FOREIGN KEY (`studentId`) REFERENCES `Student` (`id`) ON DELETE CASCADE ON UPDATE CASCADE;","service":"cbc-sms","timestamp":"2026-07-08 16:02:42"}
{"level":"info","message":"SEQUELIZE_QUERY","query":"Executing (default): ALTER TABLE `fee_invoices` ADD FOREIGN KEY (`feeStructureId`) REFERENCES `FeeStructure` (`id`) ON DELETE SET NULL ON UPDATE CASCADE;","service":"cbc-sms","timestamp":"2026-07-08 16:02:43"}
{"level":"info","message":"SEQUELIZE_QUERY","query":"Executing (default): ALTER TABLE `fee_invoices` ADD FOREIGN KEY (`termId`) REFERENCES `Term` (`id`) ON DELETE CASCADE ON UPDATE CASCADE;","service":"cbc-sms","timestamp":"2026-07-08 16:02:43"}
{"level":"info","message":"SEQUELIZE_QUERY","query":"Executing (default): ALTER TABLE `fee_invoices` CHANGE `academicYearId` `academicYearId` VARCHAR(191) NOT NULL;","service":"cbc-sms","timestamp":"2026-07-08 16:02:43"}
{"level":"info","message":"SEQUELIZE_QUERY","query":"Executing (default): ALTER TABLE `fee_invoices` CHANGE `totalAmount` `totalAmount` DECIMAL(12,2) NOT NULL;","service":"cbc-sms","timestamp":"2026-07-08 16:02:43"}
{"level":"info","message":"SEQUELIZE_QUERY","query":"Executing (default): ALTER TABLE `fee_invoices` CHANGE `paidAmount` `paidAmount` DECIMAL(12,2) NOT NULL DEFAULT 0;","service":"cbc-sms","timestamp":"2026-07-08 16:02:43"}
{"level":"info","message":"SEQUELIZE_QUERY","query":"Executing (default): ALTER TABLE `fee_invoices` CHANGE `balance` `balance` DECIMAL(12,2) NOT NULL;","service":"cbc-sms","timestamp":"2026-07-08 16:02:44"}
{"level":"info","message":"SEQUELIZE_QUERY","query":"Executing (default): ALTER TABLE `fee_invoices` CHANGE `dueDate` `dueDate` DATETIME NOT NULL;","service":"cbc-sms","timestamp":"2026-07-08 16:02:44"}
{"level":"info","message":"SEQUELIZE_QUERY","query":"Executing (default): ALTER TABLE `fee_invoices` CHANGE `invoiceDate` `invoiceDate` DATETIME NOT NULL;","service":"cbc-sms","timestamp":"2026-07-08 16:02:44"}
{"level":"info","message":"SEQUELIZE_QUERY","query":"Executing (default): ALTER TABLE `fee_invoices` CHANGE `status` `status` ENUM('DRAFT', 'UNPAID', 'PARTIAL', 'PAID', 'OVERDUE', 'WAIVED', 'VOID') NOT NULL DEFAULT 'UNPAID';","service":"cbc-sms","timestamp":"2026-07-08 16:02:44"}
{"level":"info","message":"SEQUELIZE_QUERY","query":"Executing (default): ALTER TABLE `fee_invoices` CHANGE `notes` `notes` TEXT;","service":"cbc-sms","timestamp":"2026-07-08 16:02:44"}
{"level":"info","message":"SEQUELIZE_QUERY","query":"Executing (default): ALTER TABLE `fee_invoices` CHANGE `generatedById` `generatedById` VARCHAR(191);","service":"cbc-sms","timestamp":"2026-07-08 16:02:44"}
{"level":"info","message":"SEQUELIZE_QUERY","query":"Executing (default): ALTER TABLE `fee_invoices` CHANGE `schoolId` `schoolId` VARCHAR(191) NOT NULL;","service":"cbc-sms","timestamp":"2026-07-08 16:02:44"}
{"level":"info","message":"SEQUELIZE_QUERY","query":"Executing (default): ALTER TABLE `fee_invoices` CHANGE `createdAt` `createdAt` DATETIME NOT NULL;","service":"cbc-sms","timestamp":"2026-07-08 16:02:44"}
{"level":"info","message":"SEQUELIZE_QUERY","query":"Executing (default): ALTER TABLE `fee_invoices` CHANGE `updatedAt` `updatedAt` DATETIME NOT NULL;","service":"cbc-sms","timestamp":"2026-07-08 16:02:45"}
{"level":"info","message":"SEQUELIZE_QUERY","query":"Executing (default): SHOW INDEX FROM `fee_invoices`","service":"cbc-sms","timestamp":"2026-07-08 16:02:45"}
{"level":"info","message":"SEQUELIZE_QUERY","query":"Executing (default): SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_TYPE = 'BASE TABLE' AND TABLE_NAME = 'TimetableSlot' AND TABLE_SCHEMA = 'cbc_sms'","service":"cbc-sms","timestamp":"2026-07-08 16:02:45"}
{"level":"info","message":"SEQUELIZE_QUERY","query":"Executing (default): SHOW FULL COLUMNS FROM `TimetableSlot`;","service":"cbc-sms","timestamp":"2026-07-08 16:02:45"}
{"level":"info","message":"SEQUELIZE_QUERY","query":"Executing (default): SELECT CONSTRAINT_NAME as constraint_name,CONSTRAINT_NAME as constraintName,CONSTRAINT_SCHEMA as constraintSchema,CONSTRAINT_SCHEMA as constraintCatalog,TABLE_NAME as tableName,TABLE_SCHEMA as tableSchema,TABLE_SCHEMA as tableCatalog,COLUMN_NAME as columnName,REFERENCED_TABLE_SCHEMA as referencedTableSchema,REFERENCED_TABLE_SCHEMA as referencedTableCatalog,REFERENCED_TABLE_NAME as referencedTableName,REFERENCED_COLUMN_NAME as referencedColumnName FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE where TABLE_NAME = 'TimetableSlot' AND CONSTRAINT_NAME!='PRIMARY' AND CONSTRAINT_SCHEMA='cbc_sms' AND REFERENCED_TABLE_NAME IS NOT NULL;","service":"cbc-sms","timestamp":"2026-07-08 16:02:45"}
{"level":"info","message":"SEQUELIZE_QUERY","query":"Executing (default): ALTER TABLE `TimetableSlot` CHANGE `dayOfWeek` `dayOfWeek` INTEGER;","service":"cbc-sms","timestamp":"2026-07-08 16:02:45"}
{"level":"info","message":"SEQUELIZE_QUERY","query":"Executing (default): ALTER TABLE `TimetableSlot` CHANGE `periodNo` `periodNo` INTEGER;","service":"cbc-sms","timestamp":"2026-07-08 16:02:45"}
{"level":"info","message":"SEQUELIZE_QUERY","query":"Executing (default): ALTER TABLE `TimetableSlot` CHANGE `startTime` `startTime` VARCHAR(20) NOT NULL;","service":"cbc-sms","timestamp":"2026-07-08 16:02:45"}
{"level":"info","message":"SEQUELIZE_QUERY","query":"Executing (default): ALTER TABLE `TimetableSlot` CHANGE `endTime` `endTime` VARCHAR(20) NOT NULL;","service":"cbc-sms","timestamp":"2026-07-08 16:02:45"}
{"level":"info","message":"SEQUELIZE_QUERY","query":"Executing (default): ALTER TABLE `TimetableSlot` CHANGE `isBreak` `isBreak` TINYINT(1) NOT NULL DEFAULT false;","service":"cbc-sms","timestamp":"2026-07-08 16:02:45"}
{"level":"info","message":"SEQUELIZE_QUERY","query":"Executing (default): ALTER TABLE `TimetableSlot` CHANGE `label` `label` VARCHAR(100);","service":"cbc-sms","timestamp":"2026-07-08 16:02:45"}
{"level":"info","message":"SEQUELIZE_QUERY","query":"Executing (default): ALTER TABLE `TimetableSlot` CHANGE `createdAt` `createdAt` DATETIME NOT NULL;","service":"cbc-sms","timestamp":"2026-07-08 16:02:45"}
{"level":"info","message":"SEQUELIZE_QUERY","query":"Executing (default): ALTER TABLE `TimetableSlot` CHANGE `updatedAt` `updatedAt` DATETIME NOT NULL;","service":"cbc-sms","timestamp":"2026-07-08 16:02:46"}
{"level":"info","message":"SEQUELIZE_QUERY","query":"Executing (default): ALTER TABLE `TimetableSlot` ADD FOREIGN KEY (`schoolId`) REFERENCES `School` (`id`) ON DELETE CASCADE ON UPDATE CASCADE;","service":"cbc-sms","timestamp":"2026-07-08 16:02:46"}
{"level":"info","message":"SEQUELIZE_QUERY","query":"Executing (default): ALTER TABLE `TimetableSlot` CHANGE `type` `type` ENUM('lesson', 'break', 'lunch', 'assembly', 'sport', 'other') NOT NULL DEFAULT 'lesson';","service":"cbc-sms","timestamp":"2026-07-08 16:02:46"}
{"level":"info","message":"SEQUELIZE_QUERY","query":"Executing (default): ALTER TABLE `TimetableSlot` CHANGE `days` `days` JSON;","service":"cbc-sms","timestamp":"2026-07-08 16:02:46"}
{"level":"info","message":"SEQUELIZE_QUERY","query":"Executing (default): ALTER TABLE `TimetableSlot` CHANGE `presetType` `presetType` ENUM('7_PERIOD', '8_PERIOD', 'CUSTOM') DEFAULT NULL;","service":"cbc-sms","timestamp":"2026-07-08 16:02:47"}
{"level":"info","message":"SEQUELIZE_QUERY","query":"Executing (default): ALTER TABLE `TimetableSlot` CHANGE `sortOrder` `sortOrder` INTEGER NOT NULL DEFAULT 0;","service":"cbc-sms","timestamp":"2026-07-08 16:02:47"}
{"level":"info","message":"SEQUELIZE_QUERY","query":"Executing (default): SHOW INDEX FROM `TimetableSlot`","service":"cbc-sms","timestamp":"2026-07-08 16:02:47"}
{"level":"info","message":"SEQUELIZE_QUERY","query":"Executing (default): SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_TYPE = 'BASE TABLE' AND TABLE_NAME = 'payments' AND TABLE_SCHEMA = 'cbc_sms'","service":"cbc-sms","timestamp":"2026-07-08 16:02:47"}
{"level":"info","message":"SEQUELIZE_QUERY","query":"Executing (default): SHOW FULL COLUMNS FROM `payments`;","service":"cbc-sms","timestamp":"2026-07-08 16:02:47"}
{"level":"info","message":"SEQUELIZE_QUERY","query":"Executing (default): SELECT CONSTRAINT_NAME as constraint_name,CONSTRAINT_NAME as constraintName,CONSTRAINT_SCHEMA as constraintSchema,CONSTRAINT_SCHEMA as constraintCatalog,TABLE_NAME as tableName,TABLE_SCHEMA as tableSchema,TABLE_SCHEMA as tableCatalog,COLUMN_NAME as columnName,REFERENCED_TABLE_SCHEMA as referencedTableSchema,REFERENCED_TABLE_SCHEMA as referencedTableCatalog,REFERENCED_TABLE_NAME as referencedTableName,REFERENCED_COLUMN_NAME as referencedColumnName FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE where TABLE_NAME = 'payments' AND CONSTRAINT_NAME!='PRIMARY' AND CONSTRAINT_SCHEMA='cbc_sms' AND REFERENCED_TABLE_NAME IS NOT NULL;","service":"cbc-sms","timestamp":"2026-07-08 16:02:47"}
{"level":"info","message":"SEQUELIZE_QUERY","query":"Executing (default): ALTER TABLE `payments` CHANGE `receiptNo` `receiptNo` VARCHAR(100) NOT NULL UNIQUE;","service":"cbc-sms","timestamp":"2026-07-08 16:02:47"}
{"level":"info","message":"SEQUELIZE_QUERY","query":"Executing (default): SELECT CONSTRAINT_CATALOG AS constraintCatalog, CONSTRAINT_NAME AS constraintName, CONSTRAINT_SCHEMA AS constraintSchema, CONSTRAINT_TYPE AS constraintType, TABLE_NAME AS tableName, TABLE_SCHEMA AS tableSchema from INFORMATION_SCHEMA.TABLE_CONSTRAINTS WHERE table_name='payments' AND constraint_name = 'payments_ibfk_82' AND TABLE_SCHEMA = 'cbc_sms';","service":"cbc-sms","timestamp":"2026-07-08 16:02:47"}
{"level":"info","message":"SEQUELIZE_QUERY","query":"Executing (default): ALTER TABLE `payments` DROP FOREIGN KEY `payments_ibfk_82`;","service":"cbc-sms","timestamp":"2026-07-08 16:02:47"}
{"level":"info","message":"SEQUELIZE_QUERY","query":"Executing (default): SELECT CONSTRAINT_CATALOG AS constraintCatalog, CONSTRAINT_NAME AS constraintName, CONSTRAINT_SCHEMA AS constraintSchema, CONSTRAINT_TYPE AS constraintType, TABLE_NAME AS tableName, TABLE_SCHEMA AS tableSchema from INFORMATION_SCHEMA.TABLE_CONSTRAINTS WHERE table_name='payments' AND constraint_name = 'payments_ibfk_85' AND TABLE_SCHEMA = 'cbc_sms';","service":"cbc-sms","timestamp":"2026-07-08 16:02:48"}
{"level":"info","message":"SEQUELIZE_QUERY","query":"Executing (default): ALTER TABLE `payments` DROP FOREIGN KEY `payments_ibfk_85`;","service":"cbc-sms","timestamp":"2026-07-08 16:02:48"}
{"level":"info","message":"SEQUELIZE_QUERY","query":"Executing (default): ALTER TABLE `payments` ADD FOREIGN KEY (`invoiceId`) REFERENCES `fee_invoices` (`id`) ON DELETE CASCADE ON UPDATE CASCADE;","service":"cbc-sms","timestamp":"2026-07-08 16:02:48"}
{"level":"info","message":"SEQUELIZE_QUERY","query":"Executing (default): ALTER TABLE `payments` ADD FOREIGN KEY (`studentId`) REFERENCES `Student` (`id`) ON DELETE CASCADE ON UPDATE CASCADE;","service":"cbc-sms","timestamp":"2026-07-08 16:02:48"}
{"level":"info","message":"SEQUELIZE_QUERY","query":"Executing (default): ALTER TABLE `payments` CHANGE `amount` `amount` DECIMAL(12,2) NOT NULL;","service":"cbc-sms","timestamp":"2026-07-08 16:02:49"}
{"level":"info","message":"SEQUELIZE_QUERY","query":"Executing (default): ALTER TABLE `payments` CHANGE `method` `method` ENUM('MPESA', 'CASH', 'BANK_TRANSFER', 'CHEQUE', 'ONLINE', 'BURSARY', 'SCHOLARSHIP', 'REVERSAL') NOT NULL;","service":"cbc-sms","timestamp":"2026-07-08 16:02:49"}
{"level":"info","message":"SEQUELIZE_QUERY","query":"Executing (default): ALTER TABLE `payments` CHANGE `reference` `reference` VARCHAR(255);","service":"cbc-sms","timestamp":"2026-07-08 16:02:49"}
{"level":"info","message":"SEQUELIZE_QUERY","query":"Executing (default): ALTER TABLE `payments` CHANGE `mpesaCode` `mpesaCode` VARCHAR(100);","service":"cbc-sms","timestamp":"2026-07-08 16:02:49"}
{"level":"info","message":"SEQUELIZE_QUERY","query":"Executing (default): ALTER TABLE `payments` CHANGE `notes` `notes` TEXT;","service":"cbc-sms","timestamp":"2026-07-08 16:02:50"}
{"level":"info","message":"SEQUELIZE_QUERY","query":"Executing (default): ALTER TABLE `payments` CHANGE `isReversed` `isReversed` TINYINT(1) NOT NULL DEFAULT false;","service":"cbc-sms","timestamp":"2026-07-08 16:02:50"}
{"level":"info","message":"SEQUELIZE_QUERY","query":"Executing (default): ALTER TABLE `payments` CHANGE `reversedAt` `reversedAt` DATETIME;","service":"cbc-sms","timestamp":"2026-07-08 16:02:50"}
{"level":"info","message":"SEQUELIZE_QUERY","query":"Executing (default): ALTER TABLE `payments` CHANGE `reversalReason` `reversalReason` TEXT;","service":"cbc-sms","timestamp":"2026-07-08 16:02:50"}
{"level":"info","message":"SEQUELIZE_QUERY","query":"Executing (default): ALTER TABLE `payments` CHANGE `paidAt` `paidAt` DATETIME NOT NULL;","service":"cbc-sms","timestamp":"2026-07-08 16:02:50"}
{"level":"info","message":"SEQUELIZE_QUERY","query":"Executing (default): ALTER TABLE `payments` CHANGE `recordedById` `recordedById` VARCHAR(191) NOT NULL;","service":"cbc-sms","timestamp":"2026-07-08 16:02:50"}
{"level":"info","message":"SEQUELIZE_QUERY","query":"Executing (default): ALTER TABLE `payments` CHANGE `schoolId` `schoolId` VARCHAR(191) NOT NULL;","service":"cbc-sms","timestamp":"2026-07-08 16:02:50"}
{"level":"info","message":"SEQUELIZE_QUERY","query":"Executing (default): ALTER TABLE `payments` ADD FOREIGN KEY (`mpesaTransactionId`) REFERENCES `MpesaTransaction` (`id`);","service":"cbc-sms","timestamp":"2026-07-08 16:02:50"}
{"level":"info","message":"SEQUELIZE_QUERY","query":"Executing (default): ALTER TABLE `payments` CHANGE `createdAt` `createdAt` DATETIME NOT NULL;","service":"cbc-sms","timestamp":"2026-07-08 16:02:50"}
{"level":"info","message":"SEQUELIZE_QUERY","query":"Executing (default): ALTER TABLE `payments` CHANGE `updatedAt` `updatedAt` DATETIME NOT NULL;","service":"cbc-sms","timestamp":"2026-07-08 16:02:51"}
{"level":"info","message":"SEQUELIZE_QUERY","query":"Executing (default): SELECT CONSTRAINT_NAME as constraint_name,CONSTRAINT_NAME as constraintName,CONSTRAINT_SCHEMA as constraintSchema,CONSTRAINT_SCHEMA as constraintCatalog,TABLE_NAME as tableName,TABLE_SCHEMA as tableSchema,TABLE_SCHEMA as tableCatalog,COLUMN_NAME as columnName,REFERENCED_TABLE_SCHEMA as referencedTableSchema,REFERENCED_TABLE_SCHEMA as referencedTableCatalog,REFERENCED_TABLE_NAME as referencedTableName,REFERENCED_COLUMN_NAME as referencedColumnName FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE WHERE (REFERENCED_TABLE_NAME = 'payments' AND REFERENCED_TABLE_SCHEMA = 'cbc_sms' AND REFERENCED_COLUMN_NAME = 'feeInvoiceId') OR (TABLE_NAME = 'payments' AND TABLE_SCHEMA = 'cbc_sms' AND COLUMN_NAME = 'feeInvoiceId' AND REFERENCED_TABLE_NAME IS NOT NULL)","service":"cbc-sms","timestamp":"2026-07-08 16:02:51"}
{"level":"info","message":"SEQUELIZE_QUERY","query":"Executing (default): ALTER TABLE `payments` DROP `feeInvoiceId`;","service":"cbc-sms","timestamp":"2026-07-08 16:02:51"}
{"level":"info","message":"SEQUELIZE_QUERY","query":"Executing (default): SHOW INDEX FROM `payments`","service":"cbc-sms","timestamp":"2026-07-08 16:02:52"}
{"level":"info","message":"SEQUELIZE_QUERY","query":"Executing (default): SELECT 1+1 AS result","service":"cbc-sms","timestamp":"2026-07-08 16:29:51"}
{"level":"info","message":"SEQUELIZE_QUERY","query":"Executing (default): SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_TYPE = 'BASE TABLE' AND TABLE_NAME = 'FeeStructure' AND TABLE_SCHEMA = 'cbc_sms'","service":"cbc-sms","timestamp":"2026-07-08 16:29:51"}
{"level":"info","message":"✓ Sequelize database connection established successfully","service":"cbc-sms","timestamp":"2026-07-08 16:29:51"}
{"level":"info","message":"SEQUELIZE_QUERY","query":"Executing (default): SHOW FULL COLUMNS FROM `FeeStructure`;","service":"cbc-sms","timestamp":"2026-07-08 16:29:51"}
{"level":"info","message":"SEQUELIZE_QUERY","query":"Executing (default): SELECT CONSTRAINT_NAME as constraint_name,CONSTRAINT_NAME as constraintName,CONSTRAINT_SCHEMA as constraintSchema,CONSTRAINT_SCHEMA as constraintCatalog,TABLE_NAME as tableName,TABLE_SCHEMA as tableSchema,TABLE_SCHEMA as tableCatalog,COLUMN_NAME as columnName,REFERENCED_TABLE_SCHEMA as referencedTableSchema,REFERENCED_TABLE_SCHEMA as referencedTableCatalog,REFERENCED_TABLE_NAME as referencedTableName,REFERENCED_COLUMN_NAME as referencedColumnName FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE where TABLE_NAME = 'FeeStructure' AND CONSTRAINT_NAME!='PRIMARY' AND CONSTRAINT_SCHEMA='cbc_sms' AND REFERENCED_TABLE_NAME IS NOT NULL;","service":"cbc-sms","timestamp":"2026-07-08 16:29:51"}
{"level":"info","message":"SEQUELIZE_QUERY","query":"Executing (default): ALTER TABLE `FeeStructure` ADD `category` ENUM('PRE_PRIMARY', 'LOWER_PRIMARY', 'UPPER_PRIMARY', 'JUNIOR_SECONDARY', 'SENIOR_SECONDARY', 'CUSTOM') NOT NULL DEFAULT 'CUSTOM';","service":"cbc-sms","timestamp":"2026-07-08 16:29:51"}
{"level":"info","message":"SEQUELIZE_QUERY","query":"Executing (default): ALTER TABLE `FeeStructure` ADD `description` TEXT;","service":"cbc-sms","timestamp":"2026-07-08 16:29:52"}
{"level":"info","message":"SEQUELIZE_QUERY","query":"Executing (default): ALTER TABLE `FeeStructure` CHANGE `name` `name` VARCHAR(200) NOT NULL;","service":"cbc-sms","timestamp":"2026-07-08 16:29:53"}
{"level":"info","message":"SEQUELIZE_QUERY","query":"Executing (default): ALTER TABLE `FeeStructure` ADD FOREIGN KEY (`gradeLevelId`) REFERENCES `GradeLevel` (`id`) ON DELETE SET NULL ON UPDATE CASCADE;","service":"cbc-sms","timestamp":"2026-07-08 16:29:53"}
{"level":"info","message":"SEQUELIZE_QUERY","query":"Executing (default): SELECT 1+1 AS result","service":"cbc-sms","timestamp":"2026-07-08 16:31:54"}
{"level":"info","message":"SEQUELIZE_QUERY","query":"Executing (default): ALTER TABLE `FeeStructure`\n          DROP FOREIGN KEY `feestructure_ibfk_85`;","service":"cbc-sms","timestamp":"2026-07-08 16:31:54"}
{"level":"info","message":"✓ Sequelize database connection established successfully","service":"cbc-sms","timestamp":"2026-07-08 16:31:54"}
{"level":"info","message":"SEQUELIZE_QUERY","query":"Executing (default): SELECT CONSTRAINT_NAME\n        FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE\n        WHERE TABLE_NAME = 'FeeStructure'\n          AND TABLE_SCHEMA = DATABASE()\n          AND COLUMN_NAME = 'gradeLevelId'\n          AND REFERENCED_TABLE_NAME IS NOT NULL;","service":"cbc-sms","timestamp":"2026-07-08 16:31:54"}
{"level":"info","message":"SEQUELIZE_QUERY","query":"Executing (default): ALTER TABLE `FeeStructure` DROP FOREIGN KEY `FeeStructure_gradeLevelId_fkey`;","service":"cbc-sms","timestamp":"2026-07-08 16:31:54"}
{"level":"info","message":"SEQUELIZE_QUERY","query":"Executing (default): ALTER TABLE `FeeStructure`\n        MODIFY `gradeLevelId` VARCHAR(191) NULL;","service":"cbc-sms","timestamp":"2026-07-08 16:31:55"}
{"level":"info","message":"SEQUELIZE_QUERY","query":"Executing (default): ALTER TABLE `FeeStructure`\n        ADD CONSTRAINT `feestructure_gradelevel_fk`\n        FOREIGN KEY (`gradeLevelId`) REFERENCES `GradeLevel` (`id`)\n        ON DELETE SET NULL ON UPDATE CASCADE;","service":"cbc-sms","timestamp":"2026-07-08 16:31:57"}
{"level":"info","message":"SEQUELIZE_QUERY","query":"Executing (default): SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS\n      WHERE TABLE_NAME = 'FeeStructure' AND TABLE_SCHEMA = DATABASE()\n        AND COLUMN_NAME IN ('category', 'description');","service":"cbc-sms","timestamp":"2026-07-08 16:31:58"}
{"level":"info","message":"SEQUELIZE_QUERY","query":"Executing (default): ALTER TABLE `FeeStructure` ADD INDEX `fee_structure_category` (`category`);","service":"cbc-sms","timestamp":"2026-07-08 16:31:58"}
{"level":"info","message":"SEQUELIZE_QUERY","query":"Executing (default): ALTER TABLE `FeeStructure` ADD INDEX `fee_structure_school` (`schoolId`);","service":"cbc-sms","timestamp":"2026-07-08 16:32:00"}
{"level":"info","message":"SEQUELIZE_QUERY","query":"Executing (default): SELECT 1+1 AS result","service":"cbc-sms","timestamp":"2026-07-08 16:50:08"}
{"level":"info","message":"SEQUELIZE_QUERY","query":"Executing (default): SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS\n      WHERE TABLE_NAME = 'FeeStructure' AND TABLE_SCHEMA = DATABASE();","service":"cbc-sms","timestamp":"2026-07-08 16:50:08"}
{"level":"info","message":"✓ Sequelize database connection established successfully","service":"cbc-sms","timestamp":"2026-07-08 16:50:08"}
{"level":"info","message":"SEQUELIZE_QUERY","query":"Executing (default): ALTER TABLE `FeeStructure`\n          ADD COLUMN `schoolId` VARCHAR(191) NOT NULL DEFAULT ''\n          AFTER `effectiveTo`;","service":"cbc-sms","timestamp":"2026-07-08 16:50:08"}
{"level":"info","message":"SEQUELIZE_QUERY","query":"Executing (default): UPDATE `FeeStructure` fs\n        INNER JOIN `GradeLevel` gl ON fs.gradeLevelId = gl.id\n        SET fs.schoolId = gl.schoolId\n        WHERE fs.gradeLevelId IS NOT NULL;","service":"cbc-sms","timestamp":"2026-07-08 16:50:08"}
{"level":"info","message":"SEQUELIZE_QUERY","query":"Executing (default): ALTER TABLE `FeeStructure`\n            ADD CONSTRAINT `feestructure_school_fk`\n            FOREIGN KEY (`schoolId`) REFERENCES `School` (`id`)\n            ON DELETE CASCADE ON UPDATE CASCADE;","service":"cbc-sms","timestamp":"2026-07-08 16:50:08"}
{"level":"info","message":"SEQUELIZE_QUERY","query":"Executing (default): ALTER TABLE `FeeStructure` ADD INDEX `fee_structure_school` (`schoolId`);","service":"cbc-sms","timestamp":"2026-07-08 16:50:09"}
{"level":"info","message":"SEQUELIZE_QUERY","query":"Executing (default): SELECT 1+1 AS result","service":"cbc-sms","timestamp":"2026-07-13 21:35:03"}
{"level":"info","message":"SEQUELIZE_QUERY","query":"Executing (default): ALTER TABLE meal_plans ADD COLUMN code VARCHAR(50) NULL;","service":"cbc-sms","timestamp":"2026-07-13 21:35:03"}
{"level":"info","message":"✓ Sequelize database connection established successfully","service":"cbc-sms","timestamp":"2026-07-13 21:35:03"}
{"level":"info","message":"SEQUELIZE_QUERY","query":"Executing (default): ALTER TABLE meal_plans ADD COLUMN dailyRate DECIMAL(10,2) NULL;","service":"cbc-sms","timestamp":"2026-07-13 21:35:04"}
{"level":"info","message":"SEQUELIZE_QUERY","query":"Executing (default): ALTER TABLE meal_plans CHANGE COLUMN amount termFee DECIMAL(10,2) NOT NULL;","service":"cbc-sms","timestamp":"2026-07-13 21:35:04"}
